【问题标题】:Reshape matrix from 3d to 2d keeping specific order将矩阵从 3d 重塑为 2d,保持特定顺序
【发布时间】:2015-09-27 16:12:25
【问题描述】:

我想将 4x3x5 形式的矩阵调整为 20x3 的二维矩阵,但同时保留如下所示的顺序:

函数reshape() 没有保持这个特定的顺序,我怎样才能以最简单的方式实现呢?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    让我们一劳永逸地解决这些连接和跨越三维的问题!

    第一部分(3D 到 2D): 沿列连接并穿过 3D 数组 A 的 3rd 暗淡以形成 2D 数组 -

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

    第二部分(2D 到 3D): 在每个 N 行之后剪切一个 2D 数组 B 以形成 3D 切片的 3D 数组 -

    permute(reshape(B,N,size(B,1)/N,[]),[1 3 2])
    

    示例运行 -

    第一部分(3D 到 2D)

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

    第二部分(2D 到 3D)

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

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 2011-01-16
      • 2021-09-14
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      相关资源
      最近更新 更多