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

在Julia中如何构造块对角矩阵 等效于scipy.linalg.block_diag功能

Julia构造重复块对角矩阵的实现方法

Julia有和scipy的scipy.linalg.block_diag完全等效的功能,还有其他更简洁的实现方式,具体如下:

  • 方法1:使用标准库LinearAlgebra自带的blockdiag函数
    这个函数的功能和scipy的对应函数完全一致,直接传入所有要放在对角的矩阵即可。如果要重复k次矩阵A,可以配合fill和splat运算符...使用:
    using LinearAlgebra
    A = [1 2; 3 4] # 你的原始矩阵
    k = 3 # 块对角上A的重复次数
    M = blockdiag(fill(A, k)...)
    
  • 方法2:使用克罗内克乘积实现
    不需要拼接多个参数,直接对k阶单位矩阵和A做克罗内克乘积即可得到目标矩阵,默认返回稀疏矩阵,需要稠密矩阵的话可以转换格式:
    using LinearAlgebra
    A = [1 2; 3 4]
    k = 3
    # 返回稀疏矩阵
    M_sparse = kron(I(k), A)
    # 转换为稠密矩阵
    M_dense = Matrix(kron(I(k), A))
    

两种方法得到的矩阵结构完全一致,都满足需求的块对角要求,对角位置都是A,其余位置是和A同尺寸的零矩阵。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 22:36:03