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

MATLAB是否有矩阵直和函数?若无该如何快速实现?

MATLAB中矩阵直和的实现方法

MATLAB没有专门用于计算矩阵直和的内置函数,但可以通过几种简洁高效的方式实现这个运算。

先看你的示例矩阵:

A = [1 2 3
     3 4 5];
B = [5 6
     7 8
     9 8];

我们需要得到的直和结果为:

directSum(A,B) = [1 2 3 0 0
                  3 4 5 0 0
                  0 0 0 5 6
                  0 0 0 7 8
                  0 0 0 9 8];

下面是几种快速实现的方法:

方法1:自定义分块拼接函数

这是最直观的实现方式,通过构造全零矩阵,再将A、B分别填入对角区域:

function C = directSum(A,B)
    [m1,n1] = size(A);
    [m2,n2] = size(B);
    C = zeros(m1+m2, n1+n2);
    C(1:m1, 1:n1) = A;
    C(m1+1:end, n1+1:end) = B;
end

调用directSum(A,B)就能得到目标矩阵,逻辑清晰,容易理解。

方法2:使用内置blkdiag函数

MATLAB的blkdiag函数本身就是用来构造对角分块矩阵的,完全匹配矩阵直和的定义,这是最简洁的实现方式:

C = blkdiag(A,B);

如果需要对多个矩阵求直和,直接传入所有参数即可,比如blkdiag(A,B,C)就能得到A⊕B⊕C的结果。

方法3:利用克罗内克积(Kronecker Product)

借助克罗内克积的数学性质,也能实现直和运算,适合用来理解两者的关系:

C = kron(A, eye(size(B,1), size(B,2))) + kron(eye(size(A,1), size(A,2)), B);

不过这种方法的计算效率不如前两种,实际场景中优先选择前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:30:52