-1

在 Matlab 中,如果发生错误,我怎样才能跳过某个for循环索引并跳转continue到下一个索引?请注意,我不知道哪些for循环索引会导致错误发生。

错误:Too many outputs requested. Most likely cause is missing [] around left hand side that has a comma separated list expansion

假设在 时发生错误k = 5。如何使for循环跳过索引k = 5continueto k = 6

for k = 1:10
    do stuff
    if error occurs
       skip k that causes error
       go to next k
    end
end
4

3 回答 3

2

您可以try用于此目的!

for k = 1:10
        %do stuff
        try
         % portion of the code where error can occur
        end
end
于 2016-08-18T18:56:55.657 回答
1

如果您不知道哪个k出错,请使用:

for i=1:10
try
    %do stuff;
catch
    warning('some error');
end

如果你知道k,一个简单的方法可以是:

for k = 1:10
    if k==6
    else
        disp(k);
    end
end

如果您已经知道k导致错误的原因:

for k = [1:5 7:10]
        disp(k);
end
于 2016-08-18T18:53:26.230 回答
0

如果你需要一个特定长度的向量,否则你会得到一个错误,有两种很好的方法可以处理。

1)使用try-catch。

2)做一个预先范围检查,例如。if (length(data)<2), continue;

如果您只收到一次错误,您可以选择 (1) 或 (2)。最好选择一种与其余代码匹配的方式。如果错误可能发生在代码中的多个位置并且需要在所有这些位置中以相同的方式处理,请使用 (1)。这将允许您在同一个地方处理所有错误。

据我所知,关于如何处理异常有很多不同的意见(我在这里使用更通用的名称“异常”来指代 MATLAB 错误)。C 程序员可能会说应该很少使用异常,而 Java 程序员会更频繁地使用它们。然而,Java 中没有goto关键字,C 程序员可能会在很多地方使用goto来处理“异常情况” ,即使过度使用goto关键字被认为是不好的做法。如您所见,有很多方法可以进行错误处理。我们可以提供不同的替代方案,但最终它始终是您的选择(对不起!)。

于 2016-08-22T05:12:50.740 回答