Hallo Guyyyzzzzzz, meine Frage bezieht sich heute auf Matlab und die Methode des kleinsten Quadrate. Ich habe eine verrrauschte Sinus-Funktion: x = 3 Nm + A*sin(w*t+ phinull). um die Parametern dieses Funtion zu bestimmen muss ich die Levenberg Methode über Matlab einsetzen. Ich habe zwar an der Uni mich mit andere Optimierungsverfahren beschäftigt aber noch nicht mit dieser und auch wenig mit Matlab. Ich freue mich riesig auf Ihre Frage, Vorschläge und alles was dazu kommt
doc lsqnonlin ;) Etwas auführlicher: Du musst eine Funktion schreiben (entweder als anonymes function handle oder als eigene datei), die deinem x (nenn sie lieber anders, y, oder z oder so) entspricht und deine Parameter w, phi etc. vektoriell (also zusammengefasst in einen x vektor, um bei der matlab Schreibweise zu bleiben) beinhaltet. Diese musst du lsqnonlin übergeben, Anfangswerte angeben und starten. Der macht nicht automatisch Levenberg Marquardt, vielleicht kann man das erzwingen. Oder musst du den selber implementieren? Schöne Grüße, Jan
Jan K. schrieb: > doc lsqnonlin ;) > > Etwas auführlicher: > > Du musst eine Funktion schreiben (entweder als anonymes function handle > oder als eigene datei), die deinem x (nenn sie lieber anders, y, oder z > oder so) entspricht und deine Parameter w, phi etc. vektoriell (also > zusammengefasst in einen x vektor, um bei der matlab Schreibweise zu > bleiben) beinhaltet. > > Diese musst du lsqnonlin übergeben, Anfangswerte angeben und starten. > Der macht nicht automatisch Levenberg Marquardt, vielleicht kann man das > erzwingen. > > Oder musst du den selber implementieren? > > Schöne Grüße, > Jan Hallo Jan, danke für deine Antwort. Ich muss es selbst implementieren und ich habe dabei keinen blassen Schirm!!!! :))) Traurig
>>Ich habe eine verrrauschte Sinus-Funktion x = 3 Nm + A*sin(w*t+ phinull).
3Nm ist ne Konstante, die unbekannten Parameter sind A,w und phinull ?
Dann benötigt man zur Bestimmung der Parameter keine nichtlineare
Optimierung sondern kann die Parameter durch ein lineares
Gleichungssystem bestimmen, yo :-)) .
Cheers
Detlef
:
Bearbeitet durch User
Klingt interessant, Detlef. Mir fallen als Alternativen momentan nur fft/fourierreihe und Autokorrelation ein, aber mit nem einfachen LGS ist es da nicht getan. Magst du das mal etwas ausführen? Da aber ja ausdrücklich der LM Algorithmus gewünscht wird: @ coriane Wenn du andere Optimierungsverfahren kennst und verstanden hast, wirst du dir auch den Levenberg anlesen können. Hier gibts eine Implementierung, wie gut die ist, weiß ich nicht: http://www.mathworks.com/matlabcentral/fileexchange/16063-lmfsolve-m-levenberg-marquardt-fletcher-algorithm-for-nonlinear-least-squares-problems Newton Verfahren kennst du? Lokal geht das Levenberg Marquardt Verfahren nämlich darin über. Im Prinzip linearisierst du die nichtlineare Funktion und machst dann Newton(-Rhapson).
>>>> Magst du das mal etwas ausführen? Findest Du incl. Code z.B. hier: Beitrag "Frequenzlinie ausfiltern und deren Amplitude auswerten" Cheers Detlef
Detlef _a schrieb: >>>Ich habe eine verrrauschte Sinus-Funktion x = 3 Nm + A*sin(w*t+ phinull). > > 3Nm ist ne Konstante, die unbekannten Parameter sind A,w und phinull ? Hallo Detlef, danke für deinen Beitrag. Erstmal muss ich dir sagen, dass A und w bekannt sind. Man kann näcmlich A über fft bestimmen. Mein Problem liegt bei der Bestimmung von Phinull. Mein Betreuer ist aber der Meinung, dass man phi null mit der Levenberg-Marquardt Methode finden kann und damit auch das Rauschen beseitigen. Wie ich die Methode in Matlab implementieren soll weiss ich nicht wo ich anfangen wirst ----> Hilfe
Alter, Oben hat Jan dir doch schon ne Beispiel Implementation verlinkt! Versteht du denn den algo? Und warum solltest du A mit ner FFT bestimmen? Entweder oder... Bei einer sinus regression (und unter anderem dafür ist levenberg Marquardt) kannst du alle Parameter fitten..
Jan K. schrieb: > > > > @ coriane > Wenn du andere Optimierungsverfahren kennst und verstanden hast, wirst > du dir auch den Levenberg anlesen können. > > Hier gibts eine Implementierung, wie gut die ist, weiß ich nicht: > http://www.mathworks.com/matlabcentral/fileexchange/16063-lmfsolve-m-levenberg-marquardt-fletcher-algorithm-for-nonlinear-least-squares-problems > > Newton Verfahren kennst du? Lokal geht das Levenberg Marquardt Verfahren > nämlich darin über. Im Prinzip linearisierst du die nichtlineare > Funktion und machst dann Newton(-Rhapson). Hey Jan K. nett von dir!!!! Klar haben wir schon mit mehrere Optimierung beschäftigt und Ich kann dir auch sagen, dass das LM Verfahren bezieht sich auf der Gauß Newton- und Gradienten Verfahren. Aber wie man die in Matlab implementieren soll weiss ich nicht. Das hatten wir noch nicht gesehen. Nichtsdestotrotz bedanke ich mich bei dir wegen des Links ;)
db schrieb: > Alter, > Oben hat Jan dir doch schon ne Beispiel Implementation verlinkt! > Versteht du denn den algo? Und warum solltest du A mit ner FFT > bestimmen? Entweder oder... :)) Sag man auch zu einer Frau "ALter" ? Danke db für deine Antwort .Ich beschäftige mich gerade mit dem Link... Hatte Gestern kein Netzverbindung. und was die Amplitude angeht bin völlig deiner Meinung. War nur ein Idee meines Betreuers
Vielleicht erst mal http://www.mathworks.de/de/help/matlab/getting-started-with-matlab.html aufrufen und ganz gründlich durcharbeiten. Dann ist das Thema matlab schon mal etwas klarer.
Coriane J. Voukeng schrieb: > Jan K. schrieb: >> doc lsqnonlin ;) >> >> Hallo Jan, >> >> Leider kann ich nicht mit "lsqnonlin "sondern mit "leasqr" arbeiten, weil es auf " mein Matlab" nirgendwo zu sehen ist. Es gibt allerdings sehr wenig Leute, die sich damit beschäftigt haben. hast du vielleicht mal eine Idee wie das funktionniert würde oder auch ein Beispiel-Code ?
Hallo. Der lsqnonlin ist in der Toolbox Optimierung drin, wahrscheinlich ist die nicht beim Standardpaket dabei (kenne mich mit Mathlab nicht aus). Alternativ kannst Du das Modul levmar nehmen, dort gibt es auch eine Mathlab Schnittstelle: http://users.ics.forth.gr/~lourakis/levmar/ Andere Option wäre statt Mathlab, Scilab zu benutzen, dort ist der Algorithmus enthalten - die Software ist kostenlos: * lsqrsolve -> minimize the sum of the squares of nonlinear functions, levenberg-marquardt algorithm. Gruß Marvol
Mar Vol schrieb: > Hallo. > > Der lsqnonlin ist in der Toolbox Optimierung drin, wahrscheinlich ist > die nicht beim Standardpaket dabei (kenne mich mit Mathlab nicht aus). > > Alternativ kannst Du das Modul levmar nehmen, dort gibt es auch eine > Mathlab Schnittstelle: > > http://users.ics.forth.gr/~lourakis/levmar/ > > Andere Option wäre statt Mathlab, Scilab zu benutzen, dort ist der > Algorithmus enthalten - die Software ist kostenlos: > > * lsqrsolve -> minimize the sum of the squares of nonlinear functions, > levenberg-marquardt algorithm. > > Gruß > Marvol Hi Marvol ich nehme momentan Octave ist auch eine Alternative. Danke sehr Gruß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.