2013-03-18 3 views
11

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

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

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

+1

Что производительность нужно делать с ли код в '. h' файлов или файлов '.cpp'? – us2012

+1

Чтобы понять, как работает Eigen и что делает его быстрым, лучше взгляните на свои документы (например, [Что происходит внутри] (http://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html)) (который видит количество ваши вопросы будут полезны в любом случае), и возьмите книгу о продвижении C++ и программировании шаблонов. В любом случае вы должны удалить этот вопрос здесь и сделать для него новый, если после этого вы все еще не уверены в некоторых подробностях о том, как это работает. – sgvd

ответ

27

Давайте объявим две матрицы:

SparseMatrix<double> spMat; 
MatrixXd dMat; 

разреженных к плотным:

dMat = MatrixXd(spMat); 

Плотные с разреженным:

spMat = dMat.sparseView(); 
Смежные вопросы