我正在将3d矩阵转换为2d矩阵.这是形状变换:[n x m x o] – [n * o x m]. 矩阵的元素与行有关.因此,需要在结果矩阵中具有相同的行. A = rand(2,2,3); 这样做: C = reshape(A, 2*3, 2); 没有将行保留在
矩阵的元素与行有关.因此,需要在结果矩阵中具有相同的行.
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);