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

Daten mit Glockenkurve interpolieren

 

paillette
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 12.06.09
Wohnort: ---
Version: 6.5 , R2008a
     Beitrag Verfasst am: 08.07.2009, 16:37     Titel: Daten mit Glockenkurve interpolieren
  Antworten mit Zitat      
Hallo,

ich habe zwei Vektoren, x und y, und möchte diese nun mit einer Glockenkurve interpolieren. Habe bereits versucht das ganze mit lsqnonlin oder lsqcurvefit zu lösen, was aber jedes Mal zu "Optimization terminated" führt, mit unterschiedlichen Meldungen.
Gibt es eine einfachere Möglichkeit die Parameter zu erhalten? Habe mir auch die Matlab-Hilfe zu den Funktionen durchgelesen und sowohl Aufruf als auch die Hilfsfunktion bsp. myfun genauso wie im Beispiel gestaltet.

Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2009, 17:20     Titel:
  Antworten mit Zitat      
Hallo.
Die Anpassung ist mit lsqcurvefit möglich. Hast du gute Startparameter vorgegeben?? Falls nich solltest du das unbedingt machen, notfalls auch durch probieren.

Du meinst eine Normalverteilung(Gauss)? Als Glockenkurve?

Code:
function F=Glocke(Koeff,xWerte)

F=1./(Koeff(1)).*exp(-1*((xWerte-Koeff(2))./Koeff(1)).^2);

 
Diese Funktion speicherst du bei dir.
folgendermaßen kannst du jetzt einen Aufruf starten:

Code:

S=[1  1];%Anfangsparameter
[Koeff2,Abw]=lsqcurvefit(@Glocke,S,x_von_dir,y_von_dir);
plot(x_von_dir,Glocke(Koeff2,x_von_dir),x_von dir,y_von_dir,'r.')


Läuft es jetzt?

Laughing
Private Nachricht senden Benutzer-Profile anzeigen
 
paillette
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 12.06.09
Wohnort: ---
Version: 6.5 , R2008a
     Beitrag Verfasst am: 08.07.2009, 17:27     Titel:
  Antworten mit Zitat      
Hallo

das mit den Startwerten ist etwas kompliziert, da es eine Funktion werden soll und die Startwerte immer verschieden sein werden. Wenn ich es mit den Startwerten [1 1] versuche, dann erhalte ich wieder denselben Fehler

Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.

Heißt das meine Startwerte sind zu weit entfernt?

Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Diddy
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 61
Anmeldedatum: 02.08.07
Wohnort: ---
Version: 2009a
     Beitrag Verfasst am: 09.07.2009, 08:24     Titel:
  Antworten mit Zitat      
Hi,

paillette hat Folgendes geschrieben:

Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.


dann nutze mal das hier:

Code:

options=optimset(par1,parvalue1);
x = lsqnonlin(fun,x0,lb,ub,options)
 


Mit den Optionen werden die Parameter für den Fit bestimmt. Damit mal rumspielen.
Ich nutze meißt:
TolX
TolFun
MaxIter

Gruß,
Christian
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.07.2009, 09:15     Titel:
  Antworten mit Zitat      
Dankeschön jetzt hatte es schonmal funktioniert, ob die Werte gestimmt haben, konnte ich noch nicht überprüfen.
Aber Danke für den Tip mit optimset, habe allerdings noch eine Frage dazu:
Für Nullstellenprobleme beispielsweise ist mir der Unterschied zwischen TolFun und TolX klar, TolFun ist die Differenz zwischen dem Wert an der vermeintlichen Nullstelle und 0, TolX ist die Differenz zwischen der tatsächlichen Nullstelle und der gefundenen Nullstelle. Wie jedoch kann ich das bei Approximation deuten und woher kennt Matlab das tatsächlich x oder bringe ich da was durcheinander?
Danke!
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 09.07.2009, 13:03     Titel:
  Antworten mit Zitat      
Die Optimierungsfunktionen von MATLAB und der der Optimization Toolbox sind sehr mächtig, aber durchaus kompliziert. Erfahrungsgemäss sind Mathematik ganz OK damit, Ingenieure LIEBEN aber die Curve Fitting Toolbox, das sie (auch) interaktiv zu nutzen ist und nicht alle Details über die dahinterliegende Mathematik kennen müssen.

Ich habe mal einen Screenshot angehängt wie das ausschaut. Das Ganze hat mich 60 s gekostet. Mit der Optimization Toolbox würde ich persönlich eine Stunde brauchen.

Andreas

gauss_cf.jpg
 Beschreibung:

Download
 Dateiname:  gauss_cf.jpg
 Dateigröße:  117.64 KB
 Heruntergeladen:  599 mal
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
paillette
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 12.06.09
Wohnort: ---
Version: 6.5 , R2008a
     Beitrag Verfasst am: 09.07.2009, 14:34     Titel:
  Antworten mit Zitat      
Okay und welche Funktion der Toolbox nutze ich am besten, um die Daten zu fitten, nicht interaktiv?

Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 10.07.2009, 10:18     Titel:
  Antworten mit Zitat      
Ich würde zunächst einmal interaktiv experimentieren und dann "Generate M-Code" klicken => programmatische Lösung ohne zu progammieren. Grundsätzlich kann man aber auch einfach programmieren. Der Befehl zum Fitten heisst FIT Wink

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
paillette
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 12.06.09
Wohnort: ---
Version: 6.5 , R2008a
     Beitrag Verfasst am: 13.07.2009, 16:27     Titel:
  Antworten mit Zitat      
Gibt es auch eine Möglichkeit eine Matrix mit einer Glockenkurve zu fitten?

Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.07.2009, 17:21     Titel:
  Antworten mit Zitat      
Matrix fitten, hmm. Also eine Fläche fitten? Oder mehrere Kurvenfittings nacheinander? Oder gleichzeitig??

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.07.2009, 17:25     Titel:
  Antworten mit Zitat      
Also das SFTOOL, surface fitting tool is noch relativ neu und ich kenne es nicht so gut. Wie der Name schon sagt kann man Flächen fitter. Gauss ist nicht standardmässig dabei, aber es gibt "customer equation" oder es scheint nichts dagegen zu sprechen, dass das hier auch geht.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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 - 2024 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.