我使用Apache Commons Math库进行矩阵运算,因为它看起来很完整,尽管它绝对缺乏适当的文档。
import org.apache.commons.math3.linear.SparseFieldMatrix;
//inside a function:
int n = 300;
SparseFieldMatrix Y = new SparseFieldMatrix(ComplexField.getInstance(), n, n);
// some code to fill values into Y
我见过方法Y.walkInRowOrder(FieldMatrixChangingVisitor<Complex>() );
,我想我做了我想做的事情:列出包含每行元素的列。
但是我不知道如何使用它,因为FieldMatrixChangingVisitor
无法实例化。什么是正确的方法?
答案 0 :(得分:1)
尽管投票结果为负,但我认为这是一个合法的问题,我在大量代码阅读后找到了答案。
答案是,使用公共数学库的稀疏实现,不可能找到存储的稀疏矩阵的非零元素。相反,您需要循环所有行和列以“重新发现”哪些元素不为零(换句话说,哪些elmenet在内部存储结构中)。
因此,如果您正在阅读此内容,请考虑构建一个结构来映射您的稀疏矩阵索引,或者更改为另一个稀疏代数库。