2011-10-22 80 views
2

的矩陣有3點矩陣A,B,C:MATLAB,陣列

A=[0 1;2 3] 
B=[4 5;6 7] 
C=[8 9;10 11] 

如何創建一個新的矩陣d(2,2),以便作爲其元素是一種類型的陣列

D = [{A(1,1), B(1,1), C(1,1)} {{A(1,2), B(1,2), C(1,12}; 
    {A(2,1), B(2,1), C(2,1)} {A(2,2), B(2,2), C(2,2)}] 

例如:使用操作員d(1,1)給出結果

0,4,8

托架{}僅是說明性的,並不代表一個matlab語法...

回答

1

你幾乎有:

D = [{[A(1,1), B(1,1), C(1,1)]} {[A(1,2), B(1,2), C(1,2)]}; 
    {[A(2,1), B(2,1), C(2,1)]} {[A(2,2), B(2,2), C(2,2)]}] 

(你看到增設分支機構?)現在

d是一個單元陣列,包含1×3矩陣中的每個細胞。

要訪問單元陣列使用此語法:

D{1,1} 
3

你可以堆疊矩陣沿第三維:

D = cat(3,A,B,C); 

然後,你可以作爲訪問:

>> D(1,1,:) 
ans(:,:,1) = 
    0 
ans(:,:,2) = 
    4 
ans(:,:,3) = 
    8 

如果你想得到一維矢量:

>> squeeze(D(1,1,:))  %# or: permute(D(1,1,:),[1 3 2]) 
ans = 
    0 
    4 
    8 

如果你喜歡使用電池陣列,這裏是建設成爲一個更簡單的方法:

D = cellfun(@squeeze, num2cell(cat(3,A,B,C),3), 'UniformOutput',false); 

能夠作爲訪問:

>> D{1,1} 
ans = 
    0 
    4 
    8