Repeating or rerunning a loop

조회 수: 4 (최근 30일)
Olivia Krieger
Olivia Krieger 2019년 4월 1일
편집: Olivia Krieger 2019년 4월 2일
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)
Jos (10584) 2019년 4월 1일
In this pseudo-code you can omit the whole movement variable. Did you take a look at my answer?
Olivia Krieger
Olivia Krieger 2019년 4월 2일
Hi, I check for eye movements in various places within the trial loop, so I've just added (from your suggestion)
if movement > 0
seq(end + 1) = option;
end
Thank you!!

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

채택된 답변

Jos (10584)
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
  댓글 수: 1
Olivia Krieger
Olivia Krieger 2019년 4월 2일
편집: Olivia Krieger 2019년 4월 2일
Thank you!! This is very helpful and should work to resolve my issue, it worked in a little psuedocode I made. I will implement today in the actual experiment!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by