|
|
lsqcurvefit bei Funktion mit vielen Eingangswerten |
|
curvefitter |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2014, 14:16
Titel: lsqcurvefit bei Funktion mit vielen Eingangswerten
|
 |
|
 |
|
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:
In meiner Anwendung ist die Funktion fun von sehr vielen Parametern abhängig:
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:
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
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 24.06.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2014, 14:59
Titel:
|
 |
|
 |
|
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 .
Du kannst das beispielsweise so machen: Schreibe eine neue Funktion, in der du die für lsqcurvefit geforderte Funktionsform F(x,xdata) herstellst. Also:
Hier ist x(1) dann dein d. Diese neue Funktion kann dann in lsqcurvefit verwendet werden:
Das ganze geht natürlich auch on-the-fly ohne extra Funktion:
|
|
|
curvefitter |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.06.2014, 13:23
Titel:
|
 |
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|