在我的代码中,我目前有2个while循环,如下所示:
sequence = [15 35 50];
startStamp = GetSecs %GetSecs is a psychtoolbox function that returns the current time in seconds
while GetSecs - startStamp < sequence(1) || (GetSecs - startStamp >= sequence(2) && GetSecs - startStamp <= sequence(3))
cond1 %display stimulus 1
end
while GetSecs - startStamp >= sequence(1) && GetSecs - startStamp < sequence(2)
cond2 %display stimulus 2
end
每当计时器(GetSecs-startStamp)到达序列中的一个元素时,我都希望从一个while循环转到另一个元素,然后执行它,直到到达序列的下一个元素,切换循环等等。
我构造进入while循环的条件语句的方式不是很苗条,但是随着numel(序列)的增加,它成指数地恶化。
有没有一种方法可以更优雅地做到这一点并以可变长度的序列工作?
答案 0 :(得分:1)
对于可变长度的数组序列,您可以使用一个大的while循环在序列数组的各个元素之间循环,然后在循环内放置标志,以告诉您要使用哪种条件。
翻译成代码:
counter = 1; flag = true;
while(counter <= length(sequence))
while(GetSecs - startStamp < sequence(counter))
if flag
cond1;
else
cond2;
end
end
flag = ~flag;
counter = counter + 1 ;
end
答案 1 :(得分:0)
sequence = [15 35 50];
startStamp = GetSecs %GetSecs is a psychtoolbox function that returns the current time in seconds
while (Getsecs - startStamp) < sequence(end)
for i=1:length(sequence)
if (Getsecs-startStamp) < sequence(i)
break
end
end
if mod(i,2) == 1
cond1
else
cond2
end
end