필터 지우기
필터 지우기

difference between hours, minutes and seconds

조회 수: 1 (최근 30일)
elisa ewin
elisa ewin 2017년 2월 2일
답변: Steven Lord 2017년 2월 2일
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

채택된 답변

Star Strider
Star Strider 2017년 2월 2일
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

추가 답변 (2개)

Jan
Jan 2017년 2월 2일
편집: Jan 2017년 2월 2일
D = diff(M, [], 1);
DinSec = D * [3600; 60; 1] / 86400; % difference in seconds
S = datevec(DinSec);
Result = M(:, 4:6)

Steven Lord
Steven Lord 2017년 2월 2일
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)

카테고리

Help CenterFile Exchange에서 Dates and Time에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by