对于MATLAB中的乘法步骤的循环

时间:2012-04-04 21:57:38

标签: matlab syntax for-loop octave

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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