Вопрос по eigen, sparse-matrix, matrix, c++ – Как преобразовать разреженную матрицу в плотную матрицу в Eigen

12

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

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

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

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

Ваш Ответ

1   ответ
32

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

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

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

dMat = MatrixXd(spMat);

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

spMat = dMat.sparseView();

Похожие вопросы