# hours(diff​(datetime(​[t1;t2]))) function

조회 수: 1(최근 30일)
Berk Opla 2021년 7월 12일
답변: Peter Perkins 2021년 7월 27일
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표시숨기기 이전 댓글 수: 1
Berk Opla 2021년 7월 12일
yes i'm getting "Unable to use a value of type duration as an index." for the line of
hours(diff(datetime(t1;t2]))) = c

댓글을 달려면 로그인하십시오.

### 채택된 답변

Berk Opla 2021년 7월 12일
편집: Berk Opla 2021년 7월 12일
figured it out
hours(diff(datetime(t1;t2]))) = c is wrong
it should be c = hours(diff(datetime([t1;t2])))
for some reason
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
Berk Opla 2021년 7월 12일
yeah fixed it now. the problem was the place of the c

댓글을 달려면 로그인하십시오.

### 추가 답변(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표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

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.

댓글을 달려면 로그인하십시오.

### Community Treasure Hunt

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

Start Hunting!