hours(diff(datetime([t1;t2]))) function
3 次查看(过去 30 天)
显示 更早的评论
i have a 300 x 2 table, i want to calculate time differences and i want to count how many of them are more than 3 hours. [a, b] is the size of the table. it gives an error in the = c line & it says Unable to use a value of type duration as an index. how do i solve this?
below is the related part of the code. thank you so much
for n = 1:a
t1 = y(n,1)
t2 = y(n,2)
hours(diff(datetime(t1;t2]))) = c
if c > 3
x = x+ 1
end
end
2 个评论
更多回答(2 个)
dpb
2021-7-12
hours(diff(datetime(t1;t2]))) = c
You're using hours that is a builtin function as an array name on the LHS of an assignment statement and you also have an unmatched "]" bracket in the expression.
You also don't need a loop here...use MATLAB vectorized operations instead...
You don't provide what y variable contains; presuming it can be converted to a datetime, then if the answer is to determine how many of the time differences between the two columns are > 3 hours, then
nGt3=sum((datetime(y:,1)-datetime(y:,2))>3);
This presumes as your code that the first date is in the second column not the first -- one would normally think that would be the other way 'round; in which case would want to reverse the column indices in the difference calculation.
0 个评论
Peter Perkins
2021-7-27
In addition to what others have said, you probably don't need the "hours" in
hours(diff(datetime(t1;t2])))
All that does is turn the duration that diff returns into a number. You are probably better off leaving it as duration, and replacing "3" with hours(3). More expressive.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!