Julia 如何使用选定的值创建SymBandedMatrix?

Julia 如何使用选定的值创建SymBandedMatrix?,julia,Julia,使用该软件包,是否有方法使用选定的值创建SymBandedMatrix?文档中有各种各样的构造函数,但似乎都不接受输入值。而且没有实现索引。这是故意的还是还没有做 julia> using BandedMatrices julia> a = BandedMatrices.SymBandedMatrix(Float64,5,1) 5×5 BandedMatrices.SymBandedMatrix{Float64}: 6.90681e-310 6.90681e-310

使用该软件包,是否有方法使用选定的值创建
SymBandedMatrix
?文档中有各种各样的构造函数,但似乎都不接受输入值。而且没有实现索引。这是故意的还是还没有做

julia> using BandedMatrices

julia> a = BandedMatrices.SymBandedMatrix(Float64,5,1)
5×5 BandedMatrices.SymBandedMatrix{Float64}:
 6.90681e-310  6.90681e-310                                          
 6.90681e-310  6.90682e-310  6.90682e-310                            
               6.90682e-310  6.90682e-310  6.90681e-310              
                             6.90681e-310  6.90681e-310  6.90681e-310
                                           6.90681e-310  6.90684e-310

julia> a[1,1]=1
ERROR: indexing not defined for BandedMatrices.SymBandedMatrix{Float64}
Stacktrace:
 [1] setindex!(::BandedMatrices.SymBandedMatrix{Float64}, ::Int64, ::Int64, ::Int64) at ./abstractarray.jl:966

以下可能是未经抛光的解决方案:

Base.setindex!(M::SymBandedMatrix,val,r,c) = 
  ( (a,b) = minmax(r,c) ; M.data[M.k+a-b+1,b-a+1]=val )
就问题中的代码给出:

julia> a = BandedMatrices.SymBandedMatrix(Float64,5,1)
5×5 BandedMatrices.SymBandedMatrix{Float64}:
 6.36578e-310  6.36578e-310                                          
 6.36578e-310  6.36578e-310  6.36577e-310                            
               6.36577e-310  6.36577e-310  6.36577e-310              
                             6.36577e-310  6.36577e-310  6.36578e-310
                                           6.36578e-310  6.36577e-310

julia> Base.setindex!(M::SymBandedMatrix,val,r,c) = 
         ( (a,b) = minmax(r,c) ; M.data[M.k+a-b+1,b-a+1]=val )

julia> a[1,1]=1
1

julia> a
5×5 BandedMatrices.SymBandedMatrix{Float64}:
 1.0           6.36578e-310                                          
 6.36578e-310  6.36578e-310  6.36577e-310                            
               6.36577e-310  6.36577e-310  6.36577e-310              
                             6.36577e-310  6.36577e-310  6.36578e-310
                                           6.36578e-310  6.36577e-310