2010-07-26 35 views
5

Korzystam z procesora opartego na ARM Cortex-A8 i mam kilka miejsc, w których obliczyłem operacje odwrotne macierzy 3x3.Czy odwzorowanie macierzy 3x3 jest możliwe za pomocą instrukcji SIMD?

jak procesor Cortex-A8 posiada procesor SIMD NEON Jestem zainteresowany, aby skorzystać z tej koprocesora dla odwrotności macierzy 3x3, widziałem kilka implementacje 4x4 (Intel SSE i freevec), ale nie ma gdzie widziałam macierz 3x3 operacja odwrotna przeprowadzona za pomocą instrukcji SIMD. Metoda używana przez freevec polega na rozdzieleniu macierzy 4x4 na 4, 2x2 matryce, a następnie na każdym z nich wykonuje małe operacje i rekombinuje wyniki w celu uzyskania odwrotności macierzy 4x4. Nie widzę takiej możliwości w przypadku macierzy 3x3.

Ktoś, kto ma pomysł na inwersję macierzy 3x3 za pomocą instrukcji SIMD, będzie dla mnie bardzo pomocny?

Chodzi Vikram

+3

Być może interesuje mnie: "Nie ma prawie żadnego dobrego powodu, aby odwrócić matrycę." http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/ – AakashM

+0

Poważnie potraktuję twoją uwagę i zobaczę, jak mogę się pozbyć inwersji macierzy z mojego algorytmu. – HaggarTheHorrible

+3

@AakashM ten artykuł nie jest istotny. Artykuł Johna D. Cooka na temat macierzy dotyczy dużych matryc wykorzystywanych w komputerach naukowych. To pytanie dotyczy małych matryc, które są powszechnie stosowane w grafice komputerowej i symulacji fizyki. Jest bardzo użyteczne (i dość szybkie) odwracanie małych macierzy. – exDM69

Odpowiedz

5

można rozszerzyć do macierzy 3x3 macierzy 4x4 przez dodanie 4. rząd i 4 kolumny, przy czym obie są (0 0 0 1). Po inwersji lewy górny podprzestrzeń 3x3 będzie wymagał odwrotności.

+0

To dobry pomysł. Spróbuję, dziękuję – HaggarTheHorrible

1

Można zwizualizować analityczną wersję standardową dla macierzy 3x3 opisanych w wikipedia. To nie powinno być trudne.

+0

W tej wersji zauważ, że 3 różnice użyte w wyznaczniku są również ponownie wykorzystane w pozostałych 9 częściach. – phkahler