По словам Эйгена документация, Я ожидал бы следующее, чтобы работать:
#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. Я что-то упустил или это на самом деле не реализовано?
Ваша функция mymatrix.selfadjointView<Lower>()
возвращает объект типа SparseSelfAdjointView<SparseMatrix<double>, 2u>
и вы пытаетесь разыграть его как SparseMatrix<double>
внутри этой строки:
SparseMatrix<double> test = mymatrix.selfadjointView<Lower>();
Вы должны также
#include <SelfAdjointView.h>
Член ggael на форуме Eigen смог ответить на мой вопрос. Для полноты приведу его ответ здесь:
Для первого вопроса, следующее должно сделать работу:
SparseMatrix<double> test;
test = mymatrix.selfadjointView<Lower>();
Во-вторых, вы правы, такой продукт не поддерживается.
Оригинальный вопрос был опубликован и ответил Вот.