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

Matlab实现4x4矩阵转多组2x2子矩阵并存入单个变量

Matlab 4×4矩阵拆分2×2子矩阵精简实现

方法1:mat2cell(最直观易读,代码极简)

这是最直接的实现方式,利用Matlab内置的矩阵拆分函数完成:

% 定义示例4×4矩阵(替换为你的目标矩阵A即可)
A = magic(4);
% 拆分并存入cell变量subMats
subMats = mat2cell(A, [2,2], [2,2]);
  • 结果:subMats是2×2的cell数组,每个元素对应一个2×2子矩阵:
    • subMats{1,1} = 左上块(A(1:2,1:2))
    • subMats{1,2} = 右上块(A(1:2,3:4))
    • subMats{2,1} = 左下块(A(3:4,1:2))
    • subMats{2,2} = 右下块(A(3:4,3:4))

方法2:一行代码极致精简(维度重排法)

如果追求最少代码行数,可通过维度重排+cell转换实现:

subMats = reshape(num2cell(reshape(A,2,2,[]),[1,2]),2,2);
  • 逻辑拆解:
    1. reshape(A,2,2,[]):将4×4矩阵重排为2×2×4的三维数组,每个2×2切片对应一个子矩阵
    2. num2cell(...,[1,2]):将每个2×2切片转为独立的cell元素,得到1×4的cell数组
    3. reshape(...,2,2):将1×4的cell数组转为2×2结构,和方法1的输出格式一致

额外提示

如果需要将子矩阵按一维顺序存储(而非2×2结构),可简化为:

subMats = num2cell(reshape(A,2,2,[]),[1,2]);

此时subMats是1×4的cell数组,子矩阵顺序为左上→右上→左下→右下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:18:17