You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MATLAB中for循环如何跳过指定迭代?

在MATLAB的for循环内实现跳过指定迭代的方法

嘿,我来帮你拆解这个问题——你遇到的核心坑是MATLAB的for循环迭代变量是“只读”的:当你写for m=1:100时,MATLAB会预先把1到100的所有数值存成一个数组,每次循环都会按顺序从这个数组里取一个值赋值给m,不管你在循环里怎么修改m,下一次循环开始时,这个值都会被数组里的下一个元素覆盖,这就是为什么你的disp(m)会输出1到100的原因。

不过要在for循环里实现跳过20到40的迭代,还是有可行方案的,给你两种思路:

方案一:用continue跳过不需要的循环逻辑

虽然没法让循环直接少跑20次,但可以在不需要执行赋值的迭代里,用continue跳过当前循环的剩余代码,只处理我们需要的部分:

A = zeros(1,100);
for m = 1:100
    if m >= 20 && m <= 40
        % 跳过这个区间的赋值操作,直接进入下一次循环
        continue;
    end
    A(m) = m;
    disp(m);
end
% 最后单独给特殊区间赋值
A(20:40) = 1;

这种方式逻辑直观,符合for循环的常规使用习惯,只是把20-40的迭代空过去,最后再完成特殊值的赋值。

方案二:自定义迭代索引数组,真正跳过迭代

如果你想让循环只执行80次(完全跳过20-40的迭代),可以预先构建一个排除了20-40的索引数组,用这个数组作为for循环的迭代对象:

A = zeros(1,100);
% 构建我们需要遍历的索引:1-19,41-100
indices = [1:19, 41:100];
for m = indices
    A(m) = m;
    disp(m);
end
% 给特殊区间赋值
A(20:40) = 1;

这种情况下,循环只会遍历你指定的索引,disp(m)只会输出1-19和41-100的数值,完全实现了“跳过20次迭代”的效果。

再补一句:你原来的代码里修改m=m+21之所以没用,就是因为MATLAB的for循环会强制把迭代变量重置为预设数组里的下一个值,手动修改的m只是临时生效,下一次循环就被覆盖了。

内容的提问来源于stack exchange,提问作者will_cheuk

火山引擎 最新活动