Estoy tratando de ajustar una transformación de un conjunto de coordenadas a otro.Solución de mínimos cuadrados para ecuaciones simultáneas
x' = R + Px + Qy
y' = S - Qx + Py
Where P,Q,R,S are constants, P = scale*cos(rotation). Q=scale*sin(rotation)
Existe una fórmula conocida 'a mano' para ajustar P, Q, R, S a un conjunto de puntos correspondientes. Pero necesito una estimación de error sobre el ajuste, por lo que necesito una solución de mínimos cuadrados.
Lea 'Recetas numéricas', pero tengo problemas para encontrar la forma de hacerlo para conjuntos de datos con xey en ellas.
¿Alguien puede apuntar a una muestra de ejemplo/tutorial/código de cómo hacer esto?
No me molesta demasiado el idioma.
Pero, solo use la función integrada de Matlab/Lapack/numpy/R probablemente no sea útil.
editar: Tengo un conjunto grande de viejo (x, y) nuevo (x, y) para encajar. El problema está sobredeterminado (más puntos de datos que incógnitas) por lo que la inversión de matriz simple no es suficiente, y como dije, realmente necesito el error en el ajuste.
¿Tiene un conjunto de (x_i, y_i, x'_i, y'_i) s o x +/- dx, dy y +/- ... o qué? Si tiene exactamente uno cada uno de x, y, x ', y' puede * solo * hacer una solución exacta, y no hay manera de extraer una estimación de error ... – dmckee
Ninguna de las funciones de tipo minimizar LMA/Gauss- Newton da un error directo. Supongo que podría calcular el mejor ajuste y luego resolver el error desde cada punto. Pensé que era mucho más simple que esto (es decir, un modo simple de linear LSquers) y solo estaba siendo tonto –
¡Problema interesante! Publiqué un código que debería hacer el truco, pero la parte divertida fue volver a explotar mis viejas habilidades matemáticas oxidadas :) –