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

lsqcurvefit bei Funktion mit vielen Eingangswerten

 

curvefitter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2014, 14:16     Titel: lsqcurvefit bei Funktion mit vielen Eingangswerten
  Antworten mit Zitat      
Hallo liebe Matlab-Gemeinde,

ich habe ein prinzipielles Problem den Fitalgorithmus lsqcurvefit richtig anzuwenden. Ich habe mir bisher sehr viele Beiträge hier im Forum durchgelesen, aber keiner konnte mir weiterhelfen oder ist meinem Problem ähnlich. Die bekannte Verwendung sieht folgendermaßen aus:

Code:
x = lsqcurvefit(fun,x0,xdata,ydata)


In meiner Anwendung ist die Funktion fun von sehr vielen Parametern abhängig:

Code:
function F = fun(d,xdata,para1,para2,para3,para4....paran)


In der Funktion fun gibt es weiter Unterfunktionen, welche nur zur Berechnung von F beitragen und nicht weiter von Belang sind. Die einzige Größe, welche von der Funktion geändert wird, um F zu ändern, ist d. Alle para sind Konstanten, welche aber nötig sind.
Kann ich bei lsqcurvefit überhaupt so eine Funktion verwenden, oder kann ich nur eine Funktion verwenden mit den Eingabewerten(xdata) und der Variablen (x0)?

Kann man den Code dann folgendermaßen schreiben:

Code:
x = lsqcurvefit(@(d) fun(d,xdata,para1,para2,para3,para4....paran),x0,xdata,ydata)


d wird so lange variiert bis xdata optimal auf ydata passt. Bisher funktioniert diese Methode noch nicht. fminsearch funktioniert gut, dauert mir aber zu lange.
Mit exitflag erhalte ich: -2, also Problem ist undurchführbar: Grenzen lb und ub sind inkonsistent. Daraus werde ich leider auch nicht schlauer.

Ich hoffe Ihr könnt mir helfen oder ein paar Tipps geben. Ich wäre Euch sehr dankbar

Mit freundlichen Grüßen,
curvefitter


jac
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2014, 14:59     Titel:
  Antworten mit Zitat      
Was fehlt, ist die Abhängigkeit deiner Funktion vom Datenvektor xdata. Dein Parameter d wird in lsqcurvefit so variiert, dass die Abweichung von F(xdata) zu ydata möglichst klein wird, dass heißt die Funktion F wird an jedem Punkt xdata(i) ausgewertet und mit dem zugehörigen ydata(i) verglichen. Dafür musst du der Funktion F aber auch den Datenvektor xdata übergeben können, was ich bei dir nicht sehe. Wenn alle Werte außer d Konstanten sind, kannst du d nur so einstellen dass F einen speziellen Wert annimmt, das ist aber keine Anwendung für lsqcurvefit, sondern eine einfache Gleichung.

edit:

Ich habe grade irgendwie den Eintrag xdata in deiner Funktion übersehen, sry Smile.
Du kannst das beispielsweise so machen: Schreibe eine neue Funktion, in der du die für lsqcurvefit geforderte Funktionsform F(x,xdata) herstellst. Also:
Code:

function y = Fit_Function(x,xdata)
para1 = 1; para2 = 4; % etc. hier setzt du die ganzen Konstanten fest

y = fun(x(1),xdata,para1,para2,para3,para4....paran)
 

Hier ist x(1) dann dein d. Diese neue Funktion kann dann in lsqcurvefit verwendet werden:
Code:

x = lsqcurvefit(@Fit_Function,x0,xdata,ydata)
 

Das ganze geht natürlich auch on-the-fly ohne extra Funktion:
Code:

Fit_Function = @(x,xdata) fun(x,xdata,para1,para2,para3,para4....paran);

x = lsqcurvefit(Fit_Function,x0,xdata,ydata)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
curvefitter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2014, 13:23     Titel:
  Antworten mit Zitat      
Vielen Dank für ihre schnelle Antwort!
Ich werde ihre Tipps versuchen anzuwenden und mich dann wieder melden, falls ich Erfolg habe oder falls es noch nicht funktioniert.

Liebe Grüße und ein schönes Wochenende,
curvefitter
 
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.