2013-07-31 5 views
5

Używam pancernika głównie do macierzy symetrycznych i trójkątnych. Chciałem być wydajny pod względem pamięci. Wydaje się jednak, że nie ma innej możliwości niż utworzenie nowej macie i wypełnienie zerami (trójkątnymi) lub duplikatami (dla symetrycznego) dolnej/górnej części macierzy.Armadillo C++: Czy istnieje konkretny sposób tworzenia wydajnej macierzy trójkątnej lub symetrycznej?

Czy istnieje skuteczniejszy sposób wykorzystania matryc trójkątnych/symetrycznych za pomocą urządzenia Armadillo?

Dzięki, Antoine

Odpowiedz

3

Nie ma szczególne wsparcie do trójkątnych lub paskowanych matryc w Armadillo. Jednak od wersji 3.4 dodano stopniowo obsługę rzadkich macierzy. W zależności od tego, jakie funkcje Armadillo potrzebujesz, a także od stopnia macierzy, możesz zyskać korzystając z SpMat<type>, która implementuje compressed sparse column (CSC) format. Dla każdej niezerowej wartości w macierzy format CSC przechowuje indeks wierszy wraz z wartością, więc prawdopodobnie nie zaoszczędzisz dużo pamięci dla macierzy trójkątnej. Paskowana macierz diagonalna powinna jednak zużywać znacznie mniej pamięci.

Powiązane problemy