difference of datetimes using the "diff" function

2 visualizaciones (últimos 30 días)
Sim
Sim el 20 de Oct. de 2022
Comentada: Sim el 21 de Oct. de 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 comentarios
Stephen23
Stephen23 el 20 de Oct. de 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 el 21 de Oct. de 2022
ah ok, thanks a lot for your explanation! :-)

Iniciar sesión para comentar.

Respuestas (1)

Sim
Sim el 20 de Oct. de 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

Categorías

Más información sobre Numerical Integration and Differentiation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by