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 Toolbox, custom equations

 

nelros
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2011, 15:51     Titel: Curve Fitting Toolbox, custom equations
  Antworten mit Zitat      
Hi,
Warum verändern sich die konstanten einer Gleichung wenn ich sie mit "Polynomial" erstelle und dann in "Custom Equations" eingebe?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.11.2011, 16:20     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
nelros
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2011, 16:45     Titel:
  Antworten mit Zitat      
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ß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.11.2011, 17:11     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philip
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2014, 23:28     Titel: Näherung mit Custom Equations noch nicht optimal
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2014, 10:06     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philip
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.01.2014, 02:25     Titel:
  Antworten mit Zitat      
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

matlab.JPG
 Beschreibung:

Download
 Dateiname:  matlab.JPG
 Dateigröße:  50.78 KB
 Heruntergeladen:  938 mal
excel-daten.jpg
 Beschreibung:

Download
 Dateiname:  excel-daten.jpg
 Dateigröße:  79.95 KB
 Heruntergeladen:  910 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.01.2014, 09:48     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philip
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.01.2014, 17:19     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.01.2014, 17:47     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philip
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2014, 19:00     Titel:
  Antworten mit Zitat      
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. Wink

Vielen Dank!
Grüße,
Philip

5-Werte-Anpassung.JPG
 Beschreibung:

Download
 Dateiname:  5-Werte-Anpassung.JPG
 Dateigröße:  44.76 KB
 Heruntergeladen:  816 mal
5-Werte.JPG
 Beschreibung:

Download
 Dateiname:  5-Werte.JPG
 Dateigröße:  42.33 KB
 Heruntergeladen:  847 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.01.2014, 21:17     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philip
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 23:44     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philip
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2014, 00:22     Titel:
  Antworten mit Zitat      
Sorry, wegen dem Doppelpost, aber diese Richtung wird möglicherweise zielführend sein?
http://www.mathworks.de/videos/usin.....ation-problems-68769.html

Vielen Dank!
Grüße,
Philip
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2014, 09:48     Titel:
  Antworten mit Zitat      
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
Code:


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:
Code:
MultiStart
GlobalSearch
patternsearch
ga


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
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.