Repeating or rerunning a loop
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Olivia Krieger
am 1 Apr. 2019
Bearbeitet: Olivia Krieger
am 2 Apr. 2019
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 Kommentare
Jos (10584)
am 1 Apr. 2019
In this pseudo-code you can omit the whole movement variable. Did you take a look at my answer?
Akzeptierte Antwort
Jos (10584)
am 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 Kommentar
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!