我有这段代码:
values_nodelay = no_of_values(2:2:end)
no_of_values_x1 = (find(u~=[u(2:end), u(end)+1]));
no_of_values_x1 = no_of_values_x1(2:2:end)
l = 1;
delay = 2;
values_delay = [];
while l<=length(values_nodelay)
values_delay_temp = values_nodelay(l)-delay;
if delay>values_delay_temp
end
values_delay = [values_delay, values_delay_temp];
l = l+1;
end
values_delay
我需要goto
或jump
函数到while
的开头,或者等同于任何人
知道一种更简单的方法,如果delay > values_delay_temp
,它就不会成为最终向量values_delay
的一部分。相反,我想跳过它并继续使用while
循环。
答案 0 :(得分:1)
您可以这样做,而不是使用continue
或break
之类的跳转:
if delay<=values_delay_temp
values_delay=[values_delay, values_delay_temp];
end
换句话说,使&#34;默认&#34;循环的行为什么也不做,然后只有在你遇到正确的条件时增加你的向量。它更清晰,更容易调试。
此外,我还没有像你一样使用矢量连接,但如果你必须在循环中增长一个矢量,我发现values_delay(end+1) = values_delay_temp;
更有效率。
答案 1 :(得分:0)
continue
语句将停止执行当前迭代的循环并继续下一次迭代,例如
while foo
# stuff that will execute for all iterations
if bar
continue
end
# stuff that won't execute if bar is false
end
虽然,在您的具体情况下,为什么不发布
values_delay=[values_delay, values_delay_temp];
并在
时增加循环计数器 delay <= values_delay_temp
是真的吗?