1

根据 Eigen文档,我希望以下工作:

#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 的乘法。我是否遗漏了什么,或者这实际上没有实现?

4

2 回答 2

2

您的函数mymatrix.selfadjointView<Lower>()返回一个类型的对象,SparseSelfAdjointView<SparseMatrix<double>, 2u>并且您试图将其转换为SparseMatrix<double>这一行内的 a:

SparseMatrix<double> test = mymatrix.selfadjointView<Lower>();

你还应该

#include <SelfAdjointView.h>
于 2012-10-21T09:01:59.910 回答
1

Eigen 论坛的成员 ggael 能够回答我的问题。为了完整起见,我将在这里引用他的答案:


对于第一个问题,以下应该做的工作:

 SparseMatrix<double> test; 
 test = mymatrix.selfadjointView<Lower>();

第二,您是对的,不支持此类产品。


原始问题已发布并回答here

于 2012-11-01T05:33:07.467 回答