2010-07-26 3 views
5

Ich benutze einen ARM Cortex-A8-basierten Prozessor und ich habe mehrere Stellen, an denen ich 3x3 Matrix Inverse-Operationen berechnen.Ist 3x3 Matrix invers mit SIMD-Befehlen möglich?

Da der Cortex-a8 Prozessor einen NEON SIMD Prozessor hat, bin ich interessiert, diesen Co-Prozessor für 3x3 Matrix Inverse zu verwenden, sah ich mehrere 4x4-Implementierungen (Intel SSE und freevec), aber keine wo ich eine 3x3-Matrix sah Inverse Operation, die unter Verwendung von SIMD-Anweisungen ausgeführt wird. Die Methode, die von freevec verwendet wird, besteht darin, die 4 × 4-Matrix in 4, 2 × 2-Matrizen aufzuteilen, dann jeweils winzige Operationen auszuführen und die Ergebnisse am Ende zu rekombinieren, um die Inverse der 4 × 4-Matrix zu erhalten. Ich sehe keine solche Möglichkeit mit 3x3-Matrizen.

Jeder da draußen hat eine Idee, wie man 3x3 Matrix Inversion mit SIMD Anweisungen ausführen, wird es sehr hilfreich für mich sein?

Grüße Vikram

+3

Vielleicht von Interesse: "Es gibt kaum einen guten Grund, eine Matrix zu invertieren." http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/ – AakashM

+0

Wird Ihren Kommentar ernst nehmen und sehen, wie ich Matrixinversion von meinem Algorithmus loswerden kann. – HaggarTheHorrible

+3

@AakashM Dieser Artikel ist nicht relevant. In John D. Cooks Artikel über Matrizen geht es um große Matrizen, die im wissenschaftlichen Rechnen verwendet werden. Diese Frage bezieht sich auf kleine Matrizen, die häufig in der Computergrafik und Physiksimulation verwendet werden. Es ist sehr nützlich (und ziemlich schnell), kleine Matrizen zu invertieren. – exDM69

Antwort

5

Sie können durch Zugabe einer 4. Reihe und 4. Spalte, die beide (0 0 0 1), um die 3x3-Matrix zu 4x4 Matrix erweitern. Nach der Inversion wird die obere 3x3-Untermatrix die erforderliche Inverse haben.

+0

Das ist eine gute Idee. Ich werde es versuchen, danke – HaggarTheHorrible

1

Sie können die analytische Standardversion für 3x3-Matrizen, die in wikipedia beschrieben ist, vektorisieren. Es sollte nicht schwer sein.

+0

In dieser Version, beachten Sie, dass die 3 Unterschiede in der Determinante auch in den anderen 9 Teilen wiederverwendet werden. – phkahler

Verwandte Themen