在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
相关产品推荐
相关产品推荐

