在我的代码中,我目前有两个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(序列(的增加,情况会呈指数级恶化。
有没有一种方法可以更优雅地做到这一点,并使用可变长度的sequnce?
对于可变长度的数组序列,您可以使用一个大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
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