Matlab 按行顺序将向量重塑为n-d矩阵
我正在尝试以行方式将向量转换为3d矩阵 例如,我的向量是: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
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