Как преобразовать разреженную матрицу в плотную матрицу в Eigen

Есть ли простой и быстрый способ преобразования разреженной матрицы в плотную матрицу двойников?

Потому что мой SparseMatrix больше не разрежен, а после некоторых матричных продуктов стал плотным.

Еще один вопрос, который у меня есть: библиотека Eigen имеет отличную производительность, как это возможно? Я не понимаю, почему, потому что есть только файлы заголовков, не скомпилированный источник.

Ответ 1

Пусть объявляют две матрицы:

SparseMatrix<double> spMat;
MatrixXd dMat;

Редкие к плотным:

dMat = MatrixXd(spMat);

Плотный до редких:

spMat = dMat.sparseView();