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