在朱莉娅的稀疏矩阵中有效地插入对角线
efficiently insert diagonal in sparse matrix in julia
我正在 this resource. These methods use a lot of big sparse matrices 上研究 EM 计算方法,只有少数对角线设置为非零。所以我的问题是:如何在 julia 中有效地设置现有矩阵的对角线?
似乎有一个函数 fillband!
用值填充两条对角线之间的 space,但由于某种原因它没有从模块中导出。
您可以只使用索引赋值:
julia> using SparseArrays, LinearAlgebra
julia> S = spzeros(10,10)
10×10 SparseMatrixCSC{Float64,Int64} with 0 stored entries
julia> S[diagind(S)] = rand(10); S
10×10 SparseMatrixCSC{Float64,Int64} with 10 stored entries:
[1 , 1] = 0.2907
[2 , 2] = 0.451863
[3 , 3] = 0.920742
[4 , 4] = 0.0674684
[5 , 5] = 0.587077
[6 , 6] = 0.61916
[7 , 7] = 0.450401
[8 , 8] = 0.596222
[9 , 9] = 0.597324
[10, 10] = 0.210721
我正在 this resource. These methods use a lot of big sparse matrices 上研究 EM 计算方法,只有少数对角线设置为非零。所以我的问题是:如何在 julia 中有效地设置现有矩阵的对角线?
似乎有一个函数 fillband!
用值填充两条对角线之间的 space,但由于某种原因它没有从模块中导出。
您可以只使用索引赋值:
julia> using SparseArrays, LinearAlgebra
julia> S = spzeros(10,10)
10×10 SparseMatrixCSC{Float64,Int64} with 0 stored entries
julia> S[diagind(S)] = rand(10); S
10×10 SparseMatrixCSC{Float64,Int64} with 10 stored entries:
[1 , 1] = 0.2907
[2 , 2] = 0.451863
[3 , 3] = 0.920742
[4 , 4] = 0.0674684
[5 , 5] = 0.587077
[6 , 6] = 0.61916
[7 , 7] = 0.450401
[8 , 8] = 0.596222
[9 , 9] = 0.597324
[10, 10] = 0.210721