【问题标题】:How can I store a matrix in a row of another matrix? MATLAB如何将矩阵存储在另一个矩阵的一行中? MATLAB
【发布时间】:2015-12-28 01:50:01
【问题描述】:

我有一个 3D 矩阵,我想将它的每个 2D 分量存储在另一个 2D 矩阵的行中,该矩阵有许多行作为 3D 矩阵的第 3 维。

我该怎么做?

【问题讨论】:

    标签: matlab matrix multidimensional-array


    【解决方案1】:

    permute & reshape -

    reshape(permute(A,[3 2 1]),size(A,3),[])
    

    示例运行 -

    >> A
    A(:,:,1) =
         7     1     7     5
         3     4     8     5
         9     4     2     6
    A(:,:,2) =
         7     7     2     4
         7     6     5     6
         3     2     9     3
    A(:,:,3) =
         7     7     5     3
         3     9     2     8
         5     9     2     3
    >> reshape(permute(A,[3 2 1]),size(A,3),[])
    ans =
         7     1     7     5     3     4     8     5     9     4     2     6
         7     7     2     4     7     6     5     6     3     2     9     3
         7     7     5     3     3     9     2     8     5     9     2     3
    

    【讨论】:

    • 感谢您的帮助:)
    • 这也是我的首选方法!
    【解决方案2】:

    如果你不介意一点索引的疯狂......

    您可以使用appropriate shape 构建linear index,将其应用于原始数组将产生所需的结果:

    B = A(bsxfun(@plus, (1:L*M:L*M*N).', reshape(bsxfun(@plus, (0:L:L*M-1).', 0:L-1),1,[])));
    

    例子:

    >> A = randi(10,2,3,4)-1; %// example array; size 2x3x4
    >> A
    A(:,:,1) =
         5     3     2
         9     8     9
    A(:,:,2) =
         8     7     4
         9     8     6
    A(:,:,3) =
         3     4     8
         0     4     4
    A(:,:,4) =
         2     8     8
         4     6     7
    

    结果:

    >> B
    B =
         5     3     2     9     8     9
         8     7     4     9     8     6
         3     4     8     0     4     4
         2     8     8     4     6     7
    

    【讨论】:

    • 非常感谢 Luis,顺便说一句,您今年一直是我的 CMOV 老师。我很高兴和我的老师在同一个论坛:DDD
    【解决方案3】:

    使用 MATLAB 矩阵展开语法很容易做到这一点:

    A=ones(N,M,O);
    B=zeros(O,N*M);
    
    for ii=1:size(A,3)
        aux=A(:,:,ii);       % aux is NxM   
        B(ii,:)=aux(:);      % unroll!
    end
    

    (注意我叫O你在你的照片中叫N

    【讨论】:

    • 有了这个,我将矩阵 A 的分量存储在矩阵 B 的列中。无论如何,非常感谢你 ;)
    • @Traker 改变了!不过,其他答案更好;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多