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

私は何を間違っていますか?インクルードがありませんか?

2 番目の質問: 私が見つけた限りでは、Eigen は SparseSelfadjointViews と SparseMatrices の乗算をまだサポートしていません。何か不足していますか、それとも実際には実装されていませんか?

4

2 に答える 2

2

あなたの関数mymatrix.selfadjointView<Lower>()は型のオブジェクトを返し、それを次の行SparseSelfAdjointView<SparseMatrix<double>, 2u>の中にキャストしようとしていますSparseMatrix<double>:

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>();

確かに、そのような製品はサポートされていません。


元の質問が投稿され、ここに回答されました。

于 2012-11-01T05:33:07.467 に答える