2009-07-24 6 views
8

I se preguntan si es posible (y si es entonces cómo) para volver a presentar una transformación arbitraria matriz M3 como una secuencia de transformaciones más simples (como traducir, escala, sesgar, rotar)¿Descomponer la transformación de matriz compleja en una serie de transformaciones simples?

En otras palabras: cómo calcular MTranslate, mScale, MRotate, matrices MSkew de la MComplex de manera que la siguiente ecuación sería cierto:

MComplex = MTranslate * mScale * MRotate * MSkew (o en otro orden)

Respuesta

9

Singular Value Decomposition (consulte también this blog y este PDF). Convierte una matriz arbitraria en una composición de 3 matrices: ortogonal + diagonal + ortogonal. Las matrices ortogonales son matrices de rotación; la matriz diagonal representa un sesgo a lo largo de los ejes primarios = escala.

La traducción introduce una llave inglesa en el juego, pero lo que debes hacer es sacar la parte de traducción de la matriz para que tengas una matriz de 3x3, ejecutar SVD sobre eso para darle la rotación + inclinación, luego agregar el Parte de la traducción de nuevo en. De esa manera tendrá una rotación + escala + rotación + traducir composición de 4 matrices. Probablemente sea posible hacerlo en 3 matrices (rotación + escalado a lo largo de un conjunto de ejes + traslación) pero no estoy seguro de cómo ... tal vez una descomposición QR (Q = ortogonal = rotación, pero no estoy seguro si el R es solo sesgado o tiene una parte rotacional.)

1

Sí, pero la solución no será única. También se debe poner en lugar de traducción al final (del orden del resto no importa)

Para cualquier matriz cuadrada dada A existe un número infinito de matrices B y C modo que A = B*C. Elija cualquier matriz invertible B (lo que significa que B^-1 existe o det (B)! = 0) y ahora C = B^-1*A.

Por lo tanto, para su solución primero descomponga MC en MT y MS*MR*MSk*I, y elija MT como una matriz de transposición invertible. Luego descomponga el resto en MS y MR*MSk*I para que MS sea una matriz de escalas arbitraria. Y así sucesivamente ...

Ahora, si al final de la diversión I es una matriz de identidad (con 1 en diagonal, 0 en otro lugar) está bien. Si no es así, comience de nuevo, pero elija diferentes matrices ;-)

De hecho, usando simbólicamente el método de arriba puede crear un conjunto de ecuaciones que le proporcionarán fórmulas paramétricas para todas estas matrices.

Cuán útiles serían estas descomposiciones para usted, bueno, esa es otra historia.

Si escribe esto en Mathematica o Maxima van a calcular esto para usted en ningún momento.

+0

Tiene un buen punto, excepto que estas matrices tienen enlaces adicionales (la traducción es la matriz de identidad con la columna más a la derecha que contiene el vector de traducción, etc.). Por lo que puedo imaginar, estas cuatro transformaciones, con la garantía de que el orden es fijo, deberían arrojar resultados inequívocos. – samuil

Cuestiones relacionadas