如何在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);
最后一点,当你给“渐变”两个输入时,它会自动假定第二个输入是一个统一的间距值。
我正在研究行人脚步检测(加速度)。我想根据过滤后的信号计算统计特征。我已经计算了一些,现在我想计算 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);
最后一点,当你给“渐变”两个输入时,它会自动假定第二个输入是一个统一的间距值。