Matrix 在Julia中将多个参数作为一个参数传递

Matrix 在Julia中将多个参数作为一个参数传递,matrix,julia,sparse-matrix,block,diagonal,Matrix,Julia,Sparse Matrix,Block,Diagonal,我试图在Julia中制作一个对角块矩阵。我有一个nxn数组,我想将其作为对角线下的块矩阵进行P复制,矩阵的其余部分是稀疏的 如果arr是我的数组,我知道我可以使用: blockdiag(sparse(arr),sparse(arr)) 创建一个沿对角线方向具有p=2个阵列副本的块 但是,对于较大的p,如何使用变量p以常规方式执行此操作 我尝试制作一个数组(nxnxP),但是BlockDiag()不接受3D数组。fill可以重复元素,而无需实际制作副本。 因此,您只需执行以下操作: blockd

我试图在Julia中制作一个对角块矩阵。我有一个
nxn
数组,我想将其作为对角线下的块矩阵进行
P
复制,矩阵的其余部分是稀疏的

如果
arr
是我的数组,我知道我可以使用:

blockdiag(sparse(arr),sparse(arr))
创建一个沿对角线方向具有p=2个阵列副本的块

但是,对于较大的p,如何使用变量
p
以常规方式执行此操作


我尝试制作一个数组(
nxnxP
),但是
BlockDiag()
不接受3D数组。

fill
可以重复元素,而无需实际制作副本。 因此,您只需执行以下操作:

blockdiag(fill(sparse(arr), 2)...)
以下是完整的Julia课程:

julia> using SparseArrays

julia> arr=Matrix(sprand(Float64,3,3,0.25))
3×3 Matrix{Float64}:
 0.0       0.016897  0.0
 0.219705  0.0       0.0
 0.0       0.0       0.893547


julia> blockdiag(fill(sparse(arr), 2)...)
6×6 SparseMatrixCSC{Float64, Int64} with 6 stored entries:
  ⋅        0.016897   ⋅         ⋅         ⋅         ⋅
 0.219705   ⋅         ⋅         ⋅         ⋅         ⋅
  ⋅         ⋅        0.893547   ⋅         ⋅         ⋅
  ⋅         ⋅         ⋅         ⋅        0.016897   ⋅
  ⋅         ⋅         ⋅        0.219705   ⋅         ⋅
  ⋅         ⋅         ⋅         ⋅         ⋅        0.893547

这正是我想要的!!非常感谢你。Varargs函数