本例中如何重塑matlab矩阵?
我有一个40x16矩阵或8 5x16矩阵,一个低于另一个,即垂直对齐。 我想从中得到一个5x128矩阵,这样我就可以水平对齐8个5x16矩阵。 是否有一种高效/快速(而不是硬编码for循环)的方法来实现这一点本例中如何重塑matlab矩阵?,matlab,matrix,reshape,Matlab,Matrix,Reshape,我有一个40x16矩阵或8 5x16矩阵,一个低于另一个,即垂直对齐。 我想从中得到一个5x128矩阵,这样我就可以水平对齐8个5x16矩阵。 是否有一种高效/快速(而不是硬编码for循环)的方法来实现这一点 我希望单个5x16矩阵保持完整。考虑使用重塑功能:。这应该可以。假设您的矩阵是A(40x16) 下面是一种使用重塑的方法: m = 5; n = 8; p = 16; B = reshape(permute(reshape(A', p, m, n), [2 1 3]), m, n*p);
我希望单个5x16矩阵保持完整。考虑使用
重塑功能:。这应该可以。假设您的矩阵是A
(40x16)
下面是一种使用重塑的方法:
m = 5; n = 8; p = 16;
B = reshape(permute(reshape(A', p, m, n), [2 1 3]), m, n*p);
m = 5; n = 8;
B = cell2mat(arrayfun(@(i) A(m*(i-1)+1:m*i, :), 1:n, 'UniformOutput', false));
B将使八个5x16矩阵挨在一起,完好无损
这里有一种没有重塑的方法:
m = 5; n = 8; p = 16;
B = reshape(permute(reshape(A', p, m, n), [2 1 3]), m, n*p);
m = 5; n = 8;
B = cell2mat(arrayfun(@(i) A(m*(i-1)+1:m*i, :), 1:n, 'UniformOutput', false));
您可以使用MAT2CELL将大矩阵划分为小矩阵,然后沿所需的尺寸合并:
A = rand(8*5,16);
blkSz = 5;
C = mat2cell(A, blkSz*ones(1,size(A,1)/blkSz), size(A,2));
C = cat(2,C{:})
将3×4矩阵重塑为2×6矩阵。
A=
1 4 7 10
2 5 8 11
36912
B=重塑(A,2,6)
B=
1 3 5 7 9 11
2 4 6 8 10 12
B=重塑(A,2,[]))
B=
1 3 5 7 9 11
2 4 6 8 10 12相关问题:,