根据Eigen documentation,我希望以下方法能起作用:
#include "Eigen/Dense"
#include "Eigen/Sparse"
SparseMatrix<double> mymatrix = SomeFunctionReturningASparseMatrix();
SparseMatrix<double> test = mymatrix.selfadjointView<Lower>();
但是,出现编译时错误
conversion from 'Eigen::SparseSelfAdjointView<Eigen::SparseMatrix<double>, 2u>' to
non-scalar type 'Eigen::SparseMatrix<double>' requested
我究竟做错了什么?缺少包括吗?
第二个问题:据我所知,Eigen还不支持SparseSelfadjointViews与SparseMatrices的乘法。我是否缺少某些东西,或者实际上没有实现?
最佳答案
您的函数mymatrix.selfadjointView<Lower>()
返回的类型为SparseSelfAdjointView<SparseMatrix<double>, 2u>
的对象,并且您试图将其强制转换为SparseMatrix<double>
的这一行:
SparseMatrix<double> test = mymatrix.selfadjointView<Lower>();
你也应该
#include <SelfAdjointView.h>