根据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>

10-04 14:54