Using trapz for non-linear data points

5 views (last 30 days)
Hello,
I have a speed vs time plot shown below.
I want to know how acccurate is the trapz function in MATLAB for calculating the distance travelled (i.e area under the graph). Would you suggest if there is an another means of obtaining a better approximation for the area under the graph?

Accepted Answer

Star Strider
Star Strider on 22 Jul 2015
I would use cumtrapz to give instantaneous distance traveled, for instance:
dist_nm = cumtrapz(airspeed, time_num);
I would create a time vector using datenum, subtracting the first value to create a realistic time vector in the context of your data:
time_num = datenum(time) - datenum(time(1));
Do the appropriate adjustments to the datenum calls if your ‘time’ data are not already in date number format.
  2 Comments
yashvin
yashvin on 22 Jul 2015
Hi
Yes, I had used this approach itself:
time_chunk_slt=Time_sub_chunk{i,f}; %gets the current time chunk
time_chunk_slt_dur= time_chunk_slt-time_chunk_slt(1); % gets the value of the time duration stating from zero to the current time
time_chunk_slt_dur_sec=seconds(time_chunk_slt_dur);
time_chunk_slt_dur_sec_hr{i,f}=time_chunk_slt_dur_sec/3600;
If I want simply the distance travelled throughout the whole time duration, the trapz is also fine right?
dist_nm = trapz(airspeed, time_num);
I read that it uses trapezoidal area for each time step to calculate the distance in this case. So the last value of cumtrapz should correspond to trapz right?
Star Strider
Star Strider on 22 Jul 2015
Correct. The last value of cumtrapz is the value of the entire integral, equivalent to trapz.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!