我知道Eigen中的稀疏矩阵是用四个数组实现的:值, InnerIndices , OuterStarts 和 InnerNNZs 。有没有办法可以直接获得这些数组。如果没有,这样做的方法是什么?
一种实用的方法是在迭代稀疏矩阵时自己创建 OuterStarts 数组:
for(int k=0;k<mat.outerSize();++k)
{
for(SparseMatrix<double>::InnerIterator it(mat,k);it;++it)
{
//add counter here and get index by it.row()
cout << it.value() << endl;
}
}
答案 0 :(得分:2)
When in compressed form:
m.valuePtr() // non zero value array. Size is the number of non zeros
m.outerIndexPtr() // array of outer indices. Size is the number of rows/columns
m.innerIndexPtr() // array of inner indices. Size is the number of non zeros