Given acceleration data and the corresponding time, how can I find the position and velocity in MATLAB?

StackOverflow https://stackoverflow.com/questions/23283548

  •  09-07-2023
  •  | 
  •  

Question

I am given this data in an excel spreadsheet. So after importing it would I just do velocity = cumtrapz(t,y) and then position = cumtrapz(velocity)?

Was it helpful?

Solution

It is correct if the car starts from zero at distance zero. Otherwise you need to have the initial velocity there as well. Just notice that what you really do here is solving the the equation a = f(t) = dv/dt and further a = d^2s/dt^2 by identifying v as ds/dt. You does it by solving a system of ordinary differential equations:

a = dv/dt
v = ds/dt

This can be done in a few ways. Eg with Euler forward.

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

where the derivate is given, which means that a = a(t). The iteration is initialized with the initial condition v(0), which must be given.

When you know v then you go to s. Use again Euler forward as,

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

where you must know the initial condition s(0). If v(0) = s(0) = 0. Euler forward is an O(h) algorithm, but knowing the trick of solving the differential equations step by step doing the transformation s'(t) = v(t) it is also possible to do better. Now any runge-kutta method is available for you. And the method which you use, cumtrapz, is actually a O(h^2) method. This is a little more theory than what is custom in stackoverflow, but hopefully it will be helpful. There is also a matrix solution to second order boundary value problems, called Finite differance method, but that one is slighly more advanced. For further reading, start with

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top