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

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

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

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

 us201221 мар. 2013 г., 22:14
Какое отношение имеет производительность к тому, находится ли код в.h файлы или в.cpp файлы?
 sgvd23 мар. 2013 г., 15:50
Чтобы понять, как работает Eigen и что делает его быстрым, лучше взгляните на их документы (например,Что происходит внутри) (который, видя количество ваших вопросов, будет полезен в любом случае), и возьмите книгу по продвинутому C ++ и шаблонному программированию. В любом случае вы должны удалить этот вопрос здесь и создать новый для него, если после этого вы все еще не уверены в некоторых деталях его работы.

Ответы на вопрос(1)

Решение Вопроса

Позволять's объявляют две матрицы:

SparseMatrix<double> spMat;
MatrixXd dMat;
</double>

Разреженный до плотного:

dMat = MatrixXd(spMat);

Плотный для разрежения:

spMat = dMat.sparseView();

Ваш ответ на вопрос