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

Curve Fitting: konvergierende Funktion

 

phil511
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 22.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2014, 14:19     Titel: Curve Fitting: konvergierende Funktion
  Antworten mit Zitat      
Hallo Community!

Ich bin verusche vergebens eine geiegnete Funktion in meine Datenpunkte zu fitten. Die Datenpunkte haben die Form einer Funktion die gegen einen gewissen Grenzwert konvergiert. (Grenzwert ist bekannt falls das hilft)

Nun habe ich es schon mit dem von Matlab mitgelieferten power1 Typ veruscht und mit einer selbst gebastelten Funktion. Aber beide wollen nicht so richtig passen.

Hat jemand von euch eine Idee wie ich das Problem am besten angehe? Bin für jede Hilfe dankbar!

Hier die Werte zum probieren falls sie jemand braucht.
X:
1024
25344
55216
102024
192000
293888
403310

Y:
250044
292900
301343
308292
309528
310682
311646

Wobei der richtige Grenzwert bei 311659 liegt.


Danke schon mal im Vorraus!
mfg.Philipp

untitled2.jpg
 Beschreibung:
selbstzusammengebastelte

Download
 Dateiname:  untitled2.jpg
 Dateigröße:  30.38 KB
 Heruntergeladen:  455 mal
untitled.jpg
 Beschreibung:
power1

Download
 Dateiname:  untitled.jpg
 Dateigröße:  30.4 KB
 Heruntergeladen:  471 mal
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 25.09.2014, 08:52     Titel:
  Antworten mit Zitat      
Hallo,

verstehe ich das richtig, dass das Problem nicht das Durchführen der Optimierung an sich, sondern viel mehr das Finden des richtigen Modells ist? Wenn ja: es ist hilfreich zu wissen, was hinter X und Y steckt. Viele Prozesse folgen bekannten Modellen. Ansonsten kann man nur völlig ins Blaue hineinraten, und was bringt schon die "perfekte" Modellfunktion, wenn man dann doch nichts damit aussagen kann?

Wenn es doch um die Durchführung geht, hier ein Beispiel, mit dem du dann geeignete Modellfunktionen testen kannst. Ich definiere immer 2 Funktionen.
1) Die Modellfunktion, von der man prüfen möchte, ob sie die Daten gut beschreibt.
2) Ein Fehlermaß, das minimiert werden soll. In dem Fall die Summe der Abstandsquadrate zwischen Ergebnis des Modells und der Vorliegenden Messung Y.
Zusätzlich brauchst du für die Optimierung mit fminsearch immer einen Startwert, von dem aus die Optimierung startet. (Mit der Curve Fitting Toolbox wird das etwas bequemer, da ich die aber nicht habe, mache ich soetwas immer direkt mit fminsearch)
Code:
X = [
1024
25344
55216
102024
192000
293888
403310];

Y = [
250044
292900
301343
308292
309528
310682
311646];

% ohne bekannten Grenzwert (oder als Beispiel mit 2 optimierbaren Parametern)
model1 = @(p,X) p(1)*(X./(X+p(2))); % model function Holling Type 2
e1 = @(p) sum((Y-model1(p,X)).^2); % minimiere Summe der Fehlerquadrate
p0 = [311659, 100]; % Startwert (Vektor)
[p_fit, r1] = fminsearch(e1, p0); % Optimierung

figure
plot(X,Y,'ko', 'markerfacecolor','black')  % Daten
hold on
xi = linspace(min(X), max(X),100);
plot(xi, model1(p_fit, xi), 'r-') % Kurve

% mit Grenzwert (oder als Beispiel mit 1 optimierbarem Parameter)
c = 311659;
model2 = @(p,X) c*(X./(X+p)); % model function Holling Type 2
e2 = @(p) sum((Y-model2(p,X)).^2); % minimize sum of squared errors
p0 = 200; % Startwert (Skalar)
[p_fit, r2] = fminsearch(e2, p0);
plot(xi, model2(p_fit, xi), 'g-')
 


Wie du siehst, sind meine Ergebnisse auch nicht besonders gut. Offensichtlich ist Holling Typ 2 auch nicht die "beste" Modellfunktion, um deine Daten zu fitten. Aber ab hier kannst du alle denkbare für die Funktion einsetzen und schauen, ob etwas sinnvolles bei rum kommt.

Viele Grüße,
Nras.

gomatlab_optimierung.png
 Beschreibung:

Download
 Dateiname:  gomatlab_optimierung.png
 Dateigröße:  3.53 KB
 Heruntergeladen:  489 mal
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.