如何在matlab中计算梯度?

How to calculate Gradient in matlab?

我正在研究行人脚步检测(加速度)。我想根据过滤后的信号计算统计特征。我已经计算了一些,现在我想计算 gradient。 我的数据是 1x37205 double。我使用 for 循环计算特征,移动 window size=2samples 和 50% overlap of previous window。下面我附上了我试图计算梯度的代码。 我不确定这是否是正确的计算方法?此外,我也无法理解使用渐变的目的是什么,它如何对步检测有用以及如何使用渐变?有人可以指导我或在 matlab 中提供任何代码帮助吗?

%%Here M is mean and V is variance i already calculated from filtered data
G = zeros(length(window:length(M)), 2);
for i = window:length(M)
temp = gradient(M(i+1-window:i),V(i+1-window:i));
G(i, 1) = temp(2, 1); % "c1"
G(i, 2) = temp(2, 1); % "c2"
end

Matlab 的最佳功能之一是它的文档。如果您不熟悉如何获取具体的功能文档,请在命令行中输入以下内容:

doc functionName

或者,对于在命令行中显示的 'brief' 文档,您可以输入:

help functionName

另请参阅文档 link here

你的问题措辞不当,我总结一下我的理解再作相应的回答:

  • 你有一个步进检测数据(1*37205) double,我们称它为stepSignal
  • stepSignal 是位置数据
  • 您希望 window 是 2 步,重叠 50%。这是梯度函数的默认行为。

您不需要“for”循环来实现您的目标。根据文档,“梯度”可以接受一个输入。

请参阅下面的代码,如果需要,请对原始问题进行说明。

%% Assume that stepSignal is already imported into the workspace
velocity = gradient(stepSignal);

最后一点,当你给“渐变”两个输入时,它会自动假定第二个输入是一个统一的间距值。