Repeating or rerunning a loop

5 views (last 30 days)
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 Comments
Jos (10584)
Jos (10584) on 1 Apr 2019
In this pseudo-code you can omit the whole movement variable. Did you take a look at my answer?
Olivia Krieger
Olivia Krieger on 2 Apr 2019
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!!

Sign in to comment.

Accepted Answer

Jos (10584)
Jos (10584) on 1 Apr 2019
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 Comment
Olivia Krieger
Olivia Krieger on 2 Apr 2019
Edited: Olivia Krieger on 2 Apr 2019
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!

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!