MATLAB 'continue' 命令替代

MATLAB 'continue' command alternative

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 循环中做同样的事情(什么都不做并跳到下一次迭代)但又可以单独工作?

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

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

如果你想运行循环外的完全相同的代码,因此不能使用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

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