2013-03-18 5 views
11

Gibt es eine einfache und schnelle Möglichkeit, eine spärliche Matrix in eine dichte Matrix von Doppel zu konvertieren?Wie konvertiert man eine spärliche Matrix in eine dichte Matrix in Eigen

Weil meine SparseMatrix nicht mehr spärlich ist, aber nach einigen Matrixprodukten dicht geworden ist.

Eine andere Frage, die ich habe: Die Eigen-Bibliothek hat ausgezeichnete Leistung, wie ist das möglich? Ich verstehe nicht warum, denn es gibt nur Header-Dateien, keine kompilierte Quelle.

+1

Was Leistung mit dem zu tun hat, ob Code in der Datei '. h' Dateien oder in '.cpp' Dateien? – us2012

+1

Um zu verstehen, wie Eigen arbeitet und was es schnell macht, sollten Sie sich ihre Dokumente genauer anschauen (zB [Was passiert in Ihnen] (http://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html)) (was die Anzahl der Ihre Fragen wären auf jeden Fall hilfreich), und holen Sie sich ein Buch über die fortgeschrittene C++ - und Template-Programmierung. In jedem Fall sollten Sie diese Frage hier entfernen und eine neue erstellen, wenn Sie sich danach noch nicht sicher sind, wie es funktioniert. – sgvd

Antwort

27

Lassen Sie uns zwei Matrizen erklären:

SparseMatrix<double> spMat; 
MatrixXd dMat; 

Sparse zu dichten:

dMat = MatrixXd(spMat); 

Dense zu spärlich:

spMat = dMat.sparseView();