Verfasst am: 25.01.2019, 18:17
Titel: Definierter Start und Endpunkt fuer Fit
Hallo,
ich habe einen Decay von Messwerten, den ich gerne mit einer doppelt exponentiellen Funktion fitten wuerde.
Das Problem dabei: Da es sich um Messwerte handelt, geht die Zeitserie danach natuerlich weiter. Ich habe ein Beispiel hier als MATLAB figure angehaengt.
Ich moechte den fit gerne lokal anwenden (nur auf den Decay). Das ist soweit kein Problem und auch im Beispiel oben bereits passiert (ich definiere einfach Start und Endpunkt).
Jedoch will ich dass die schwarze Kurve im plot explizit beim festgelegten Startpunkt (der genau bei Start des decays ist) beginnt und am Ende des Decays aufhoert und der fit sich nicht bis unendlich fortsetzt. Ich habe in diesem Forum einiges dazu gefunden, jedoch betreffen diese Beispiele stets den start und endpunkt zur fit berechnung. So sieht mein Code derzeit aus (er beinhaltet unter anderem Code vom User Harald):
Code:
bereich = time > time(10) & time< time(21);
xfilt = zeit_fan(bereich);
yfilt = data(bereich);
Ich habe auch mit opts. Startpoint bereits herumgespielt, wobei ich hier den Fehler bekomme, dass die Funktion gegen unendlich geht weshalb der fit abgebrochen wurde, sofern ich hier die gewuenschten Start- und Endwerte eingebe.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ginge dies alternativ auch mit lsqcurvefit?
Vermutlich laesst sich meine oben gezeigte Kurve besser logistisch beschreiben, als doppelt exponentiell. Dies haette den Vorteil dass ich mein gesamtes Zeitfenster fitten koennte und nicht nur den Decay Zeitraum, welcher ja nur wenige Minuten andauert (und ich somit gleich mehrere Decays braeuchte bis der Messzeitraum statistisch relevant wird...)
Ich muesste mir somit eine logistische annaehrung schreiben.. ich bekomme bei folgendem Beispiel jedoch eine Fehlermeldung:
Erhalte ich einen fit. Dieser ist jedoch leider mehr, als unbefriedigend. Ich vermute, die Ursache liegt bei x0: Ich definiere dies als den Startpunkt meines Fits. Da ich jedch in einem System mit zwei Parametern bin (x und y) und gleichzeitig 3 Startwerte angeben muss, bin ich bezueglich der Definition von x0 etwas verwirrt.
Zuletzt bearbeitet von RatioTM am 26.01.2019, 17:13, insgesamt einmal bearbeitet
ich bekomme bei folgendem Beispiel jedoch eine Fehlermeldung
Bitte immer dazu schreiben, welche Fehlermeldung.
Auf den ersten Blick würde ich sagen: du verwendest drei Parameter, gibst aber nur zwei Startwerte vor. Wie gesagt: Startwerte sind die Startwerte für die Parameter, nicht der Anfangspunkt der Kurve.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Okay, ich habe einen netten fit gefunden, den ich gerne hier teile fuer den fall, dass jemand anders einen aehnlichen fit braucht. Ich habe das ganze am Ende doch mit der klassischen fit function geloest...Das schoene bei dieser Funktion ist dass ich ueber f'(x) in meinem Fall an eine Decayzeit komme, sofern ich Randbedingungen fuer minimale und maximale Steigungswerte (f') festlege.
Vielen Dank fuer deine Hilfe, Harald!
Code:
%needed:
% (lower bound!) --when stady state is reached
%upper bound -- in steady state before decay
% x-c where c is time when decay starts! (konstante zum einsetzen!) % x1= Beginn des Decays; x2= Ende des Decays
[xdata, ydata, weights] = prepareCurveData( time, data,data );
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
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.