Matlab中的 for 与while是有区别的
在 MATLAB 中,for
循环的迭代变量 i
实际上是由循环范围控制的,也就是说,你在循环体内直接修改 i
是不会影响下一次迭代的 i
值。你的例子:
matlab
for i = 1:5if i == 2i = i + 1; % 实际不会跳过下一个 iendi
end
会输出:
12345
这是因为 for i=1:5
本质上是:
matlab
for temp = [1 2 3 4 5]i = temp;...
end
所以 i = i + 1
只是临时修改了变量,不会影响下一个 temp
的值。
✅ 如果你想更灵活地控制循环(跳过某些迭代),你有两个选项:
✅ 方案 1:使用 while
循环,自己控制索引
matlab
i = 1;
while i <= 5if i == 2i = i + 1; % 跳过 i==2 的那轮continue;enddisp(i)i = i + 1;
end
✅ 这会跳过 i==2
,输出:
1345
✅ 方案 2:提前构造好 index 列表,再 for
循环
matlab
idx = [1 3 4 5]; % 手动控制要迭代的 i
for i = idxdisp(i)
end
❌ 总结:不能直接修改 for
中的 i
方法 | 是否支持跳过迭代 | 是否可修改索引 |
---|---|---|
for i = 1:N | ✅ continue 支持 | ❌ 不能直接改 i |
while 循环 | ✅ 更灵活 | ✅ 手动控制 |
自定义索引数组 | ✅ 自由跳过 | ✅ 完全自控 |
如果你告诉我你要跳过哪些索引,我可以直接给你最简代码实现。需要吗?