2015-07-05 78 views
0

我得到了以下問題:在我的代碼中,我想在for循環中使用矩陣-...-矩陣向量。在每一個循環中,我都希望獲得一個附加的矩陣來與之相乘,例如我= 1:P1 * Z和我= 2:P1 * P2 * Z等這是我的代碼到目前爲止。顯然,這只是計算:I = 1:P1 * Z,I = 2:P2 * Z等..matlab:在for循環中創建附加變量

for ii = 1:10 
    % Projection on last_z 
    projected_last_z = projection(:,:,ii) * last_z; 
end 

回答

1

它通常被認爲是不好的做法,在一個循環中創建新的變量,只要你想。更好地收集在一個cell array左右所有的結果:

n = 10; 
results = cell(1, n); % preallocate some space 
for i = 1:n 
    results{i} = some_calculation(i); 
end; 

然後你可以檢索使用results{k}第k次迭代的結果。

+1

最終的結果,那豈不是更好完全刪除該循環? –

+0

是的,但我的問題有點不同。我必須再次計算結果。在我的for循環結束時計算3D矩陣投影。 –

1

你必須做,如果你想保留的結果

在同一個變量總是計算值
n = 10; 
projected_last_z = 1; 
for ii = 1:n 
    projected_last_z = projected_last_z * projection(:,:,ii); 
end 
projected_last_z = projected_last_z * last_z; 

循環是

環1:projected_last_z = P1

環2 :projected_last_z = P1 * P2

...

環10:projected_last_z = P1 * P2 * ... * P10

然後你乘以last_z