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

Polyfit liefert richtiges polynom aber plot stimmt nicht

 

Ellc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2010, 19:35     Titel: Polyfit liefert richtiges polynom aber plot stimmt nicht
  Antworten mit Zitat      
Hallo!

ich habe gerade zum ersten mal versucht einige Messdaten mit polyfit zu fitten.
Code:
>> x=[3:15];
>>y=[211.10113, 223.65673, 259.51295, 287.28693, 289.45127, 350.83592, 414.6991, 495.52, 610.1742, 739.06903, 780.89251, 870.31846, 970.16589];
>> p= polyfit(x,y,6);

Um das Ergebnis bewundern zu können habe ich das resultierende polynom mit
Code:
>> t = 0:.1:14;
>> plot(t,polyval(p,t))


geplottet und leider passte das was ich da sehen musste GARNICHT zu dem was ich erwartet hatte. nach einigen vergleichen mit Origin (wo ich mich ein bisschen besser auskenne..) folgendes Resultat:

Die Koeffizienten des polynoms sind (fast) exakt die gleichen wie beim polynomischen fit in Origin. Der unterschied ist nur wenn ich das Polynom in Origin plotte passt es zu den messdaten, wenn ich es in Matlab plotte kommt totaler blödsinn dabei heraus?! Was mache ich da falsch?!

matlab fit.png
 Beschreibung:
Der fit in Matlab (ohne Datenpunkte)

Download
 Dateiname:  matlab fit.png
 Dateigröße:  8.2 KB
 Heruntergeladen:  1584 mal
origin fit.png
 Beschreibung:
fit der gleichen Daten in Origin UND ANGEBLICH HAT DAS POLYNOM DIE GLEICHEN KOEFFIZIENTEN?!)

Download
 Dateiname:  origin fit.png
 Dateigröße:  25.88 KB
 Heruntergeladen:  1610 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2010, 20:34     Titel:
  Antworten mit Zitat      
Hallo,

so ungleich sieht das für mich gar nicht aus. Plotte in Origin doch auch mal von 0 an, wie in deinem MATLAB-Plot.

Und: warum fittest du ein Polynom 6-ten Grades? Die Wirklichkeit spiegelt das ja in den seltensten Fällen wieder... und sie neigen eben zum Überschwingen - siehe dein Beispiel.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ellc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2010, 21:22     Titel:
  Antworten mit Zitat      
Hmmm... also in diesem Fall habe ich einfach nur irgendwie gefittet... Aber wo Du es so sagst... mir ist auch nicht ganz klar wie ich bestimmen soll welchen Grad das Polynom den für einen guten Fit haben soll...

Und die beiden Graphen sollen das gleiche zeigen?! Ich probiere noch mal ein bisschen rum... kapier ich nicht..
 
Ellc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2010, 22:05     Titel:
  Antworten mit Zitat      
OK! Die Ähnlichkeit habe auch ich dann endlich erkannt Wink

Soweit so gut! Danke schon mal dafür dass Du mcih gelehrt hast dass selber hinschauen und nachdenken viel helfen kann! Very Happy

Nun aber zu dem Fit, wie erkenne ich welchen Grad das optimale Fitpolynome hat?!

Ich habe recht willkürlich mit sechs angefangen, aus der Vorstellung heraus dass ein hochgradiges Polynom am meisten Schwankungen berücksichtigt oder so...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2010, 22:33     Titel:
  Antworten mit Zitat      
Hallo,

die Frage ist doch vielmehr: ist überhaupt ein Polynom geeignet?

Woher kommen die Daten?
Welches Verhalten erwartet man?
Was soll mit dem Ergebnis gemacht werden? Vorhersagen?
Geht es um das Aufstellen eines Modells, oder um das Durchlegen einer schönen Kurve? Im letzteren Fall ist vielleicht Interpolation sinnvoller.

Jedenfalls muss man aufpassen, dass man kein Overfitting betreibt - und 7 Parameter bei 13 Datenpunkten sind da eigtl schon drüber. Du siehst ja auch die Probleme, wenn du den Fit zu sehr über den Rand hinaus auswertest.

Falls Regression gemacht werden soll, Vorschläge:
- linear / quadratisch, evtl. mit aufaddiertem Sinus (Saisonalität?)
- exponentiell, evtl. mit aufaddiertem Sinus (Saisonalität?)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ellc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2010, 11:19     Titel:
  Antworten mit Zitat      
Hallo Harald,

dann nutze ich doch mal die Chance und Versuche es mit Deiner Hilfe richtig zu machen. Also bei den Daten handelt es sich im Prinzip um gemittelte Verbrauchsdaten einer Maschine eigentlich waren das mal rund 100000 Messpunkte die ich aber eben gemittelt und "gebinned" (gibts den Ausdruck?) habe. Rund die hälfte der Messpunkte ist unter anderen Laufbedingungen zustande gekommen als die andere Hälfte der Punkte.
Aufgetragen ist das ganze gegen einen Faktor der mehrere Einflüsse zusammenfasst, da eine saubere Trennung der Einflüsse nicht möglich ist.

Dieses Fitting hatte jetzt folgendes "Ziel" Ich möchte aus allen Punkten eine Kurve fitten, und dann für jede der beiden möglichen Laufbedingungen ebenfalls eine Kurve erzeugen um so in einem übersichtlichen Bild hinterher von diesen beiden Kurven den Gesamtfit abzuziehen. Resultat sollte dann also ein Plot sein in welchem die Abweichungen der Leistungsdaten unter den zwei möglichen Laufbedingungen von einem "Normallauf" zu sehen sind....

Verständlich was icih meine?
Ach ja und zu erwarten ist am ehesten ein parabolischer verlauf mit einer Menge Störungen drauf - darum dachte ich eben Polynom zweiten Grades + Störungen "Na dann nehm ich mal eins sechsten Grades.."
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.05.2010, 20:14     Titel:
  Antworten mit Zitat      
Hallo,

erste Frage: warum vorher mitteln? Bei einer Regression ist es ja oft so (und durchaus sinnvoll), dass man eine Punktewolke hat.

Und wenn du quadratisch mit Störungen erwartest, dann nimm doch quadratisches Polynom + cos bzw. sin. - das sollte doch dann gut hinkommen; etwa so:
Code:
p = nlinfit(x,y,@(a,x) a(1) + a(2)*x + a(3)*x.^2 + a(4)*sin(a(5)*x + a(6)), [1 1 1 1 1 0])


Grüße,
Harald
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 - 2024 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.