C++ 特征:使用SparseMatrix';s自伴随视图
根据Eigen的说法,我希望以下方法能够奏效:C++ 特征:使用SparseMatrix';s自伴随视图,c++,sparse-matrix,eigen,C++,Sparse Matrix,Eigen,根据Eigen的说法,我希望以下方法能够奏效: #include "Eigen/Dense" #include "Eigen/Sparse" SparseMatrix<double> mymatrix = SomeFunctionReturningASparseMatrix(); SparseMatrix<double> test = mymatrix.selfadjointView<Lower>(); #包括“本征/密集” #包括“特征/稀疏” Spar
#include "Eigen/Dense"
#include "Eigen/Sparse"
SparseMatrix<double> mymatrix = SomeFunctionReturningASparseMatrix();
SparseMatrix<double> test = mymatrix.selfadjointView<Lower>();
#包括“本征/密集”
#包括“特征/稀疏”
SparseMatrix mymatrix=SomeFunctionReturningASparseMatrix();
SparseMatrix test=mymatrix.selfadjointView();
但是,我得到了编译时错误
conversion from 'Eigen::SparseSelfAdjointView<Eigen::SparseMatrix<double>, 2u>' to
non-scalar type 'Eigen::SparseMatrix<double>' requested
从“Eigen::SparseSelfAdjointView”转换为
已请求非标量类型“Eigen::SparseMatrix”
我做错了什么?遗漏包括
第二个问题:据我所知,Eigen还不支持SparseSelfadjointViews与SparseMetrices的乘法。我是否遗漏了什么,或者这实际上没有实现 您的函数
mymatrix.selfadjointView()
返回类型为SparseSelfAdjointView
的对象,您试图在此行中将其转换为SparseMatrix
:
SparseMatrix<double> test = mymatrix.selfadjointView<Lower>();
SparseMatrix test=mymatrix.selfadjointView();
你也应该
#include <SelfAdjointView.h>
#包括
Eigen论坛的成员ggael能够回答我的问题。为了完整起见,我将在这里引用他的回答:
对于第一个问题,应执行以下操作:
SparseMatrix<double> test;
test = mymatrix.selfadjointView<Lower>();
SparseMatrix测试;
test=mymatrix.selfadjointView();
其次,你是对的,这种产品不受支持
原始问题已发布并回答。感谢您的输入。我很清楚我在那里做演员。然而,根据我在第一篇文章中链接的文档,Eigen应该明确允许这种转换。此外,据我所知,
SelfAdjointView.h
是关于密集的自伴视图,而不是稀疏的自伴视图。我看到的是,您的SelfAdjointView
对象可以与SparseMatrix
对象相乘。。。看这里,在页面的底部,我看到的是密集矩阵对象的乘法,置换和复制操作。据我所知,我正在进行复制操作。