多维数组:拆分并放回一起

Multidimensional array : Split and put back together

我正在尝试将 3 维数组 "upside-down" 转换为:

我试过inverse函数,但是如果我们用数学术语看逆运算,它给了我们另一个结果。我需要在不更改数组中的数据的情况下转动。怎么做?

为了将 3 维数组 (A x B x C) 拆分为 A 子数组 (2d, B x C) 我使用了 squeeze: k=squeeze(array(n,:,:))。现在我有一个大小为 B x C 的二维数组。如何将它们放回原处(在 3 维数组中)?

可以使用permute()改变维度的顺序,可以作为多维转置。

然后将2D矩阵转换为3D矩阵是一个简单的索引操作。阅读更多索引 here.

A = rand(10,10,10);
B = permute(A, [ 3 2 1 ]);  % Permute he order of dimensions

mat1 = rand(10,10);
mat2 = rand(10,10);
mat_both(:,:,2) = mat2; % Stack 2D matrices along the third dimension
mat_both(:,:,1) = mat1;

mat_both = cat(3,mat1, mat2);  % Stacks along the third dimension in a faster way