2012-03-19 250 views
3

我想将速度值数组转换为加速度值。我明白加速度是速度的积分,但不知道如何达到这个速度。我使用MATLAB,所以如果任何人都可以提供这种语言的解决方案,我将非常感激!请参见下面的图:从速度计算加速度峰值

enter image description here

黄线绘出了速度和垂直虚线示出(使用peakdet发现波峰和波谷)的峰和那波形槽。中间的绿色水平东西与这个问题无关。

我想要隔离的是上面曲线上最大的向下斜坡最陡峭的部分。任何人都可以提供关于如何计算的建议?

P.S.我知道quad()是用于在MATLAB中集成的函数,但不知道如何在这种情况下实现它。

+3

我认为你的意思是加速度是速度的导数,而不是积分。此外,这是一个单维问题,还是仅记录高维运动的速度?如果是后者,事情可能会稍微复杂一些。 ...我认为你可以使用不同的模板并计算你的速度曲线的数值导数来获得加速度。检查Matlab的'diff()'和'gradient()'函数(但您可能想使用更好的模板并自己编写代码)。 – ely 2012-03-19 19:14:33

+0

非常感谢。它是一维的。您的'渐变'建议看起来可能是我正在寻找的。 – CaptainProg 2012-03-19 19:16:31

回答

1

加速度是衍生物的速度。

如果你的速度值存储在v,你可以得到的v快速数值衍生

a = diff(v) 

注意,如果v是一个真正的,而不是合成信号,a很可能是相当嘈杂,所以一些平滑可能是有序的,取决于你将如何使用它。

+0

既然他想找到右边最陡峭的部分,你可以添加'[val,idx] = max(a);'或类似的。 – 2012-03-20 00:40:33