如何使用 hmatrix 乘以稀疏矩阵

How to multiply sparse matrices using hmatrix

我有一个维度 3329×3329 的矩阵 m,其中有很多零字段,我想计算 m^9。 在尝试使用 matrix 包(Data.Matrix 很容易使用)之后,我认为稀疏矩阵可以更好地表示内存使用情况和计算速度。所以我想弄清楚如何使用 hmatrix 包。我已经设法创建了一个稀疏矩阵:

module Example where

import Numeric.LinearAlgebra as LA

assocExample :: AssocMatrix
assocExample = [((0,0), 1),((3329,5),1)]

sparseExample :: GMatrix
sparseExample = LA.mkSparse assocExample

此时我的问题似乎是我有一个 GMatrix,但是对于乘法运算符 (<>),我需要一个 Matrix t。 通过查看关于 hackage 的 hmatrix 文档,我没有弄清楚如何在此处获得 Matrix t

我也快速浏览了 introduction to hmatrix,但其中甚至没有提到术语 sparse

我的直觉是这应该很容易做到,但我遗漏了一些简单的东西。

据我所知,稀疏矩阵在 hmatrix 中还很年轻。查看文档似乎没有稀疏矩阵的产品。你必须自己实现它。

编辑:如果您这样做了,请在此处发表评论:https://github.com/albertoruiz/hmatrix/issues/162(也证实了我上面的陈述)