Matlab,数组矩阵

时间:2011-10-22 12:38:17

标签: arrays matlab matrix

有3个矩阵A,B,C:

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语法...

2 个答案:

答案 0 :(得分:3)

您可以沿第三维堆叠矩阵:

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

然后您可以访问:

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

如果你想获得1D-vector:

>> 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

答案 1 :(得分: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现在是一个单元阵列,每个单元格包含1x3矩阵。

要访问单元格数组,请使用以下语法:

D{1,1}