在MATLAB中,如果满足某些条件,如何跳过预定数量的for循环迭代?

ent*_*ere 7 matlab for-loop continue

在Matlab中,我在for循环期间执行计算,但是如果满足某些条件,我试图找到在for循环期间跳过迭代的方法.我写了一个简单的例子来说明我的问题.

在下面的代码中,for循环将经历迭代1和2并按预期输出到r.r(1)将为1,并且r(2)将为2.一旦for循环运行迭代3,则将值20放入r(3).在发生这种情况之后,我希望for循环跳过接下来的5次迭代并直接进入for循环的迭代8.

for i=1:1:10
    if i==3
        r(i)=20;
        i = i+5;
    else
        r(i) = i;
    end
end
Run Code Online (Sandbox Code Playgroud)

r的实际结果如下:

r =

 1     2    20     4     5     6     7     8     9    10
Run Code Online (Sandbox Code Playgroud)

但是,我希望结果看起来类似于以下内容.(请注意,我不打算用0填充所需的r(4):r(7),而是完全跳过循环迭代4到7.)

r =

 1     2    20     0     0     0     0     8     9    10
Run Code Online (Sandbox Code Playgroud)

如果有人有建议,那将非常感激.谢谢!

Ken*_*nne 7

使用while循环而不是for循环来手动递增:

i=1;  // index for loop
k=1;  // index for r
r = zeros(1,10) // pre-allocate/cut is faster
while i <= 10
  if i == 3
    r(i)=20;
    i = i+5;  // skip multiple iterations
  else
    r(k)=i; 
    i=i+1;    // loop increment
    k=k+1;    // vector increment
  end
end
r(k+1:end) = []; // Remove unused portion of the array
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,你的代码不起作用的原因是MATLAB实际上将自己的"引用"存储到for循环中使用的i,所以当你可以得到i时,你无法编辑该值.我忘记了它是如何工作的,但我记得当我是编程的新手时,我看了一下,有点有趣哈哈 (3认同)