【问题标题】:Matlab, matrix of arraysMatlab,数组矩阵
【发布时间】:2011-10-22 12:38:17
【问题描述】:

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

【问题讨论】:

    标签: arrays matlab matrix


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

      你快到了:

      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}
      

      【讨论】:

        猜你喜欢
        • 2010-10-02
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2015-02-11
        相关资源
        最近更新 更多