You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中如何按交错列分组方式实现矩阵重塑?

高效实现MATLAB矩阵交错列分组重塑

可以利用MATLAB的reshape和permute内置函数实现,完全避免for循环,效率远高于手动循环,尤其适合处理50000×20这类大矩阵。

核心代码

% 假设A是你的50000×20矩阵
B = reshape(permute(reshape(A, size(A,1), 2, []), [1, 3, 2]), [], 2);

代码解释

分步拆解操作逻辑(以你提供的3×6示例矩阵为例):

  1. 拆分列组:reshape(A, size(A,1), 2, []) 将原矩阵拆分为三维数组,维度为 3×2×3。其中第三维度对应"列组",每个切片是原矩阵中连续的两列(比如第一个切片是[1,2;1,2;1,2],第二个是[3,4;3,4;3,4])。
  2. 调整维度顺序:permute(..., [1, 3, 2]) 将三维数组的第二、第三维度交换,得到维度为 3×3×2 的数组。这一步是为了把所有列组的行数据先堆叠在一起。
  3. 最终重塑:reshape(..., [], 2) 将三维数组展开为 9×2 的二维矩阵,正好符合你期望的交错列分组结果。

示例验证

运行以下代码:

A = [1,2,3,4,5,6;
     1,2,3,4,5,6;
     1,2,3,4,5,6];
B = reshape(permute(reshape(A, size(A,1), 2, []), [1,3,2]), [], 2);
disp(B);

输出结果:

1     2
     1     2
     1     2
     3     4
     3     4
     3     4
     5     6
     5     6
     5     6

完全匹配你的预期。

效率优势

MATLAB的内置矩阵操作函数都是底层优化实现的,避免了for循环的解释执行开销。对于50000×20的大矩阵,这种方法的运行速度会比手动循环快几十甚至上百倍,同时内存占用也更高效。

内容的提问来源于stack exchange,提问作者nobody567

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:46:24