2011-10-22 115 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