我正在进行行人步伐检测(加速度)。我想从我的滤波信号中计算统计特征。我已经计算了一些特征,现在我想计算梯度。我的数据是1×37205的双精度类型。我使用带有移动窗口大小为2个样本和50%重叠的前一个窗口的for循环来计算特征。下面我附上了我尝试计算梯度的代码。我不确定这是否是正确的计算方法。此外,我也不明白使用梯度的目的是什么,它如何对步伐检测有用,以及如何处理梯度?有人能指导我或在MATLAB中提供任何代码帮助吗?
%%这里M是均值,V是我已经从滤波数据中计算出的方差
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
或者,对于在命令行中显示的“简短”文档,您可以输入:
help functionName
另请参阅此处链接的文档。
你的问题措辞不当,所以我将总结我所理解的内容并相应地回答:
- 您有一个步伐检测数据(1*37205)双精度类型,我们称之为stepSignal
- stepSignal是位置数据
- 您希望窗口大小为2步,50%重叠。这是gradient函数的默认行为。
您不需要“for”循环来实现您的目标。根据文档,“gradient”可以接受一个输入。
请查看下面的代码,如果需要,请在原始问题中添加澄清说明。
%% 假设stepSignal已经导入到工作区
velocity = gradient(stepSignal);
最后一点,当您给“gradient”两个输入时,它会自动假设第二个输入是一个均匀间隔值。