|
|
ODE gegen Messdaten fitten |
|
LaborDodo |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 01.11.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.12.2018, 18:16
Titel: ODE gegen Messdaten fitten
|
|
|
|
|
Hallo zusammen,
ich habe ein kleines Problem ein ODE-System gegen Messdaten zu fitten. Ich habe da System mal etwas Abgespeckt um es zu verdeutlichen.
Prinzipiell habe ich zwei Funktionen (geschachtelt) und eine Art Hauptprogramm.
In der ersten Funktion befindet sich mein ODE-System, welche folgendermaßen aussieht.
Diese Funktion wird in einer Funktion darüber in eine anonyme Funktion eingebettet, damit ich einen Solver (der ja nur t und y erwartet) verwenden kann. Diese Funktion bekommt auch meinen zu fittenden Parameter k1 übergeben.
Das Hauptprgramm ruft nun diese Funktion auf und übergibt ein k1. Das funktioniert soweit einwandfrei. Ich habe mir testweise ein paar zahlen für einen Fall ausgeben lassen und machte jetzt mit leicht verändertem k1 gegen diese Messwerte fitten.
Fehler:
Not enough input arguments.
in der Zeile mit der Anonymen Funktion.
Ich hoffe ich bin hier nicht völlig auf dem Holzweg. Falls es dafür ein völlig anderen Ansatz gibt freue ich mich natürlich trotzdem.
Vielen Dank und beste Grüße
LaborDodo
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 06.12.2018, 16:15
Titel: Re: ODE gegen Messdaten fitten
|
|
Hallo LaborDodo,
Zitat: |
Not enough input arguments.
in der Zeile mit der Anonymen Funktion. |
Bitte poste die komplette Fehlermeldung. Dann würde klar werden, welches "die Zeile mit der anonymen Funktion" ist.
In Deinem Code gibt es zwei Funktionen die "fun" heißen. "function1" fehlt. "function2" wird einmal als Funktion aufgerufen:
danach aber als Function-Handle:
Dies entspricht dem Aufrufen von
function2()
ohne Input-Argumente. Ich vermute, Du meinst:
Gruß, Jan
|
|
|
LaborDodo |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 01.11.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.12.2018, 20:57
Titel:
|
|
|
|
|
Hallo Jan,
vielen Dank für deine Antwort.
Ich habe den Code versucht etwas schöner zu machen. Daher die falschen Namen der Funktionen. Sorry.
Hier nun nochmal mein echtes Codebeispiel.
Folgende Zeile
dient mir lediglich als Test ob das durchreichen der Variablen klappt und ich rausbekomme was rauskommen soll. Übergeb ich einen Weert von 2 passen funktion und Testwerte zusammen, was logisch ist, weil die Werte so erzeugt wurden. Also nur ein Test.
Fehlermeldungen:
benutze ich
Error using folge_sim
Too many input arguments.
Error in lsqcurvefit (line 213)
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});
Error in main_fit (line 14)
fit = lsqcurvefit(@folge_sim,a,t_data,y_data);
Caused by:
Failure in initial objective function evaluation. LSQCURVEFIT cannot continue.
benutze ich
Not enough input arguments.
Error in folge_sim (line 3)
f = @(t,y) folge_sim_fun(t,y,k1);
Error in main_fit (line 14)
fit = lsqcurvefit(folge_sim,a,t_data,y_data);
Aktuell bin ich vollständig verwirrt.
Vielen Dank und Grüße
LaborDodo
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 10.12.2018, 14:27
Titel:
|
|
Hallo LaborDodo,
Wenn es ein Problem mit einer Funktion gib, ist das Lesen der Dokumentation der erste Schritt: https://www.mathworks.com/help/opti.....curvefit.html#buuhcjo-fun
Hier findest Du die Erklärung, dass die übergebene Funktion 2 Input-Argumente haben muss:
Hier hat Dein
folge_sim
nur einen Input stattdessen.
Hier rufst Du, wie ich oben schon mal schrieb, die Funktion folge_sim() ohne Inputs. Beide Fehlermeldungen sind also zu erwarten.
Gruß, Jan
|
|
|
|
|
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.
|
|