如何在Eigen中将稀疏矩阵转换为密集矩阵

20

有没有一种简单快速的方法将稀疏矩阵转换为双精度密集矩阵?

因为我的 SparseMatrix 经过一些矩阵乘积之后不再是稀疏的,而变成了密集的。

我还有一个问题:Eigen库具有极佳的性能,这是怎么实现的呢?我不明白为什么,因为只有头文件,没有编译源码。


2
性能与代码是放在.h文件还是.cpp文件中有什么关系? - us2012
3
要理解Eigen如何工作以及它的快速性,建议查看它们的文档(例如What happens inside),并阅读一本关于高级C++和模板编程的书籍。如果在此之后仍然对其工作原理的某些细节不确定,建议删除此问题并发布一个新的问题。 - sgvd
1个回答

47

我们声明两个矩阵:

SparseMatrix<double> spMat;
MatrixXd dMat;

从稀疏到稠密:

dMat = MatrixXd(spMat);

从密集到稀疏:

spMat = dMat.sparseView();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接