我正在尝试用 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
您的问题不是稀疏-密集,而是混合类型,Xhich 是不允许的。您的稀疏矩阵是类型,而密集矩阵是(MatrixX Fdouble )类型。将 MatrixXf 更改为 MatrixXd (或转换为 double),效果很好。float