本例中如何重塑matlab矩阵?

本例中如何重塑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);

我有一个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);
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相关问题:,