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

Exponentialfunktion ohne Kenntnis der Koeffizienten

 

Master P.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2013, 23:55     Titel: Exponentialfunktion ohne Kenntnis der Koeffizienten
  Antworten mit Zitat      
Hallo,

ich habe ein excel-file mit Messdaten. Die y- und x-Daten würde ich gerne mit einer Exponentialfunktion fitten aber leider konnte ich das bisher nicht realisieren. Ich hab diverse m.file zu Analyse und fitting von Exponentialfunktion ausprobiert aber ich konnte bisher nie akzeptabel meine Funktion annähern. Hat einer von euch vielleicht eine Idee, wie man sowas am leichtesten hinbekommt ohne Kenntnis der Koeffzienten?

Die Funktion hat meiner Vermutung nach die Form:

y(t)=a-b.*exp(-1/c*x), wobei b=y(0)-a

Ich würde mich freuen, wenn mir jemand weiterhelfen kann da ich total auf dem Schlauch stehe.

x_y_data.xls
 Beschreibung:

Download
 Dateiname:  x_y_data.xls
 Dateigröße:  55.5 KB
 Heruntergeladen:  442 mal


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.09.2013, 07:36     Titel:
  Antworten mit Zitat      
Zitat:
Ich hab diverse m.file zu Analyse und fitting von Exponentialfunktion ausprobiert aber ich konnte bisher nie akzeptabel meine Funktion annähern.
das klingt natürlich informativ aber da meine glaskugel letzte woche runtergefallen ist muss ich doch nochmal nachfragen was du denn versucht hast und inwieweit das keine akzteptablen ergebnisse waren. code beispiele sind hier angebracht. siehe dazu den post aus meiner signatur. zum thema curvefitting giebts in diesem forum schon sehr viel. kann mir garnicht vorstellen das du da nicht fündig geworden bist.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Super8film
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 13.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2013, 08:41     Titel: Re: Exponentialfunktion ohne Kenntnis der Koeffizienten
  Antworten mit Zitat      
Master P. hat Folgendes geschrieben:

Die Funktion hat meiner Vermutung nach die Form:

y(t)=a-b.*exp(-1/c*x), wobei b=y(0)-a



yo, ist halt bei deiner Messreihe nicht ersichtslich. Der Punkt y(0) existiert ja nicht. Wovon soll man da ausgehen o0.


- a scheint der Wert zu sein, an dem die Kurve konvergiert

- Da die kurve aus dem oo kommt und richtung a konvergiert müsste die Form deiner Kurve [a + b*exp(-x/c)] sein, oder mache ich gerade nen gedanken fehler?

- und vllt. kannst du jetzt einfach nen LGS aufstellen mit den unbekannten und es lösen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Master P.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2013, 09:52     Titel:
  Antworten mit Zitat      
Nein du hast vollkommen Recht, ich habe mich vertan mit meiner Funktion. Sie hat die Form [a + b*exp(-x/c)]!

Ich hab mit mit diesem m.file hier etwas herumgespielt und dabei einen ersten Eindruck für die Koeffizienten bekommen. Leider passen die immernoch nicht so wirklich. (a=6.6365 b=44.4545 c=5.9851)

http://www.mathworks.com/matlabcent.....t-guess/content/exp2fit.m

Anschließend habe mit dem cftool noch ausprobiert die Kurve näher zu fitten aber auch ohne Ergebniss. Komischerweise komme ich mit eine power-fit näher an die Ursprungsfunktion als mit einem Exponentialfit. Woran kann das liegen, da die Funktion ja schließlich eher nach einer Exponentialfunktion aussieht?

Eigentlich wollte ich nur mal "schnell" was fitten und jetzt sitz ich hier schon ewig dran!
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.09.2013, 10:20     Titel:
  Antworten mit Zitat      
die frage ist immernoch was du bis jetzt selber versucht hast.
ich erziele sehr gute ergebnisse mit cftool oder lsqcurvefit. allerdings mit einer anderen exponentialfunktion genauer gesagt der summe aus 2 exponential funktionen. weiterhin hast du am anfang nur sehr wenige messwerte was natürlich zur folge hat das mittels curvefitting diese nicht so stark berücksichtigt werden da ja versucht wird die summe der fehler quadrate zu reduzieren. du könntest jetzt versuchen zuerst linear am anfang zu interpolieren zb zwischen den ersten beiden werten um mehr messwerte zu erzeugen und damit den fin in die richtung zu zwingen aber ich denke die lösung mit den 2 exponentialfunktionen ist einfacher.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Master P.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2013, 10:40     Titel:
  Antworten mit Zitat      
Ein fit selber zu schreiben habe ich bisher selbst nicht probiert, da ich nicht wirklich ein Ass in Matlab bin. Eine Interpolation der Anfangswerte verknüpft mit einem Exponentialfit hört sich auch schon sehr komplex an.
Ich dachte eigentlich auch, dass es ganz easy mit dem cftool funktioniert, was es ja auch tut. Aus diesem Grund habe ich bisher versucht mich mit fertigen m.file herumzuschlagen oder mit dem cftool.

Aber du hast vollkommen Recht, dass es an der geringen Anzahl von Messwerte zu Anfang liegt. Über eine stärker Gewichtung der Anfangswerte habe ich auch nachgedacht und bin im Forum fündig geworden, leider konnte ich das Bsp nicht so richtig nachvollziehen.

Der Tip mit der Summe aus zwei Exponentialfunktionen klappt ganz gut nur leider möchte ich, dass die Funktion bei meinen max(y)-Wert startet. Kann man sowas irgendwie erzwingen?

Vielen Dank schonmal für die Anregungen!
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.09.2013, 10:53     Titel:
  Antworten mit Zitat      
eine funktion bei einem fit durch einen bestimmten punkt einer messung zu zwingen finde ich zwar nicht sinnvoll geht aber auch indem man die funktion einfach so schreibt. exp(0)=1 damit kann man arbeiten.
damit wird der fitt dann aber nicht mehr so schön. ich halte das ergebniss cftool liefert immernoch für das beste.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Master P

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2013, 11:10     Titel:
  Antworten mit Zitat      
Ok das klingt logisch, aber ist es denn nicht irgendwie möglich den Fit im y-Bereich zu begrenzen ohne den Fit zu verändern. Ich Frage danach, da ich gerne ein inset im plot zeigen möchte und dabei soll der Startwert der Funktion klar zu erkenne sein. Hättest du ein Bsp zur Interpolation der ersten beiden Messwerte oder kannst du auf einen Thread hier im Forum verweisen.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.09.2013, 11:18     Titel:
  Antworten mit Zitat      
was du fittest und was du später plottest sind 2 paar schuhe.
wenn du die y achse bregrenzen willst geht das mit ylim
Code:
xx=linspace(1,2,100)';
yy=interp1(xData(1:2),yData(1:2),xx);

das interpoliert linear zwischen den ersten beiden werten.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Master P

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2013, 12:02     Titel:
  Antworten mit Zitat      
Ich danke dir für dein Hilfe! Habs jetzt auf eine sehr unelegante Art und Weise gelöst aber es klappt. Die interpolierten Werte habe ich herauskopiert und ein neues excel-sheet erstellt und quasi so meine Werte angepasst, sodass die FUnktion besser gefittet wird. Geht das auch auf eine elegante Art, dass beide Lösungen direkt verknüpft werden ohne das ich in meine Daten "pfuschen" muss?
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.09.2013, 12:24     Titel:
  Antworten mit Zitat      
Zitat:
Geht das auch auf eine elegante Art?
mit cftool gehts über die weights.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
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.