2013-03-18 25 views
11

Czy istnieje prosty i szybki sposób na konwersję rzadkiej macierzy na gęstą matrycę podwójną?Jak przekonwertować macierz rzadką na gęstą macierz w Eigen

Ponieważ mój SparseMatrix nie jest już rzadki, ale stał się gęsty po niektórych produktach matrycowych.

Mam jeszcze jedno pytanie: biblioteka Eigen ma doskonałą wydajność, jak to możliwe? Nie rozumiem dlaczego, ponieważ istnieją tylko pliki nagłówkowe, bez skompilowanego źródła.

+1

Co wydajność mają do czynienia z tego, czy kod jest w '. h' files lub w plikach '.cpp'? – us2012

+1

Aby zrozumieć, jak działa Eigen i co sprawia, że ​​jest szybki, lepiej przyjrzyj się ich dokumentom (np. [Co dzieje się w środku] (http://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html)) (które widzą liczbę twoje pytania byłyby przydatne w każdym przypadku) i wybierz książkę z wyprzedzeniem C++ i programowanie szablonów. W każdym razie powinieneś usunąć to pytanie i zrobić dla niego nowe, jeśli po tym wciąż nie jesteś pewien co do szczegółów tego działania. – sgvd

Odpowiedz

27

Niech zadeklarować dwie macierze:

SparseMatrix<double> spMat; 
MatrixXd dMat; 

Rzadki do gęsty:

dMat = MatrixXd(spMat); 

Gęsty do rzadki:

spMat = dMat.sparseView();