difference of datetimes using the "diff" function
12 次查看(过去 30 天)
显示 更早的评论
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'})
% If I use "diff(a)", why do I get two columns of "differences", instead of only one ?
diff(a)
% the following command looks like to give the correct result (but I would like to use "diff" if possible)
abs(a(:,1)-a(:,2))
2 个评论
Stephen23
2022-10-20
"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.
回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operators and Elementary Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!