Repeating or rerunning a loop

Olivia Krieger (view profile)

on 1 Apr 2019
Latest activity Edited by Olivia Krieger

on 2 Apr 2019

Jos (10584) (view profile)

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);
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
end
end
% Question: how can I get the loop to rerun using
I am also open to other ways to solve this than I've currently started!
Thanks!

Jos (10584)

Jos (10584) (view profile)

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 (view profile)

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!!

Jos (10584) (view profile)

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

Olivia Krieger

Olivia Krieger (view profile)

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!