MATLAB'继续'命令替代

时间:2018-02-25 23:05:32

标签: matlab for-loop continue

for i = 1:30
    if condition1
        statement1
    elseif condition2
        continue
    else
        statement2
    end
    statement3
end

如上所述,如果满足条件2,我在for循环中有'continue'命令跳过'statement3'。这段代码效果很好。 但是当我必须运行if-else部分进行测试时,它会出错,因为'continue'应该在for / while循环中运行。

有没有办法在for循环中做同样的事情(什么也不做,跳到下一次迭代),但也可以单独工作?

2 个答案:

答案 0 :(得分:4)

如果你想在循环外运行完全相同的代码,因此无法使用continue,你可以简单地重写它如下:

if ~condition2
    if condition1
        statement1
    else
        statement2  
    end

    statement3
end

或者(我知道它不是很优雅,但确实有效):

if condition1
    statement1
    statement3
elseif condition2
else
    statement2  
    statement3
end

通过如下重写上述代码(很多):

if condition1
    statement1
    statement3
elseif ~condition2
    statement2  
    statement3
end

最后,如果您的statement3特别长,并且您不想重复两次,则可以使用旁路标记进一步改进上述代码:

go3 = false;

if condition1
    statement1
    go3 = true;
elseif ~condition2
    statement2  
    go3 = true;
end

if go3
    statement3
end

问题在于抽象条件不允许我充分利用我的想象力。也许如果你指定你正在使用的条件,即使是以简化的方式,我也可以尝试提出更好的解决方案。

答案 1 :(得分:1)

首先,你所写的内容是你想要的。检查此代码,例如:

for i = 1:7
    if i<=2
        disp([num2str(i) ' statement1'])
    elseif i>=4 &&  i<=6
        disp([num2str(i) ' only continue here'])
        continue
    else       
        disp([num2str(i) ' statement2'])
    end
    disp([num2str(i) ' statement3']);
end
disp('yeah')


>>
1 statement1
1 statement3
2 statement1
2 statement3
3 statement2
3 statement3
4 only continue here
5 only continue here
6 only continue here
7 statement2
7 statement3
yeah

其次,你也可以这样做

for i=1:30
    if condition1
        statement1
        statement3
    elseif condition2
        continue
    else
        statement2  
        statement3
    end
end