Gaussfit aus Messdaten, wie ?

Status
Es sind keine weiteren Antworten möglich.

Gerhard_Fischer

Aktives Mitglied
Hallo zusammen


Ich möchte die Koeffizienten der Gaussfunktion aus Messdaten errechnen. Konkret geht es um die Messung des FWHM eines Sterns auf einer CCD Aufnahme.
Kennt jemand Quellen im www, wie das ganze zu berwerkstelligen ist? Ich bin trotz google leider nicht fündig geworden.
 
Hallo Gerhard,

die zu fittende Ausgangsfunktion ist für eine an der Stelle (x0,y0) liegende Gaußkurve

F(x,y) = c+b*exp(a*((x-x0)^2+(y-y0)^2))

Die Fehlerquadratsumme ist

FQ = Summe((Meßwert(x,y)-F(x,y))^2) über alle Meßpunkte an x,y

Zum Fitten wird diese Summe minimiert, d.h. alle partiellen Ableitungen nach den Koeffizienten Null gesetzt:

dFQ/dx0 = Summe(Ableitung nach x0...) = 0
dFQ/dy0 = Summe(Ableitung nach y0...) = 0
dFQ/da = Summe(Ableitung nach a...) = 0
dFQ/db = Summe(Ableitung nach b...) = 0
dFQ/dc = Summe(Ableitung nach c...) = 0

(Für das Ausrechnen der Terme (...) bin ich grad zu faul <img src="/phpapps/ubbthreads/images/graemlins/frown.gif" alt="" />)
Damit hast du ein Gleichungssystem (hier 5.Ordnung), das du jetzt nur noch zu lösen brauchst <img src="/phpapps/ubbthreads/images/graemlins/grin.gif" alt="" />
Das dürfte geschlossen nicht machbar sein <img src="/phpapps/ubbthreads/images/graemlins/smirk.gif" alt="" />, also ist numerische Rechnerei angesagt, z.B. mit Downhill-Simplex oder Levenberg-Marquard.
Die FWHM ergibt sich dann einfach aus dem Parameter a.

Hoffe das hilft dir weiter.
Maximierte Grüße
Karl-Heinz
 
Hallo,

In GnuPlot sind die Methoden bereits fertig implementiert, hier ein Auszug aus der online-doku der "fit" methode:

The fit command can fit a user-defined function to a set of data points (x,y) or (x,y,z), using an implementation of the nonlinear least-squares (NLLS) Marquardt-Levenberg algorithm. Any user-defined variable occurring in the function body may serve as a fit parameter, but the return type of the function must be real....

Das könnte doch schon dein Problem lösen, oder?

Grüße, Martin
 
Hallo an alle

Danke erst mal für die Hinweise.

Die Sache ist doch komplizierter als erwartet. <img src="/phpapps/ubbthreads/images/graemlins/gruebel.gif" alt="" />
Mir geht es im Endeffekt darum die Routine in ein eigenes Programm einzubauen um den Fokus am Stern besser beurteilen zu können.

Gibt es vlt. sowas wie eine Beispielimplementierung? Am besten in C, andere Sprachen gehen aber auch.

Gruß
Gerhard
 
Ciao,

hier noch 2 einfache Alternativen:

(1) Da eine Gaussfunktionen logarithmiert eine Parabel ist, kann man (deutlich) vereinfacht übrigens so vorgehen (nur in 1 Dimension):
- Himmelshelligkeit messen und abziehen (nur Stern bleibt übrig)
- Zählraten logarithmieren und mit 2.5 malnehmen (in mag umwandeln)
- in die resultierenden Messpunkte eine quadratische Funktion (Parabel) fitten (dafür hast/findest Du wahrscheinlich Programme)
- die Breite der Parabel an der Stelle 0.75mag (full width at HALF maximum, also: Faktor 2 entspricht 0.75mag stimmt's ?!) unter dem Maximum gibt Dir die FWHM des Sterns

Dies ist KEIN Näehrungsverfahren sondern liefert ein EXAKT richtiges Ergebnis (beachte noch PS2 ganz unten). All das geht natürlich auch 2-dimensional im Prinzip... Aber das alles ist deutlich einfacher als eine nichtlineare Fit-Routine !

(2) Eine weitere (noch einfachere) Möglichkeit wäre, das FWHM wörtlich zu nehmen und
- den Wert des Maximums der Verteilung suchen
- die Breite der Verteilung bestimmen bei einem Faktor 2 (oder im logrithmierten Fall 0.75mag) unter diesem Maximum

Letztere Option wäre auch im 2-dim Fall sehr einfach zu bewerkstelligen, nur nimmt man dann nicht den Durchmesser sondern FWHM = 2 x Wurzel(Fläche)/Pi und die Fläche ist einfach die Fläche aller Pixel die oberhalb des halben Maximalwerts liegen ... Bei Patentierung bitte mich mit als Patentsinhaber anmelden ! :-)

Housnkuhgrüsse, :-)
Peter

PS: 'Numerical Recipes' (in C) sind auf jeden Fall empfehlenswert !

PS2:
Zu Beachten ist noch, dass bei Methode (1) durch die Logarithmierung der Zählraten effektiv eine Gewichtungsfunktion für die Messpunkte eingeführt wird und die schwachen Aussenbereiche (Flanke des Sternprofils) stärker gewichtet werden als in einem nicht-linearen Fit direkt an die Zählraten. Aber genau diese Flanken willst Du ja messen wenn Du FWHM bestimmst. Insofern ist dieses Vorgehen in Ordnung !

PS3 (Background):
Nich-lineare Fits sind immer etwas nervig + komplex, weil die Verfahren vergleichsweise kompliziert sind und man numerisch im Parameterraum 'rumtappen' muss und irgendwie (maximaler Gradient und sonstwelche Algorithmen) das Chi-Quadrat-Minimum (Minimum der Summe der quadrat. Abweichungen) sucht. Ausserdem brauchen diese Verfahren viel Rechenzeit, einen Startwert und Abbruchbedingungen. Es ist normalerweise viel besser, stabiler, schneller und durchsichtiger, die zu fittende Funktion auf etwas lineares zurückzuführen und dann kann man die Lösung (analytisch) sofort + direkt mit den Daten ausrechnen (1 Schritt, ohne Iteration etc).

 
Zuletzt von einem Moderator bearbeitet:
Hallo Peter


Vielen Dank für die Unterstützung.
Auf so einen Lösungsansatz hatte ich gehofft. Das ist deutlich leichter zu verdauen als der "offizielle" Weg. <img src="/phpapps/ubbthreads/images/graemlins/tongue.gif" alt="" /> Ich werde demnächst mal versuchen das so zu implementieren. Über Ergebnisse berichte ich dann hier wieder.

Bist du a Kroniche <img src="/phpapps/ubbthreads/images/graemlins/gutefrage.gif" alt="" />
 
Bist du a Kroniche <img src="/phpapps/ubbthreads/images/graemlins/gutefrage.gif" alt="" />

Ja - allerdings seit Jahren schon hier im feindlichen + hochgradig lichtverseuchten Ausland (BaWü)... Vielleicht sieht man sich mal unbekannterweise beim Freischiessen :-)

Schöne Grüsse,
Peter
 
Zuletzt von einem Moderator bearbeitet:
ITV war ich leider noch nie... ATB bin ich manchmal, oder im Schwarzwald (das ist hier in der Gegend das Nonplusultra an Dunkelheit
Aber mal sehen ... :-)

Schöne Grüsse
Peter
 
Zuletzt von einem Moderator bearbeitet:
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben