Repeating or rerunning a loop
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello MATLAB community! I am hopeful that someone can help me solve this puzzle I've created for myself...
I am running an experiment using an eye tracker. When an eye movement is detected, I want to record the trial sequence number and then add those trials onto the end of the trial block. But once I'm through the loop I don't know how to restart the loop with a new sequence/new number of iterations.
This is an example of my loop (the real loop is quite long and complex)
seq = [3, 1, 2, 1, 3, 2]; % trial sequence
nTrials = length(seq);
addTrials = [];
for trial = 1:nTrials
option = seq(trial);
if option == 1
% do this
elseif option == 2
% do that
elseif option == 3
% do another thing
end
movement = 0;
% check for eye movements
if eye movement is detected % this is not real code
movement = movement + 1
end
% add trial with movement to new sequence vector
if movement > 0
addTrials = [addTrials option];
end
end
% Question: how can I get the loop to rerun using
% nTrials = length(addTrials) and option = addTrials(trial)
I am also open to other ways to solve this than I've currently started!
Thanks!
댓글 수: 2
Jos (10584)
2019년 4월 1일
In this pseudo-code you can omit the whole movement variable. Did you take a look at my answer?
채택된 답변
Jos (10584)
2019년 4월 1일
Use a while loop, which is more flexible than a for -loop. Something like this might work:
seq = [3, 1, 2, 1, 3, 2]; % trial sequence
k = 0 ;
while k < length(seq),
k = k + 1 ;
option = seq(k);
% check for eye movements
if eye movement is detected % this is not real code
% add trial with movement to the sequence vector
seq(end+1) = option ;
end
end
추가 답변 (0개)
참고 항목
카테고리
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!