Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 特征:使用SparseMatrix';s自伴随视图_C++_Sparse Matrix_Eigen - Fatal编程技术网

C++ 特征:使用SparseMatrix';s自伴随视图

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

根据Eigen的说法,我希望以下方法能够奏效:

#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
对象相乘。。。看这里,在页面的底部,我看到的是密集矩阵对象的乘法,置换和复制操作。据我所知,我正在进行复制操作。