在Matlab中有相当于'jump'或'go to'的东西吗?

时间:2014-06-09 12:46:27

标签: matlab loops goto

我有这段代码:

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

我需要gotojump函数到while的开头,或者等同于任何人 知道一种更简单的方法,如果delay > values_delay_temp,它就不会成为最终向量values_delay的一部分。相反,我想跳过它并继续使用while循环。

2 个答案:

答案 0 :(得分:1)

您可以这样做,而不是使用continuebreak之类的跳转:

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

是真的吗?