2009-10-07 5 views
1

Supposons que j'ai une matrice de transformation arbitraire A tel que,tformfwd et tforminv - quelle est la différence?

A = 

    0.9966 0.0007 -6.5625 
    0.0027 0.9938 1.0598 
     0   0 1.0000 

et un ensemble de points de telle sorte que leurs coordonnées x et y sont représentés par XY et respectivement.

Et supposons,

[Xf Yf] = tformfwd(maketform('projective',A),X,Y); 

Maintenant,

[Xff Yff] = tformfwd(maketform('projective',inv(A)),Xf,Yf); 
[Xfi Yfi] = tforminv(maketform('projective',A),Xf,Yf); 

[Xff Yff] et [Xfi Yfi] semblent être exactement les mêmes (et ils devraient).

Est-ce qu'il y a juste tforminv juste là pour plus de commodité ou est-ce que quelque chose me manque ici?

+0

cela semble fonctionner pour les transformations projectives, mais qu'en est-il des autres types de transformation (souvenez-vous que ** maketform ** peut accepter une transformation définie par l'utilisateur, donc la transformation inverse ne correspond pas toujours à inv (A))? – Amro

+0

Oui, je suis totalement d'accord. Mais je ne suis intéressé que par ce scénario. – Jacob

Répondre

2

Je vais commencer par dire qu'il est mon meilleure estimation ...

Il est possible que tforminv peut effectuer la transformation sans former réellement la matrice inverse. Par exemple, vous pouvez résoudre un système d'équations linéaires Ax = b de deux façons:

x = inv(A)*b; 
x = A\b; 

Selon la documentation inv, la deuxième option (en utilisant l'opérateur de division de la matrice) peut effectuer mieux « à la fois un temps d'exécution et point de vue de la précision numérique "puisqu'il" produit la solution en utilisant l'élimination gaussienne, sans former l'inverse ". tforminv peut faire quelque chose de similaire et montrer ainsi un meilleur comportement global par rapport au passage de la matrice inverse à tformfwd.

Si vous étiez si incliné, vous pourriez probablement essayer un certain nombre de différentes matrices de transformation et de tester les deux approches (tforminv ou tformfwd et inv) pour voir la précision des résultats et à quelle vitesse ils sont chacun calculés.

+0

Merci, je cherchais une réponse le long de ces lignes – Jacob

+0

Je les ai testés pour la précision, et ils sont les mêmes (je ne suis pas préoccupé par la vitesse pour le moment, juste la précision). – Jacob

+0

@Jacob: Si vous utilisiez une matrice de transformation mal conditionnée (c'est-à-dire proche de, mais pas exactement singulière), les deux méthodes peuvent afficher des résultats différents. – gnovice

Questions connexes