Matlab 按行顺序将向量重塑为n-d矩阵

Matlab 按行顺序将向量重塑为n-d矩阵,matlab,matrix,reshape,Matlab,Matrix,Reshape,我正在尝试以行方式将向量转换为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]; 但是整形功能(即,整形(a,2,3,3))以列方式排列元素,如下所示: val(:,:,1) = 1 3 5 2 4 6 val(:,:,2

我正在尝试以行方式将向量转换为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];
但是整形功能(即,
整形(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?

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

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
使用和的组合


谢谢这比我的解决方案简单。
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