2012-04-04 31 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