difference of datetimes using the "diff" function

4 Ansichten (letzte 30 Tage)
Sim
Sim am 20 Okt. 2022
Kommentiert: Sim am 21 Okt. 2022
I would like to find the temporal difference between the elements in the first (left) column and the elements in the second (right) column. I have tried the diff function, but it gives me an unexpected result. How can I still use the diff function correctly ?
% input
a = datetime({'2022-05-17 05:57:11.568' '2022-05-17 06:01:23.552'
'2022-05-17 06:01:23.552' '2022-05-17 06:02:32.760'
'2022-05-17 06:02:32.760' '2022-05-17 06:03:57.660'
'2022-05-17 06:03:57.660' '2022-05-17 06:19:28.740'
'2022-05-17 06:19:28.740' '2022-05-17 06:20:50.100'
'2022-05-17 06:20:50.100' '2022-05-17 06:21:49.408'
'2022-05-17 06:21:49.408' '2022-05-17 06:23:15.980'
'2022-05-17 06:23:15.980' '2022-05-17 06:24:22.200'})
a = 8×2 datetime array
17-May-2022 05:57:11 17-May-2022 06:01:23 17-May-2022 06:01:23 17-May-2022 06:02:32 17-May-2022 06:02:32 17-May-2022 06:03:57 17-May-2022 06:03:57 17-May-2022 06:19:28 17-May-2022 06:19:28 17-May-2022 06:20:50 17-May-2022 06:20:50 17-May-2022 06:21:49 17-May-2022 06:21:49 17-May-2022 06:23:15 17-May-2022 06:23:15 17-May-2022 06:24:22
% If I use "diff(a)", why do I get two columns of "differences", instead of only one ?
diff(a)
ans = 7×2 duration array
00:04:11 00:01:09 00:01:09 00:01:24 00:01:24 00:15:31 00:15:31 00:01:21 00:01:21 00:00:59 00:00:59 00:01:26 00:01:26 00:01:06
% the following command looks like to give the correct result (but I would like to use "diff" if possible)
abs(a(:,1)-a(:,2))
ans = 8×1 duration array
00:04:11 00:01:09 00:01:24 00:15:31 00:01:21 00:00:59 00:01:26 00:01:06
  2 Kommentare
Stephen23
Stephen23 am 20 Okt. 2022
"why do I get two columns of "differences", instead of only one ?"
The DIFF documentation explains this. The documentation states "diff(X) calculates differences between adjacent elements of X along the first array dimension whose size does not equal 1..." and it then procedes to give a detailed explanation of the returned sizes for vectors and matrices: "If X is a nonempty, nonvector p-by-m matrix, then Y = diff(X) returns a matrix of size (p-1)-by-m, whose elements are the differences between the rows of X"
So because you did not specify the dimension argument and the first dimension of your matrix is non-scalar then DIFF operates along the first dimension. So far everything you show is exactly as documented and expected.
Sim
Sim am 21 Okt. 2022
ah ok, thanks a lot for your explanation! :-)

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Sim
Sim am 20 Okt. 2022
ah.... probably this one ?
>> diff(a,1,2)
ans =
8×1 duration array
00:04:11
00:01:09
00:01:24
00:15:31
00:01:21
00:00:59
00:01:26
00:01:06

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by