Vielleicht haben Sie das, wonach Sie suchen? Nicht sicher über die Kompatibilität: Ссылка
Aus seiner Dokumentation:
%Vor%Ich habe eine Reihe von Frequenzdaten mit Peaks, auf die ich eine Gaußsche Kurve anpassen muss, und dann die volle Breite halbmaximal aus. Der FWHM-Teil, den ich tun kann, habe ich bereits einen Code dafür, aber ich habe Probleme, Code zu schreiben, um dem Gaussian zu passen.
Kennt irgendjemand irgendwelche Funktionen, die das für mich tun oder mir in die richtige Richtung zeigen könnten? (Ich kann die kleinsten Quadrate für Linien und Polynome verwenden, aber ich kann es nicht für Gaussians funktionieren)
Es wäre auch hilfreich, wenn es sowohl mit Octave als auch mit Matlab kompatibel wäre, da ich Octave im Moment habe, aber bis nächste Woche keinen Zugang zu Matlab bekomme.
Jede Hilfe würde sehr geschätzt werden!
Die direkte Anpassung eines einzelnen 1D-Gaußschen Signals ist ein nichtlineares Anpassungsproblem. Sie finden fertige Implementierungen hier oder hier , oder hier für 2D oder hier (wenn Sie die Statistik-Toolbox haben) (Haben Sie schon von Google gehört? :)
Wie auch immer, es könnte eine einfachere Lösung geben. Wenn Sie sicher sind, dass Ihre Daten y
gut mit einem Gaußschen Wert beschrieben werden und über den gesamten x
-Bereich einigermaßen gut verteilt sind, können Sie das Problem linearisieren (dies sind Gleichungen, keine Anweisungen):
wo die Substitutionen
%Vor% wurden gemacht. Lösen Sie nun das lineare System Ax=b
mit (das sind Matlab-Anweisungen):
Der Vektor x
, den Sie auf diese Weise gefunden haben, ist gleich
, die Sie dann zurückentwickeln müssen, um den Mittelwert μ und die Standardabweichung σ zu finden:
%Vor% Was Sie mit x(3) == R
überprüfen können (es sollte nur kleine Unterschiede geben).
Vielleicht haben Sie das, wonach Sie suchen? Nicht sicher über die Kompatibilität: Ссылка
Aus seiner Dokumentation:
%Vor%Ich fand, dass die "fit" -Funktion von MATLAB langsam war, und verwendete "lsqcurvefit" mit einer Inline-Gauß-Funktion. Dies ist für die Anpassung einer Gaußschen FUNKTION. Wenn Sie nur Daten in eine Normalverteilung einpassen möchten, verwenden Sie "normfit".
Überprüfen Sie es
%Vor%Ich habe eine Reihe von Frequenzdaten mit Peaks, auf die ich eine Gaußsche Kurve anpassen muss, und dann die volle Breite halbmaximal aus. Der FWHM-Teil, den ich tun kann, habe ich bereits einen Code dafür, aber ich habe Probleme, Code zu schreiben, um dem Gaussian zu passen.
Kennt irgendjemand irgendwelche Funktionen, die das für mich tun oder mir in die richtige Richtung zeigen könnten? (Ich kann die kleinsten Quadrate für Linien und Polynome verwenden, aber ich kann es nicht für Gaussians funktionieren)
Es wäre auch hilfreich, wenn es sowohl mit Octave als auch mit Matlab kompatibel wäre, da ich Octave im Moment habe, aber bis nächste Woche keinen Zugang zu Matlab bekomme.
Jede Hilfe würde sehr geschätzt werden!
Ich hatte ein ähnliches Problem. Dies war das erste Ergebnis bei Google, und einige der hier verlinkten Skripte haben meinen Matlab zum Absturz gebracht.
schließlich fand ich hier , dass Matlab eine Fit-Funktion eingebaut hat, die auch für Gauß-Benutzer geeignet ist.
sieht es so aus:
%Vor%Die direkte Anpassung eines einzelnen 1D-Gaußschen Signals ist ein nichtlineares Anpassungsproblem. Sie finden fertige Implementierungen hier oder hier , oder hier für 2D oder hier (wenn Sie die Statistik-Toolbox haben) (Haben Sie schon von Google gehört? :)
Wie auch immer, es könnte eine einfachere Lösung geben. Wenn Sie sicher sind, dass Ihre Daten %code% gut mit einem Gaußschen Wert beschrieben werden und über den gesamten %code% -Bereich einigermaßen gut verteilt sind, können Sie das Problem linearisieren (dies sind Gleichungen, keine Anweisungen):
%Vor%wo die Substitutionen
%Vor%wurden gemacht. Lösen Sie nun das lineare System %code% mit (das sind Matlab-Anweisungen):
%Vor%Der Vektor %code% , den Sie auf diese Weise gefunden haben, ist gleich
%Vor%, die Sie dann zurückentwickeln müssen, um den Mittelwert μ und die Standardabweichung σ zu finden:
%Vor%Was Sie mit %code% überprüfen können (es sollte nur kleine Unterschiede geben).
Ich hatte ein ähnliches Problem. Dies war das erste Ergebnis bei Google, und einige der hier verlinkten Skripte haben meinen Matlab zum Absturz gebracht.
schließlich fand ich hier , dass Matlab eine Fit-Funktion eingebaut hat, die auch für Gauß-Benutzer geeignet ist.
sieht es so aus:
%Vor%Ich fand, dass die "fit" -Funktion von MATLAB langsam war, und verwendete "lsqcurvefit" mit einer Inline-Gauß-Funktion. Dies ist für die Anpassung einer Gaußschen FUNKTION. Wenn Sie nur Daten in eine Normalverteilung einpassen möchten, verwenden Sie "normfit".
Überprüfen Sie es
%Vor%Tags und Links matlab gaussian octave curve-fitting