|
|
Curve Fitting Toolbox, custom equations |
|
nelros |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 18.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.11.2011, 15:51
Titel: Curve Fitting Toolbox, custom equations
|
|
Hi,
Warum verändern sich die konstanten einer Gleichung wenn ich sie mit "Polynomial" erstelle und dann in "Custom Equations" eingebe?
Gruß
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.11.2011, 16:20
Titel:
|
|
Hallo,
ich gehe mal davon aus, dass die Eingabe an sich korrekt erfolgte.
Wenn du ein Polynom anpasst, kann das auf ein lineares Gleichungssystem reduziert werden, dessen Lösung sich leicht ermitteln lässt.
Wenn du das als custom equation eingibst, wird es als generisches Problem und somit als nichtlineares Gleichungssystem betrachtet, das iterativ gelöst werden muss. Insbesondere kann es auch zu unbrauchbaren Ergebnissen kommen, wenn die Startwerte nicht gut genug sind und der Löser in ein lokales Minimum läuft.
Die Eingabe als "polynomial" wäre als vorzuziehen.
Auf der anderen Seite: fittest du ein Polynom, weil die Daten polynomial zusammenhängen oder weil dir das als erstes in den Sinn kam? Falls letzteres, solltest du dir auch nochmal über das Modell Gedanken machen.
Grüße,
Harald
|
|
|
nelros |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 18.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.11.2011, 16:45
Titel:
|
|
Hi,
danke das war sehr hilfreich.
Wenn ich also eine Gleichung 5ten Grades aus "Polynomial" rausnehme und damit rechne, dann löst matlab sie interativ? sei es in einer "custom equation" oder in einer m-file?
Ich versuche Gleichungen für eine spätere Simulation in simulink vorzubereiten. Kann ich dann irgendwie Matlab sagen er solle sie als LGS behandeln? Kann man das auch in Simulink dann integrieren?
Gruß
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.11.2011, 17:11
Titel:
|
|
Hallo,
ich verstehe nicht, was du mit "Gleichung rausnehmen" meinst. Wenn du mit File --> Generate Code einen Code erzeugst, wird das gleiche gemacht wie in der Curve Fitting GUI.
Deine Simulink-Pläne müsstest du präzisieren, wenn man was dazu sagen soll.
Übrigens gibt es auch die Funktion polyfit - wenn du wirklich nur schnell ein Polynom durch die Daten legen willst, ist Curve Fitting Toolbox an sich ein Overkill.
Grüße,
Harald
|
|
|
Philip |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 02.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.01.2014, 23:28
Titel: Näherung mit Custom Equations noch nicht optimal
|
|
Hallo Zusammen,
ich möchte in Abhängigkeit von Messwerten (8 Stützstellen) die Koeffizienten a,b,c und d folgender Gleichung ermitteln:
y=1-((1-0.81425)*exp((3/4)*(3.31)*((1+(x/a)*(-1))^(b))*(((1+(x/c)*(-1))^d)^2)*x))
Diese Gleichung kann den Messwertverlauf abbilden, habe mich visuell mit Excel an passende Koeffizienten herangetastet. Wenn es das Tool auch hinbekommen würde, dann wäre das auch super ("wissenschaftlicher"). Nur wenn ich die Startwerte eh grob vorgeben muss unterscheidet es sich nicht mehr stark von einer rein visuellen Näherung. Dazu sieht sie bisher in MatLab noch sehr bescheiden aus.
Welche Möglichkeiten habe ich noch?
Vielen Dank!
Grüße,
Philip
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 03.01.2014, 10:06
Titel:
|
|
Hallo,
was genau hast du gemacht, und wo genau liegt das Problem?
Ausgehend von den Startwerten wird eine lokale Optimierung durchgeführt. Das Problem dabei: wenn die Startwerte schlecht sind, kann es sein, dass das lokale Minimum nicht das globale ist. Wie gut die Startwerte gewählt werden müssen, um das globale Minimum zu finden, hängt sehr vom Modell ab.
Der Vorteil des Tools: man findet ein Minimum (zumindest in der Regel - exitflag beachten!). Mit Schätzungen liegt man meist bestenfalls in der Nähe des Minimums. Die Schätzungen sind dann ein guter Startwert für die Optimierungsalgorithmen.
Grüße,
Harald
|
|
|
Philip |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 02.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.01.2014, 02:25
Titel:
|
|
|
|
|
Hallo Harald,
vielen Dank für Deine Antwort.
Ich habe durch Variation der Koeffizienten in Excel den Verlauf der Gleichung an die Messwerte (excel-daten.jpg - hier weniger Stützstellen/Messdatenpunkte abgebildet) optisch angepasst. Wusste aufgrund anderer Erkenntnisse in welchem Bereich ich ca. mit den Koeffizienten "rumprobieren" musste.
Hier:
a = 0,126
b = -2,74
c = 0,7
d = 4,39
In MatLab habe ich die Startwerte für a,b,c,d meinen Erfahrungswerten angepasst und bekomme matlab.jpg raus. Ohne Vorgabe sieht es noch abweichender aus.
Wie die Algorithmen in MatLab funktionieren, da muss ich mir noch mehr Einblick verschaffen. Unter anderem, wie z.B. die Einstellung unter "Fit Options" machen sollte (MaxFunEvals etc.).
Meine optischen Koeffizienten sind schon recht brauchbar, möchte aber auch noch eine "seriöse" Bestätigung.
Dass bei Excel eine positive x-Achse vorliegt ist, da ich es für eine Darstellung transformiert hatte.
Vielen Dank!
Grüße,
Philip
Beschreibung: |
|
Download |
Dateiname: |
matlab.JPG |
Dateigröße: |
50.78 KB |
Heruntergeladen: |
938 mal |
Beschreibung: |
|
Download |
Dateiname: |
excel-daten.jpg |
Dateigröße: |
79.95 KB |
Heruntergeladen: |
910 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 05.01.2014, 09:48
Titel:
|
|
Hallo,
du scheinst mit verschiedenen Daten zu arbeiten.
Im MATLAB-Bild sehe ich Datenpunkte zu 8 verschiedenen x-Werten, in Excel nur Datenpunkte zu 5 verschiedenen x-Werten.
Grüße,
Harald
|
|
|
Philip |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 02.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.01.2014, 17:19
Titel:
|
|
Ohh, den Hinweis habe ich vergessen.
Bisher liegen nur 5 Werte aus den Versuchen vor (die im Excel-Bild). Es werden aber noch weitere für den höheren Dichtebereich folgen. Für den Test in MatLab habe ich mir 3 weitere Werte aus der Excel-Datei herausgelesen, welche dem Verlauf gerecht werden. Weil mehr Werte sollte es ja für MatLab leichter machen.
In dem Excel-Bild ist auch zu erkennen, dass da pro Parametersatz mehrere Messpunkte zu erkennen sind. Es wurden jeweils 5 Versuche durchgeführt, wobei die Ergebnisse so gut wie garnicht voneinander abweichen. Für die MatLab-Punkte wurden diese Werte gemittelt.
Grüße,
Philip
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 05.01.2014, 17:47
Titel:
|
|
Hallo,
vergleich das doch mal unter gleichen Voraussetzungen, also mit den Datenpunkten.
Wenn du eine Kurve mit 4 Parametern mit (im Grunde) 5 Datenpunkten schätzen möchtest, ist natürlich eine genauere Anpassung an diese Datenpunkte möglich, als wenn du 8 hast.
Grüße,
Harald
|
|
|
Philip |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 02.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.01.2014, 19:00
Titel:
|
|
|
|
|
Hallo Harald,
danke für Deine Rückmeldungen!
Habe jetzt nur 5 Werte verwendet.
In "5-Werte.JPG" habe ich Startpoints so belassen, wie es das Tool vorschlägt. Und die sind dann auch gleich der berechneten Koeffizienten.
a = 0.4359
b = 0.4468
c = 0.3063
d = 0.5085
Bei "5-Werte-Anpassung.JPG" habe ich folgende Startpoints vorgegeben (mit Lower/Upper = -Inf/Inf). Genau diese werden dann auch wieder als Koeffizienten ausgegeben. Also passiert quasi nichts. Und so geht es auch irgendwie am Sinn vorbei, wenn ich meine Erfahrungswerte aus der visuellen Näherung so konkret einbringe.
weitere Einstellung:
Robust: Off
Algorithm: Trust-Region
DiffMinChange: 0
DiffMaxChange: 1e-05
MaxFunChange: 200
MaxIter: 200
TolFun: 1
TolX: 5
Änderungen bei den weiteren Einstellungen bringen keinen wirklichen Unterschied.
Gibt es weitere Algorithmen für Custom Equation? Eigentlich sollte MatLab ja mindestens so schlau sein wie ich, der das visuell ziemlich exakt hinbekommt.
Vielen Dank!
Grüße,
Philip
Beschreibung: |
|
Download |
Dateiname: |
5-Werte-Anpassung.JPG |
Dateigröße: |
44.76 KB |
Heruntergeladen: |
816 mal |
Beschreibung: |
|
Download |
Dateiname: |
5-Werte.JPG |
Dateigröße: |
42.33 KB |
Heruntergeladen: |
847 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.01.2014, 21:17
Titel:
|
|
|
|
|
Hallo,
bist du dir sicher, dass die Parameter wirklich komplett gleich bleiben, oder sind es "nur" die ersten 4 Stellen? Das kannst du durch Export der Lösung in den Workspace herausfinden.
Die automatisch gewählten Startpunkte sollten nach Möglichkeit durch bessere ersetzt werden, denn der Computer bzw. der Algorithmus weiß nur das, was ihm mitgeteilt wird.
Insbesondere wird von Curve Fitting Tool ein lokales Optimierungsverfahren verwendet, d.h. ausgehend von den Startpunkten wird entlang der Richtung des steilsten Abstiegs nach besseren Punkten gesucht. Wenn die Startwerte schlecht sind, kommt häufig Unsinn heraus.
Wenn man keine ausreichend guten Startwerte hat, bleibt also nur das Iterieren über verschiedene Startpunkte (per for-Schleife oder mit den Tools aus der Global Optimization Toolbox).
Zitat: |
Eigentlich sollte MatLab ja mindestens so schlau sein wie ich, der das visuell ziemlich exakt hinbekommt. |
MATLAB hat nicht die Kenntnis über das Modell, die du hast. Für MATLAB ist es quasi eine Blackbox: stecke 4 Parameter rein und schaue, wie gut das ist... dann probiers mit anderen 4 Parametern, schau ob das besser ist, etc. - aber eben bedingt durch den Algorithmus mit der Gefahr, in lokale Minima zu laufen.
Deswegen ist es wichtig, alle bekannten Informationen zur Verfügung zu stellen und ausgehend davon die Optimierung zu machen.
Grüße,
Harald
|
|
|
Philip |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 02.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.01.2014, 23:44
Titel:
|
|
Hallo,
also falls ich mit "Save to Workspace" und dann der Eingabe "fittedmodel" im Command Window die vollständigen abgebildet bekomme, dann ja.
Wahrscheinlich ist der richtige Weg eh eine globale Methode.
Läuft das in etwas so: Es wird für die 4 Parameter die beste Kombination gesucht, die den Verlauf abbildet? Theoretisch müsste er ja jeden von -∞ bis +∞ durchlaufen lassen, aber ich könnte ja Grenzen vorgeben.
Das käme in etwa meiner visuellen Methode gleich.
Werde mich jetzt mal in die Global Optimization Toolbox einlesen.
Vielen Dank!
Grüße,
Philip
|
|
|
Philip |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 02.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.01.2014, 00:22
Titel:
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 11.01.2014, 09:48
Titel:
|
|
|
|
|
Hallo,
Zitat: |
also falls ich mit "Save to Workspace" und dann der Eingabe "fittedmodel" im Command Window die vollständigen abgebildet bekomme, dann ja. |
Im Command Window werden die Zahlen meist in gerundeter Form dargestellt. Die volle Stellenanzahl bekommst du z.B. mit
Zitat: |
Wahrscheinlich ist der richtige Weg eh eine globale Methode. |
Wenn du keine vernünftigen Startwerte angeben kannst oder willst, ist das - außer bei sehr einfachen Modellen - notwendig.
Zitat: |
Läuft das in etwas so: Es wird für die 4 Parameter die beste Kombination gesucht, die den Verlauf abbildet? |
Grundsätzlich ja. Die Art, wie gesucht wird, unterscheidet sich zwischen den verschiedenen Algorithmen erheblich.
Geeignet sein könnten hier:
Zitat: |
Theoretisch müsste er ja jeden von -∞ bis +∞ durchlaufen lassen, aber ich könnte ja Grenzen vorgeben. |
Das wäre hilfreich. Ansonsten ist das etwa so, als ob ich dir sagen würde, dass du mal ausgehend von deinem Wohnort den Mount Everest suchen sollst. Wobei du da gegenüber MATLAB im Vorteil bist: du weißt die ungefähre Richtung, in die du gehen musst, und du hast einen zwei- statt vierdimensionalen Parameterraum.
Zitat: |
Das käme in etwa meiner visuellen Methode gleich. |
Eine Alternative wäre, deine visuelle Methode zu programmieren. Als Gütemaß für einen Fit kannst du die Norm der Residuen nehmen.
Grüße,
Harald
|
|
|
|
|
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 - 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.
|
|