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

问题描述 投票:0回答:1

我在excel电子表格中获得了这些数据。所以在导入之后我会做velocity = cumtrapz(t,y)然后position = cumtrapz(velocity)吗?

matlab acceleration
1个回答
1
投票

如果汽车在零距离处从零开始是正确的。否则你也需要在那里有初始速度。请注意,你在这里真正做的是通过将a = f(t) = dv/dt识别为a = d^2s/dt^2来解决方程vds/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。再次使用欧拉前进,

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

© www.soinside.com 2019 - 2024. All rights reserved.