Elegant way to know in which iteration of for I am
조회 수: 5 (최근 30일)
이전 댓글 표시
At the moment I have something of the sort:
n_runs=0;
N_categories=[17, 8];
for protocol_ID=[4 1 7 6]
for t=1:nTrialsPerBlock
n_runs=n_runs+1;
if n_runs > N_categories
(--code--)
end
(---code---)
end
end
What I am looking for is a way to evaluate in which protocol the first for is (meaning if it is in 4, 1, 7 or 6) and then if it is in the first two, should be n_runs > N_categories( 1 ) and if it's the second pair N_categories( 2 ).
I am trying to code it so that it determines in which protocol I am, and according to that evaluate if the number of runs is bigger than the corresponding N_categories. Note that protocol_ID could have any of the numbers (4,1,7,6) in no particular order.
I am not seeing a better way than a bunch of switches/if's. Anyone could give a hand? :)
댓글 수: 3
답변 (3개)
dpb
2014년 7월 23일
...Can a switch work if I do:
switch protocol_ID
case 1 || 4
case 6 || 7
Not in that exact syntax, no, but
switch protocol_ID
case {1, 4}
...
case {6, 7}
...
otherwise
...
doc switch % etc., for details...
댓글 수: 0
dpb
2014년 7월 23일
I don't follow what the end objective is from the description, but to know which iteration numerically is being evaluated you've got the indicator variable being incremented in the wrong place--
iter=0;
N_categories=[17, 8];
for protocol_ID=[4 1 7 6]
iter=iter+1;
if round(iter/2)==1
% stuff for first two
else
% second two
end
...
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!