MATLAB - 条件是每 x 次循环只做一次

MATLAB - Condition to do something only once every x number of loops

我正在尝试将 z 的值更改为 +1750、1500、2250 等 循环,这就是我写的:

len = 1500000;
y = 750;
z = 1;
for i = 1:len
    if (i == [y.*(1:2000)])
        z = z + 1;
    end
end

为什么 z 的值没有变化?有人可以告诉我我的 if 陈述有什么问题吗?

MATLAB 只认为一个数组是true 如果 所有元素都是true。因此,考虑到这一点,如果我们查看您的 if 语句

的条件
i == (y .* (1:2000))

这个 returns 是一个包含 2000 个值的数组,其中它们要么都是 false(在 i 不是 y 的倍数的情况下)和所有 false 除了一个 true 值。即使有一个 true,它仍然计算为 false 并且您的 if 语句将永远不会被计算。

更好的方法是使用 mod 检查给定的 i 是否是 y

的倍数
if mod(i, y) == 0
    z = z + 1;
end

但是,如果循环的唯一内容就是您所显示的内容,那么您可以简单地省略您不关心的迭代

for i = y:y:len
    z = z + 1;
end

如果你真的想像你展示的那样比较数组,你最好在循环外计算 y .* 1:2000 然后使用 ismember 看看是否 i 在数组中

tmp = y .* (1:2000);

for i = 1:len
    if ismember(i, tmp)
        z = z + 1;  
    end
end