WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fitting mit fminsearch

 

van-Nilles
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2012, 14:23     Titel: Fitting mit fminsearch
  Antworten mit Zitat      
Hallo zusammen,

ich möchte Daten (Lastkuve) die ich in matlab impotiere mit zwei Gausskurven fitten und mit fminsearch mir die Parameter angeben lassen.
Ich bekomme aber nur eine 1x1-Matrix zurück.
ich hoffe es kann mir jmd weiterhelfen, ich weiß nicht mehr was ich noch ausprobieren soll Confused
hier mein quellcode:

Code:

function  f = gauss(t,a0)
f=a0(1).*exp(-(t-a0(3)).^2/a0(2)^2)+a0(4).*exp(-(t-a0(6)).^2/a0(5)^2);
end


t=(0:1:23);
t2=(0:1:23);
a1=12; a2=22;                                    
c1=2; c2=4;                                    
t1=4; t2=12;                      
a0=[a1,c1,t1,a2,c2,t2];
[a0neu]= fminsearch(@(t) gauss(t,a0),t2,Lastkurve)
 
Private Nachricht senden Benutzer-Profile anzeigen


MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 30.12.2012, 15:16     Titel:
  Antworten mit Zitat      
Hallo,

nun, dann musst du ja auch die Summe der Residuen (Abstände der Kurve zu den Datenpunkten) irgendwo definieren und diese dann minimieren.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.12.2012, 18:07     Titel:
  Antworten mit Zitat      
Hallo,

zudem sollte der Eingabeparameter nicht t, sondern a0 sein:
Code:
@(a0) gauss(t,a0)


Vielleicht hilft ein fertiges Beispiel zur Orientierung:
http://www.mathworks.de/support/tech-notes/1500/1508.html

Dort wird auch angesprochen, dass es Toolbox-Funktionalität gibt (z.B. lsqcurvefit, nlinfit oder natürlich die Curve Fitting Toolbox), die speziell für die Kurvenanpassung gedacht sind. fminsearch würde ich in erster Linie verwenden, wenn diese Toolboxen nicht zur Verfügung stehen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
van-Nilles
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2012, 18:11     Titel:
  Antworten mit Zitat      
danke für die schnelle Antwort.
Jetzt bekomme ich Parameter zurück.
Wenn ich aber die Anfangswerte minimal ändere, kommen jedes mal aucgh komplett andere Parameter raus.
So richtig optimal wirken sie nicht...
Hab ich noch irgendwo einen Fehler drin?

Code:

function  q = gauss(a0,t,Lastkurve)
f=a0(1).*exp(-(t-a0(3)).^2/a0(2)^2)+a0(4).*exp(-(t-a0(6)).^2/a0(5)^2);
q=sum((f'-Lastkurve).^2);
end


t=(0:1:23);
t_2=(0:0.1:23);
a1=10; a2=18;                                    
c1=2.1; c2=5;                                    
t1=3.5; t2=12;                      
a0=[a1,c1,t1,a2,c2,t2];
[a0neu]= fminsearch(@gauss_min,a0,[],t,Lastkurve);
f=a0(1).*exp(-(t_2-a0(3)).^2/a0(2)^2)+a0(4).*exp(-(t_2-a0(6)).^2/a0(5)^2);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 30.12.2012, 19:09     Titel:
  Antworten mit Zitat      
Hast du Haralds Tipps schon probiert? Ansonsten gib mal nach Möglichkeit eine Grafik der Datenpunkte und des Fits an.

Ich befürchte fast, dass du einen globalen Optimierer verwenden musst...
Private Nachricht senden Benutzer-Profile anzeigen
 
van-Nilles
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2012, 20:14     Titel:
  Antworten mit Zitat      
Im Anhang ist ein plot. (rote Kurve ist von fminsearch)
Ich habe die Parameter für fminsearch analog zu diesem Artikel definiert.
http://itp.tugraz.at/LV/kernbich/AppSoft-1/appsoft1/node55.html (letzter Abschnitt)
das sollte doch passen mit a0, oder?

gauss.jpg
 Beschreibung:

Download
 Dateiname:  gauss.jpg
 Dateigröße:  38.76 KB
 Heruntergeladen:  722 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.12.2012, 20:58     Titel:
  Antworten mit Zitat      
Hallo,

ich sehe nun keine methodischen Fehler. Die Ergebnisse sehen auch nicht schlecht aus. Die Gefahr bleibt, dass man in ein lokales Minimum gelaufen ist, oder die Optimierung nicht zu Ende gelaufen ist. Ich würde mir auf jeden Fall den dritten Rückgabeparameter exitflag ansehen.

Ansonsten wie bereits vorgeschlagen andere Methoden probieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
van-Nilles
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2012, 21:33     Titel:
  Antworten mit Zitat      
hat sich erledigt...
ich habe die optimierten parameter unter a0neu gespeichert, aber mit a0 gerechnet Embarassed


Code:
[a0neu]= fminsearch(@gauss_min,a0,[],t,Lastkurve);
f=a0(1).*exp(-(t_2-a0(3)).^2/a0(2)^2)+a0(4).*exp(-(t_2-a0(6)).^2/a0(5)^2);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.12.2012, 00:23     Titel:
  Antworten mit Zitat      
Hallo,

ja, dann ists nicht weiter erstaunlich ;)
fminsearch gibt diesen Wert übrigens ohnehin als zweites Rückgabeargument zurück.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.