0

有没有办法在 MATLAB 中通过自定义步骤使用 for 循环?我想要做的是遍历小于给定数字的 2 的所有幂。C++ 中的等效循环(例如)将是:

for (int i = 1; i < 65; i *= 2)

注 1:这是最适合 for 循环的迭代,所以我不想使用 while 循环。
注 2:我实际上使用的是 Octave,而不是 MATLAB。

4

2 回答 2

5

也许你想要一些类似的东西

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
于 2012-04-04T22:15:03.433 回答
3

您可以迭代任何向量,因此您可以在开始循环之前使用向量操作来创建值向量。例如,前 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
于 2012-04-04T22:19:40.173 回答