2010-07-26 5 views
5

Je me sers d'un processeur basé sur ARM Cortex-A8 et j'ai plusieurs endroits où je calcule les opérations inverses Matrix 3x3. Comme le processeur Cortex-a8 a un processeur NEON SIMD je suis interessé d'utiliser ce co-processeur pour l'inverse matricielle 3x3, j'ai vu plusieurs implémentations 4x4 (Intel SSE et freevec) mais nulle part ai-je vu une matrice 3x3 opération inverse effectuée en utilisant les instructions SIMD. La méthode utilisée par freevec est de diviser la matrice 4x4 en matrices 4, 2x2, puis d'effectuer de minuscules opérations sur chacune et de recombiner les résultats à la fin pour obtenir l'inverse de la matrice 4x4. Je ne vois pas une telle opportunité avec des matrices 3x3. Quelqu'un a une idée sur la façon d'effectuer l'inversion de matrice 3x3 en utilisant les instructions SIMD, cela me sera très utile?La matrice 3x3 inverse est-elle possible en utilisant les instructions SIMD?

salutations Vikram

+3

Peut-être d'intérêt: "Il n'y a presque jamais une bonne raison d'inverser une matrice." http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/ – AakashM

+0

Je vais prendre votre commentaire au sérieux et voir comment je peux me débarrasser de l'inversion de matrice de mon algorithme. – HaggarTheHorrible

+3

@AakashM cet article n'est pas pertinent. L'article de John D. Cook sur les matrices concerne les grandes matrices utilisées en informatique scientifique. Cette question concerne les petites matrices, couramment utilisées en simulation informatique et en physique. Il est très utile (et assez rapide) d'inverser les petites matrices. – exDM69

Répondre

5

Il est possible d'élargir la matrice de 3x3 à matrice 4x4 en ajoutant une quatrième rangée et la colonne 4, les deux étant (0 0 0 1). Après l'inversion, la sous-matrice 3x3 supérieure gauche aura l'inverse requis.

+0

C'est une bonne idée. Je vais essayer, merci – HaggarTheHorrible

1

Vous pourriez vectoriser la version standard analytique pour les matrices 3x3 décrites dans wikipedia. Ça ne devrait pas être dur.

+0

Dans cette version, notez que les 3 différences utilisées dans le déterminant sont également réutilisées dans les 9 autres parties. – phkahler

Questions connexes