如何将稀疏矩阵乘以具有特征的稠密矩阵?

klo*_*oop 2 c++ eigen

我正在尝试用 C++ 中的特征值将稀疏矩阵乘以密集矩阵(尺寸当然匹配)。以下似乎不起作用。

这是一个 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
 }
Run Code Online (Sandbox Code Playgroud)

编辑:这里的页面表明它应该顺利工作,但事实并非如此...... http://eigen.tuxfamily.org/dox/group__TutorialSparse.html

Avi*_*urg 6

您的问题不是稀疏-密集,而是混合类型,Xhich 是不允许的。您的稀疏矩阵是类型,而密集矩阵是(MatrixX Fdouble )类型。将 MatrixXf 更改为 MatrixXd (或转换为 double),效果很好。float