我正在将 3d 矩阵转换为 2d 矩阵。这是形状变换:[n x m x o] -> [n*o x m]。
矩阵的元素与行相关。因此,结果矩阵中需要具有相同的行。
A = rand(2,2,3);
这样做:
C = reshape(A, 2*3, 2);
不保留 A 中的行。
所以我这样做:
B = zeros(size(A,1)*size(A,3),size(A,2));
first_indice = 1;
for i = 1:size(A,3)
B(first_indice:size(A,1)*i,:)=A(:,:,i);
first_indice = first_indice + size(A,1);
end
有没有更有效的方法可以使用重塑?
多谢!
reshape 组合从第一维开始的矩阵元素。因此,解决方案是在重塑之前排列尺寸。在你的情况下,它应该如下所示:
% A is the input matrix of dimensions (n x m x o).
B = ipermute(A, [1 3 2]);
C = reshape(B, n*o, m);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)