Matlab 将 2D 矩阵转换为 3D 矩阵

Matlab transform 2D matrix to 3D matrix

我有一个二维矩阵 A 比如:

  A = [ 1 2 3 4 5 6;
    7 8 9 10 11 12;
    1 2 3 4 5 6;
    7 8 9 10 11 12;]

我想将此 2D 矩阵转换为大小为 2X3X4 的 3D 矩阵 B,例如:

B(:,:,1) = [1 2 3; 7 8 9];
B(:,:,2) = [1 2 3; 7 8 9];
B(:,:,3) = [4 5 6; 10 11 12];
B(:,:,4) = [4 5 6; 10 11 12];

现在我要做的是首先使用 mat2cell 将此 2D 矩阵 A 转换为单元格类型 C,然后使用 cat 将其转换为 3D 矩阵 B,但它太复杂了,因为我根本不需要这个单元格 C

有人可以给我一些建议,我可以如何将 A 直接优雅地转换为 B 吗?

谢谢!

你可以这样做 -

[m,n] = size(A);
nr = 2; % Number of rows in o/p
nc = 3; % Number of cols in o/p
out = reshape(permute(reshape(A,nr,m/nr,nc,[]),[1,3,2,4]),nr,nc,[]);