|
|
Nebenbedingungen beim Curve Fitting - polyfit()? |
|
Flash |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 28.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 09:48
Titel: Nebenbedingungen beim Curve Fitting - polyfit()?
|
 |
Hallo,
bei der Auswertung von Messdaten möchte ich durch die einzelnen Messpunkte y über x einen möglichst gut passenden Graphen y = f(x) legen. Mit
habe ich bereits eine Funktion gefunden, die mir die Koeffizienten für ein Polynom einen Grades meiner Wahl ausgibt (im Beispiel 3); klappt so weit.
Da mir jedoch die zu erwartenden Form des Graphen in etwa bekannt ist, möchte ich gerne zwei Nebenbedingungen einführen:
* Am Punkt x=0 soll auch x' = 0 gelten
* Der lineare Anteil des Polynoms, also der ersten Grades, soll gleich Null sein, polyfit oder eine beliebige andere Funktion soll mir also ein Ergebnis (a b 0 d) für die Koeffizienten liefern .
Wie das möglich ist, habe ich bisher nicht herausgefunden - kann mir hier jemand helfen? Vielen Dank im Vorraus!
(p.s. Curve fitting toolbox wäre vorhanden, ist aber natürlich kein Schaden wenn es auch ohne geht)
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 10:25
Titel:
|
 |
Hallo,
da muss man sich ein wenig selber behelfen. Du willst:
y = a*x^3 + b*x^2 + d
Die Bedingung y'(0) = 0 ist darin ja schon enthalten.
Du kannst das nun auch als lineares Gleichungssystem auffassen und lösen:
für Spaltenvektoren x und y. p enthält dann a, b und d.
Grüße,
Harald
|
|
|
Flash |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 28.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 11:43
Titel:
|
 |
Hi Harald, vielen Dank für deine Antwort!
Oben habe ich nicht erwähnt, dass die Messdaten jetzt nicht unbedingt beste Qualität (viele störende Einflussfaktoren) haben und die gesuchte Funktion f(x) sicher nicht durch alle Punkte laufen wird (wenn überhaupt durch einen einzigen). Dann kann ich das nicht wirklich als mathematisches Gleichungssystem betrachten sondern brauche eine Funktion, die mir einen Graph mit minimalen Residuen (Abweichungen von den Messpunkten) durch meine Punkte legt - oder habe ich deinen Lösungsansatz da falsch interpretiert?
Ein einfaches Beispiel, um zu verdeutlichen, was mein Problem ist:
Meine Messdaten sein:
.
Hierdurch soll nun eine Funktion f(x) = a*x² + 0*x + c gelegt werden. Das Ergebnis einer einfachen quadratischen Interpolation ohne meine beiden Nebenbedingungen zeigt der angehängte Plot.
Beschreibung: |
|
 Download |
Dateiname: |
Beispielplot.png |
Dateigröße: |
7.38 KB |
Heruntergeladen: |
990 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 11:51
Titel:
|
 |
Hallo,
bei Regression jeglicher Art ist es meist so, dass das Gleichungssystem überbestimmt ist, d.h. mehr Gleichungen als Unbekannte und daher keine exakten Lösungen. Der \ - Operator löst solche Gleichungssysteme automatisch so, dass die Summe der Quadrate der Residuen minimiert wird. Probiers doch einfach mal aus
Insbesondere solltest du mit meiner Methode (ohne Nebenbedingungen) dieselben oder zumindest vergleichbare Ergebnisse bekommen wie von polyfit - nur wahrscheinlich schneller.
Grüße,
Harald
|
|
|
Matt Lappen |

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 23.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 11:59
Titel:
|
 |
Hi,
Hier mal mein Standard-Ansatz für Probleme derart.
das 'Schätzen' von Polynomen ist ein Least-Square-Problem, welches sich mit Matlab einfach berechnen lässt.
Nehmen wir an, wir haben folgende Daten:
Du Möchtest ein Poynom, welches eine Eingangsgröße hat, die Terme 2. und 3. Ordnung enthält. Definiere hierfür das Model für die gewünschten Terme (Matlab-Hilfe für x2fx() gibt Aufschluss) und bilde die Designmatrix:
Die Parameterschätzung lautet nun:
b enthält die Koeffizienten der Terme, wie in model ( [2.Ordnung, 3.Ordnung]) definiert. Berechnen kannst du das Modell auf zwei Arten:
Ich hoffe das ist verständlich, das ganze entspricht auch Haralds-Lösung. Die Darstellung hier ist nur etwas 'aufgerollt', um es verständlich darzustellen.
Gruß,
Matt
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 12:05
Titel:
|
 |
Hallo Matt,
die Least-Square - Schätzung kannst du weglassen, da der \ - Operator das automatisch macht.
Grüße,
Harald
|
|
|
Matt Lappen |

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 23.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 12:14
Titel:
|
 |
Hey Harald,
was meinst du mit 'weglassen'?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 12:25
Titel:
|
 |
Hallo,
ich meine damit, dass man das Gleichungssystem, auch wenn es überbestimmt ist, weiterhin direkt mit \ lösen kann. Beispiel:
Grüße,
Harald
|
|
|
Matt Lappen |

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 23.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 12:48
Titel:
|
 |
Tatsache, hatte ich so gar nicht auf'm Schirm. Besten Dank für den Tipp.
|
|
|
Flash |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 28.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.10.2011, 13:51
Titel:
|
 |
Funktioniert! Danke euch beiden!
Zitat: |
Der \ - Operator löst solche Gleichungssysteme automatisch so, dass die Summe der Quadrate der Residuen minimiert wird. |
Das war mir nicht bekannt, deshlab meine Rückfrage.
|
|
|
|
|
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.
|
|