Próbuję dopasować transformację z jednego zestawu współrzędnych do drugiego.Rozwiązanie najmniejszych kwadratów do równoczesnych równań
x' = R + Px + Qy
y' = S - Qx + Py
Where P,Q,R,S are constants, P = scale*cos(rotation). Q=scale*sin(rotation)
Istnieje dobrze znana formuła "odręczna" do dopasowania P, Q, R, S do zestawu odpowiednich punktów. Ale muszę mieć oszacowanie błędu na dopasowanie - więc potrzebuję rozwiązania najmniejszych kwadratów.
Przeczytałem "Receptury numeryczne", ale mam problem z ustaleniem, jak to zrobić dla zestawów danych z X i Y w nich.
Czy ktoś może wskazać przykład/samouczek/próbkę kodu, jak to zrobić?
Nie przejmowałem się tym językiem.
Ale - po prostu użyj wbudowanej funkcji Matlab/Lapack/numpy/R prawdopodobnie nie jest pomocna!
edytuj: Mam duży zestaw starych (x, y) nowych (x, y) do dopasowania. Problem jest przesadnie określony (więcej punktów danych niż niewiadomych), więc prosta inwersja matrycy nie jest wystarczająca - i jak powiedziałem, naprawdę potrzebuję błędu w dopasowaniu.
Czy masz zestaw (x_i, y_i, x'_i, y'_i) s lub x +/- dx, y +/- dy ... czy co? Jeśli masz dokładnie jeden z x, y, x ', y' możesz * tylko * zrobić dokładne rozwiązanie i nie ma możliwości wyodrębnienia oszacowania błędu ... – dmckee
Żadna z funkcji minimalizacji typu LMA/Gauss- Newton daje bezpośredni błąd. Przypuszczam, że mógłbym obliczyć najlepsze dopasowanie, a następnie opracować błąd z każdego punktu. Myślałem, że to było znacznie prostsze niż to (tj. Prosty tryb liniowej LWWers) i po prostu byłem głupi –
Interesujący problem! Wysłałem trochę kodu, który powinien wystarczyć, ale zabawną częścią było ponowne wyrobienie moich starych, zardzewiałych umiejętności matematycznych :) –