difference between hours, minutes and seconds
1 view (last 30 days)
Show older comments
Hi!
I have matrix A
M=[8 8 48;8 15 29;9 30 15;9 48 53;9 49 30;9 52 12;9 57 0;10 2 27;10 28 52;11 29 47;11 43 41;11 44 4];
The first column of the matrix indicates hours, the second minutes and the third seconds. I want to calculate the difference between consecutive rows
Eg.
M(2,1:3)-M(1,1:3) = 0 6 41
Can you help me? Thanks
0 Comments
Accepted Answer
Star Strider
on 2 Feb 2017
See if this does what you want:
M=[8 8 48;8 15 29;9 30 15;9 48 53;9 49 30;9 52 12;9 57 0;10 2 27;10 28 52;11 29 47;11 43 41;11 44 4];
Mdn = datenum([repmat([2017 02 02], size(M,1), 1) M]); % Date Numbers
Mdndif = datevec(diff(Mdn)); % Date Number Differences As Date Vectors
Out = Mdndif(:, 4:end) % Desired Result
Out =
0 6 41
1 14 46
0 18 38
0 0 37
0 2 42
0 4 48
0 5 27
0 26 25
1 0 55
0 13 54
0 0 23
0 Comments
More Answers (2)
Steven Lord
on 2 Feb 2017
Use a duration object.
% Sample data
M = [ 8 8 48; 8 15 29; 9 30 15; 9 48 53; 9 49 30; 9 52 12; ...
9 57 0; 10 2 27; 10 28 52; 11 29 47; 11 43 41; 11 44 4];
% Convert from numbers to a duration array
dur = duration(M);
% Compute the DIFFerence between the rows of the duration array
Ddur = diff(dur, [], 1);
% Extract the hour, minute, and second data from Ddur
% and store that data in the matrix DM
[DM(:, 1), DM(:, 2), DM(:, 3)] = hms(Ddur);
% Show the result
disp(DM)
0 Comments
See Also
Categories
Find more on Dates and Time in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!