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

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

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

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


person user2165656    schedule 18.03.2013    source источник
comment
Какое отношение производительность имеет к тому, находится ли код в .h файлах или в .cpp файлах?   -  person us2012    schedule 22.03.2013
comment
Чтобы понять, как работает Eigen и что делает его быстрым, внимательно изучите их документы (например, Что происходит внутри) (что, учитывая количество ваших вопросов, было бы полезно в любом случае), и возьмите книгу по продвинутому C++ и программированию шаблонов. В любом случае, вы должны удалить этот вопрос здесь и создать для него новый, если после этого вы все еще не уверены в некоторых деталях того, как это работает.   -  person sgvd    schedule 23.03.2013


Ответы (1)


Объявим две матрицы:

SparseMatrix<double> spMat;
MatrixXd dMat;

От разреженного до плотного:

dMat = MatrixXd(spMat);

От плотного до разреженного:

spMat = dMat.sparseView();
person ggael    schedule 23.03.2013