2012-04-04 32 views
0

有没有什么办法在自定义步骤中使用MATLAB中的for-loop?我想要做的是遍历所有小于给定数字的2的权力。在C等效回路++(例如)将是:For循环与MATLAB中的乘法步骤

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

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

回答

4

也许你想沿着

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 
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