在for循环中跳过迭代

时间:2016-07-21 19:33:15

标签: matlab loops for-loop iteration

是否有一种有效的方法可以在for循环中跳过迭代?

我有一个大型数据集,其中包含S& P 500指数的期权价格。数据集的范围从1992年到2009年。现在,我总共有3481个引用日期存储在某个向量中,我称之为QDvector。我只对2008年至2009年的报价日期感兴趣。对于每个报价日期,我都会运行某个程序。感兴趣的报价日期是从3290到3481.但是,在一些特殊情况下(很少),由于缺乏库存数据,该计划不起作用。如何在for循环中跳过这些迭代?

例如,假设我有

for index = 3290:3481
    [...]
end 

并假设我不想考虑index == 3389。如何跳过此迭代?

  • 我可以使用while循环,但我真的不想考虑这个索引,因为我还必须绘制某些参数,我想跳过与index == 3389对应的参数。
  • 我可以从QDvector中删除引用日期。我不喜欢这种方法,因为我必须改变太多其他变量。

我只是在寻找一种跳过某些迭代而没有任何后果的好方法。

2 个答案:

答案 0 :(得分:3)

是的,continue语句允许这样做。

for index = 3290:3481
    [...]
    continue;    % wherever applicable
end

答案 1 :(得分:0)

检查索引并在找不到代码时执行。

for index = 3290:3481
    if index != 3389
        [...]
    end
end

如果没有else语句,当语句为false时,不会发生任何事情,从而有效地跳过索引。

可替换地:

for index = 3290:3481
    if index == 3389
        continue
    else
        [...]
    end
end

效率略低,因为检查将会运行,并且在大多数情况下会进入其他状态。但是只有191次传球,它可能不会引人注意。