2009-07-24 13 views
8

Mi chiedo se è possibile (e se è allora come) per riproporre un arbitrario M3 matrice di trasformazione come una sequenza di trasformazioni più semplici (come tradurre, scala, inclinazione, rotazione)Scomporre la trasformazione della matrice complessa in una serie di semplici trasformazioni?

In altre parole: come calcolare MTranslate, mScale, MRotate, MSkew matrici dal MComplex in modo che la seguente equazione sarebbe vero:

MComplex = MTranslate * mScale * MRotate * MSkew (o in un altro ordine)

risposta

9

Singular Value Decomposition (vedere anche this blog e questo PDF). Trasforma una matrice arbitraria in una composizione di 3 matrici: ortogonale + diagonale + ortogonale. Le matrici ortogonali sono matrici di rotazione; la matrice diagonale rappresenta l'inclinazione lungo gli assi primari = ridimensionamento.

La traduzione getta una chiave inglese nel gioco, ma quello che dovresti fare è estrarre la parte di traduzione della matrice in modo da avere una matrice 3x3, eseguire SVD su quella per darti la rotazione + inclinazione, quindi aggiungere la traduzione parte in. In questo modo avrai una rotazione + scala + rotazione + traduci composizione di 4 matrici. Probabilmente è possibile farlo in 3 matrici (rotazione + ridimensionamento lungo un insieme di assi + traduzione) ma non sono sicuro esattamente come ... forse una decomposizione QR (Q = ortogonale = rotazione, ma non sono sicuro se la R è solo skew o ha una parte rotazionale.)

1

Sì, ma la soluzione non sarà unica. Inoltre si dovrebbe piuttosto mettere traduzione all'estremità (dell'ordine del resto non importa)

Per ogni matrice quadrata A esistono infiniti matrici B e C modo che A = B*C. Scegli qualsiasi matrice invertibile B (che significa che B^-1 esiste o det (B)! = 0) e ora C = B^-1*A.

Quindi, per la soluzione, decomporre prima MC in MT e MS*MR*MSk*I, scegliendo MT come matrice di trasposizione invertibile. Quindi decomponi il resto in MS e MR*MSk*I in modo che MS sia una matrice di ridimensionamento arbitraria. E così via ...

Ora se alla fine del divertimento I è una matrice di identità (con 1 su diagonale, 0 altrove) sei bravo. Se non lo è, ricomincia, ma scegli diverse matrici ;-)

Infatti, utilizzando il metodo sopra simbolicamente puoi creare un insieme di equazioni che ti forniranno formule parametrizzate per tutte queste matrici.

Quanto sono utili queste scomposizioni per te, beh, questa è un'altra storia.

Se si digita questo in Mathematica o Maxima faranno calcolare questo per voi in poco tempo.

+0

Hai un buon punto, eccetto che queste matrici hanno legami addizionali (la traduzione è una matrice di identità con la colonna più a destra contenente il vettore di traduzione, ecc.). Per quanto posso immaginare, queste quattro trasformazioni - a condizione che l'ordine sia corretto - dovrebbero produrre risultati non ambigui. – samuil