我在执行以下任务时遇到问题: 假设一个 3x6 矩阵:
一个=
0.2787 0.2948 0.4635 0.8388 0.0627 0.0435
0.6917 0.1185 0.3660 0.1867 0.2383 0.7577
0.6179 0.7425 0.0448 0.4009 0.9377 0.4821
我想做的是将矩阵分成 block ,像这样:
一个=
0.2787 0.2948 | 0.4635 0.8388 | 0.0627 0.0435
0.6917 0.1185 | 0.3660 0.1867 | 0.2383 0.7577
0.6179 0.7425 | 0.0448 0.4009 | 0.9377 0.4821
并垂直连接这些 block 以获得最终结果:
0.2787 0.2948
0.6917 0.1185
0.6179 0.7425
0.4635 0.8388
0.3660 0.1867
0.0448 0.4009
0.0627 0.0435
0.2383 0.7577
0.9377 0.4821
我想如果我能得到这方面的帮助,那么我也许可以 为任意矩阵 A 做。我可以解决上面的问题 使用 for 循环的问题,但我正在寻找矢量化解决方案。
提前致谢! N.
最佳答案
考虑以下几点:
A = rand(3,6);
blkSz = 2;
C = mat2cell(A, size(A,1), blkSz*ones(1,size(A,2)/blkSz));
C = cat(1,C{:})
这假设 size(A,2)
可以被 blkSz
整除
关于MATLAB - 通过垂直连接子矩阵重新排列矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10904579/