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)
如果有人有建议,那将非常感激.谢谢!
使用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)