我试图将稀疏矩阵乘以C ++中Eigen中的密集矩阵(当然匹配的维度)。以下似乎不起作用。
这是一个MWE:
#include <Eigen/Dense>
#include <Eigen/Sparse>
using namespace Eigen;
int main()
{
SparseMatrix<double> s;
s.resize(3,3);
MatrixXf d(3,3);
MatrixXf d2(3,3);
// gives an error
s*d
// doesn't give an error
d*d2
}
编辑:这里的页面表明它应该顺利运行,但它不会...... http://eigen.tuxfamily.org/dox/group__TutorialSparse.html
答案 0 :(得分:2)
你的问题不是稀疏密集,而是混合类型,不允许使用Xhich。稀疏矩阵的类型为double
,而密集矩阵的类型为float
(MatrixX F )。将MatrixXf更改为MatrixXd(或转换为double),它可以正常工作。