【问题标题】:Reshaping vector to n-d matrix in row-wise order按行顺序将向量重塑为 n-d 矩阵
【发布时间】:2017-12-04 01:57:45
【问题描述】:

我正在尝试以逐行方式将向量转换为 3d 矩阵。

比如我的向量是:

a = 1:18;

我想将其转换为 2x3x3 矩阵:

 b(:,:,1) = [1 2 3; 4 5 6];
 b(:,:,2) = [7 8 9; 10 11 12];
 b(:,:,3) = [13 14 15; 16 17 18];

但是 reshape 函数(即reshape(a, 2,3,3))以列方式排列元素:

val(:,:,1) =

     1     3     5
     2     4     6


val(:,:,2) =

     7     9    11
     8    10    12


val(:,:,3) =

    13    15    17
    14    16    18

如何从向量a中得到矩阵b?

【问题讨论】:

    标签: matlab matrix reshape


    【解决方案1】:

    使用reshapepermute 的组合。

    b = permute(reshape(a,3,2,3),[2 1 3]);
    

    b(:,:,1) =
    
         1     2     3
         4     5     6
    
    
    b(:,:,2) =
    
         7     8     9
        10    11    12
    
    
    b(:,:,3) =
    
        13    14    15
        16    17    18
    

    【讨论】:

    • 谢谢!这比我的解决方案容易。
    【解决方案2】:

    我找到了一个(或那个)解决方案:

    b = permute(reshape(reshape(a,3,[])',2,3,[]), [1,3,2])
    
    b(:,:,1) =
    
     1     2     3
     4     5     6
    
    
    b(:,:,2) =
    
         7     8     9
        10    11    12
    
    
    b(:,:,3) =
    
        13    14    15
        16    17    18
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      相关资源
      最近更新 更多