MATLAB - 通过垂直连接子矩阵重新排列矩阵

标签 matlab matrix

我在执行以下任务时遇到问题: 假设一个 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/

相关文章:

python - rpy2 转换矩阵 -> DataFrame

python - 由列表推导式形成的矩阵和乘以列表元素之间的区别?

c++ - 如何顺时针打印二维矩阵?

matlab - 计算两个矩阵中每个行组合之间的距离

matlab - 概率密度函数的理论图

matlab - 如何在 Matlab 中比较两个未排序的列表?

matlab - 具有解边界的 fsolve

matlab - 你如何在 MATLAB 中生成双音频率?

matlab - 在 MATLAB 中求解指数方程

python - 使用Python读取矩阵文件(mtx): not enough values to unpack