有没有办法在 MATLAB 中通过自定义步骤使用 for 循环?我想要做的是遍历小于给定数字的 2 的所有幂。C++ 中的等效循环(例如)将是:
for (int i = 1; i < 65; i *= 2)
注 1:这是最适合 for 循环的迭代,所以我不想使用 while 循环。
注 2:我实际上使用的是 Octave,而不是 MATLAB。
也许你想要一些类似的东西
for i=2.^[1:6]
disp(i)
end
除了你需要弄清楚指数的范围。这使用了这样一个事实,因为
a_(i+1) = a_i*2
这可以重写为a_i = 2^i
.
否则,您可以执行以下操作
i=1;
while i<65
i=i*2;
disp(i);
end
您可以迭代任何向量,因此您可以在开始循环之前使用向量操作来创建值向量。例如,前 100 个平方数的循环可以这样写:
values_to_iterate = [1:100].^2;
for i = values_to_iterate
i
end
或者您可以遍历向量中的每个位置values_to_iterate
(这给出了相同的结果,但有一个好处是i
可以跟踪您已经完成了多少次迭代 - 如果您将每个循环的结果顺序写入输出向量,这很有用) :
values_to_iterate = [1:100].^2;
for i = 1:length(values_to_iterate)
values_to_iterate(i)
results_vector(i) = some_function( values_to_iterate(i) );
end
更简洁地说,您可以简单地编写第一个示例:
for i = [1:100].^2
i
end
与 C 不同,不必有一个“规则”来从一个值到下一个值。迭代的向量可以是完全任意的:
for i = [10, -1000, 23.3, 5, inf]
i
end