Eigen: использовать SparseMatrix’s selfAdjointView

По словам Эйгена документация, Я ожидал бы следующее, чтобы работать:

#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. Я что-то упустил или это на самом деле не реализовано?

1

Решение

Ваша функция mymatrix.selfadjointView<Lower>() возвращает объект типа SparseSelfAdjointView<SparseMatrix<double>, 2u> и вы пытаетесь разыграть его как SparseMatrix<double> внутри этой строки:

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

Вы должны также

#include <SelfAdjointView.h>
2

Другие решения

Член ggael на форуме Eigen смог ответить на мой вопрос. Для полноты приведу его ответ здесь:


Для первого вопроса, следующее должно сделать работу:

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

Во-вторых, вы правы, такой продукт не поддерживается.


Оригинальный вопрос был опубликован и ответил Вот.

1

По вопросам рекламы [email protected]