多维数组:拆分并放回一起
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
我正在尝试将 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