我想使用稀疏矩阵和稀疏向量设置稀疏矩阵的列。试图检查相关文件,但我在这部分陷入困境。这可能吗? 如果有帮助的话,我正在与阴谋集团一起建设。我可以更改/添加库,只要它们可以处理稀疏矩阵和向量组合即可。
import Data.Sparse.SpMatrix
import Data.Sparse.SpVector
import Numeric.LinearAlgebra.Sparse
main :: IO ()
main = do
let m1 = fromListSM (3,3)
[(0,0,1)
,(1,1,2)
,(2,2,3)
] :: SpMatrix Double
let v = fromListSV 3 [(0,1),(1,4),(2,9)] :: SpVector Double
let m2 = ...
我如何在这里定义
m2
才能使其发挥作用?它应该就像m1
一样,但中间的柱子换成v
。
在此示例中,
m2
的预期结果是
1 1 _
_ 4 _
_ 9 3
我没有看到使用
sparse-linear-algebra
中基于矩阵的 API 来执行此操作的明显好方法。但是,构造函数是导出的,您可以清楚地看到 SpMatrix
只是一个具有维度的 IntMap (IntMap a)
,而 SpVector
只是一个具有维度的 IntMap a
。因此,如果您找不到任何更聪明的方法,您可以直接进入内部并将您想要的行insert
放入底层地图中。