【问题标题】:efficiently insert diagonal in sparse matrix in julia在 julia 的稀疏矩阵中有效地插入对角线
【发布时间】:2019-04-08 20:00:48
【问题描述】:

我正在this resource 上研究 EM 计算方法。这些方法使用了大量的big sparse matrices,只有少数对角线设置为非零。所以我的问题是:如何在 Julia 中有效地设置现有矩阵的对角线?

【问题讨论】:

    标签: julia sparse-matrix finite-element-analysis


    【解决方案1】:

    你可以只使用索引赋值:

    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
    

    【讨论】:

    • 是的。 fillband! 函数就是这样做的
    【解决方案2】:

    似乎有一个函数fillband! 用值填充两条对角线之间的空间,但由于某种原因它没有从模块中导出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多