给定加速度数据和相应的时间,如何在MATLAB中找到位置和速度?

时间:2014-04-25 03:15:22

标签: matlab acceleration

我在excel电子表格中获得了这些数据。因此,导入后我会velocity = cumtrapz(t,y)然后position = cumtrapz(velocity)

1 个答案:

答案 0 :(得分:1)

如果汽车在距离零处从零开始是正确的。否则你也需要在那里有初始速度。请注意,您在此处所做的是通过将a = f(t) = dv/dt标识为a = d^2s/dt^2来解决等式v和进一步ds/dt。你通过求解常微分方程组来实现它:

a = dv/dt
v = ds/dt

这可以通过几种方式完成。例如,与欧拉前进。

v'(t) = (v(t+h)-v(t))/h
<=> v(t+h) = hv'(t)+v(t)

其中给出了派生词,这意味着a = a(t)。迭代初始化为初始条件v(0),必须给出。

当你知道v时,你就去了。再次使用欧拉前进,

s'(t) = (s(t+h)-s(t))/h
<=> s(t+h) = hs'(t)+s(t)

您必须知道初始条件s(0)。如果v(0) = s(0) = 0。 Euler forward是一个O(h)算法,但是知道解决微分方程的技巧一步一步地进行转换s'(t) = v(t),也可以做得更好。现在任何runge-kutta方法都可供您使用。你使用的方法cumtrapz实际上是一个O(h ^ 2)方法。这比stackoverflow中的自定义理论要多一些,但希望它会有所帮助。对于二阶边值问题,还有一个矩阵解决方案,称为有限差分法,但是这个问题稍微先进一些。如需进一步阅读,请从

开始

http://en.wikipedia.org/wiki/Numerical_methods_for_ordinary_differential_equations