2015-06-23 230 views
0

我想用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

回答

2

你的问题是不疏,密,但是混合类型,Xhich是不允许的。您的稀疏矩阵类型为double,而密集矩阵类型为float(MatrixX F)。将MatrixXf更改为MatrixXd(或强制转换为double),并且工作正常。