2011-05-24 104 views
1

可能重複:
How to concatenate a number to a variable name in MATLAB?創建 'N' 的矩陣在一個循環

大家好,作爲標題,我想了解是否有人知道如何,在Matlab,在循環中創建「n」個矩陣。

像這樣:

for (i=1:n) 

p_i = P(i, :); 
q_i = Q(i, :); 

A_i = [p_i, p_i', q_i]; 
end 

Matlab的,當然,在重寫基質A_I n倍,但我想有 'I' 的索引n個矩陣。

謝謝你在前進,有一個美好的一天!

+0

重複:如何連接一個數字,在MATLAB變量名?(http://stackoverflow.com/q/2809635/52738),[Matlab的:在另一個變量使用變量的值名稱(HTTP ://stackoverflow.com/q/3346178/52738)[使用MATLAB環funtion命名計算變量(http://stackoverflow.com/q/3143959/52738),[Matlab-如何命名一個新的變量基於其它變量的值?](http://stackoverflow.com/q/3884752/52738) – gnovice 2011-05-24 15:37:21

回答

5

你可以串連一切都變成3D陣列:

A_i = zeros(D1,D2,n); % D1 and D2 are the dimensions of the 2D arrays 
for i = 1:n 
    p_i = P(i,:); 
    q_i = Q(i,:); 
    A_i(:,:,i) = [p_i, p_i', q_i]; 
end 

如果你真心希望n不同的矩陣,那麼您將需要一個cell array。您的代碼會變成類似於:

A_i = cell(1,n); 
for i = 1:n 
    p_i = P(i,:); 
    q_i = Q(i,:); 
    A_i{i} = [p_i, p_i', q_i]; 
end 

請注意,您應該仔細考慮哪個最適合您的需求。一個單元陣列的唯一真正好處是,它允許每個元素是一個不同的數據類型,或不同尺寸的陣列。三維陣列之上二維陣列的單元陣列具有若干優點(你可以總結了它,重塑它,切片三維子塊在它外面,等等)。