MATLAB: Subtractions between consecutive rows in a table

mathematicsMATLABmatrix array

I need a help to obtain the differences between time values which I read alongside other data and write them to a CSV file as a table. The time values are those of MATLAB time converted into milliseconds, but what I need is the differences between them to be in the table as the time is read. That is row 3 – row2, row4 – row3, row5 – row4,…….rowend – row(end-1). I attached a CSV file where I read 30 samples. Here is the relevant segment of my code:
counter = 0;
logtime_table = table();
while(counter< 30)
Timestamp = now;
timestring = datestr(Timestamp,'HH:MM:SS.FFF');
[~,~,~,hours,minutes,seconds] = datevec(timestring);
Timestamp = 1000*(3600*hours + 60*minutes + seconds);
table_row = table(Timestamp);
logtime_table = [logtime_table; table_row];
counter = counter + 1;
end
filename = strcat('logtime_table.csv');
writetable(logtime_table, filename);

Best Answer

Deyire, unless you're using a pretty old version of MATLAB, use datetime and duration instead of datestr/datenum/datevec. Also your code doesn't look like it computes time differences, it computes milliseconds since year zero. Try this:
>> t0 = datetime('now'); pause(rand); t1 = datetime('now'); >> milliseconds(t1 - t0) ans = 453.54
I suggest that in your loop, you save all the timestamps, as datetimes, and all the data at each timestamp, and then ONCE, outside the loop, create a timetable something like this:
dt = diff(timestamps); dt.Format = 's';
tt = timetable(data(2:end),'RowTimes',dt)