ich will eine Parameteridentifikation durchführen. Ich habe eine Gleichung (Materialmodell) welche 2 Parameter enthällt, welche ich so bestimmen will, das die Funktion möglicht durch die Experimental Daten (xy-DatenSatz 1) verläuft (nichtlinear). Das funktioniert super mit lsqcurvefit etc. Jetzt will ich aber die 2 Parameter bestimmen und dabei diese möglichst gut an zwei unterschiedliche Experimental Datensätze anpassen, also xy-DatenSatz 1 und xy-DatenSatz 2. Das Ergebnis soll sein, das ich mit einem Satz von Parametern möglichst gut beide Kurven der Datensätze beschreiben kann. Die x und y-Werte der Datensätze sind jeweils Spaltenvektoren.
Mit welcher Funktion mache ich das in Matlab?
fgoalattain scheint mein Problem m.M.n. nicht zu lösen, oder sehe ich das falsch?
Ich sehe da nicht wie ich die jeweiligen y-Werte reinbringen soll...?
Deswegen kein Ansatz dazu
Ich hatte noch etwas anderes Versucht:
Nach der least squares methode
x1 sind die x-werte von datensatz und y1 y-werte von datensatz 1 und das gleiche gilt für x2 und y2. Jeweils Spaltenvektoren
Simga ist das Materialgesetz
Das klappt, allerdings liegen beide Kurven übereinander, beschreiben perfekt den einen Datensatz, aber garnicht den zweiten, also als wenn er nicht beachtet worden wäre...?
Vielen Dank für eure Hilfe
Bin auch gerne für neue Ansätze dankbar!
wie wäre es denn, die beiden Datensätze einfach aneinanderzuhängen und weiter lsqcurvefit zu verwenden?
Zitat:
Das klappt, allerdings liegen beide Kurven übereinander, beschreiben perfekt den einen Datensatz, aber garnicht den zweiten, also als wenn er nicht beachtet worden wäre...?
Könnte sein, dass der Solver in ein lokales Minimum gelaufen ist --> mal andere Startwerte versuchen.
Wouh, erstmal Danke für die Turbo schnelle Antwort!
Andere Startwerte habe ich schon versucht, das gleiche Ergebnis.
Aneinanderhängen geht leider nicht, da es sich um anisotrope Daten handelt.
Aber es muss ja eine Lösung geben für diese Art von Problem, selbst auf der Seite von MathWorks hat jemand etwas stark ähnliches gefragt, und keine Antwort bekommen.
In der Literatur ist das beschrieben, ich kanns in matlab nur nicht umsetzen.
Irgend welche anderen Ideen?
gamultiobj vielleicht? Geht da damit?
Aneinanderhängen geht leider nicht, da es sich um anisotrope Daten handelt.
Sorry, aber das bedeutet...?
Zumindest in diesem Fall entspricht das genau deiner Zielfunktion, und das ist auch noch so, wenn du unterschiedlich viele Datenpunkte pro Kurve hast.
Zitat:
Aber es muss ja eine Lösung geben für diese Art von Problem, selbst auf der Seite von MathWorks hat jemand etwas stark ähnliches gefragt, und keine Antwort bekommen.
Du meinst MATLAB Answers? Das ist letztlich auch keine viel andere Community als hier. Wenn du eine Antwort von MathWorks haben möchtest, würde ich den Technischen Support kontaktieren.
Zitat:
Das klappt, allerdings liegen beide Kurven übereinander,
Bei den momentanen Daten verwundert mich das nicht, da x1 und x2 sehr ähnlich sind. Wenn man das nun in die gleiche Formel einsetzt, kommen natürlich auch ähnliche y-Werte und somit Datenpunkte heraus.
Zitat:
aber garnicht den zweiten, also als wenn er nicht beachtet worden wäre...?
Kann ich zumindest mit den gegebenen Daten nicht nachvollziehen.
Ja die Daten sind schlecht gewählt von mir, die echten haben aber über 2000 Datenpunkte.
Dann war ich eventl. vorschnell, wie meinst du genau die Daten aneinanderhängen?
Also es sind Daten aus 2 verschiedenen Belastungsrichtungen (Also Spannungen [N/mm^2]), die kann ich ja nicht einfach zusammen schmeißen in einen Vektor. Oder habe ich falsch verstanden was du mit aneinander hängen meintest?
Ja die Daten sind schlecht gewählt von mir, die echten haben aber über 2000 Datenpunkte.
Wenn du die Daten weitergeben kannst - von der Größe her sollte es kein Problem sein, das als .mat-Datei anzuhängen.
Zitat:
Dann war ich eventl. vorschnell, wie meinst du genau die Daten aneinanderhängen?
x = [x1; x2];
y = [y1; y2];
Zitat:
die kann ich ja nicht einfach zusammen schmeißen in einen Vektor
Warum nicht? Es läuft genau auf das hinaus, was du momentan als Zielfunktion hast - nur dass die beiden Summen zu einer zusammengefasst werden.
Ist die Anzahl der Datenpunkte bei beiden Kurven gleich? Wenn eine Kurve deutlich mehr Datenpunkte hat als die andere, dann wäre es mit der momentanen Zielfunktion klar, dass sich der Fit mehr oder weniger stark an der Kurve mit mehr Datenpunkten orientiert. Da könnte man z.B. einen Gewichtsfaktor einführen.
Habe jetzt hier mal Beispiel-Datensätze, Auszüge aus den Originalen.
Hatte es mit Gewichtungsfaktor schon probiert, der funktioniert auch, aber zwei Dinge stören mich:
1. Die Kurve sollte eigentlich immer weiter Ansteigen und nicht absteigen
2. Wenn ich beide plotte (hier rot und blau), dann liegen sie direkt über einander. Das würde ich nicht erwarten, oder interpretiere ich da was falsch und es sollte so sein?
x1 bis y2 Werte sind in der m-file
0.2 und 0.8 sind die Gewichtungsfaktoren (In Summe 1)
Zum aneinander hängen: Ich hatte dich richtig verstanden, hatte es so schon geamcht, da kommt aber eine Funktion mit einer Hysterese bei raus, also eine die wieder in den Ursprung zurückläuft...?
zu 1.: bei den gewählten Gewichten sehe ich das nicht. Wenn beide Gewichte = 0,5 sind, dann schon. Sind die Parameter, die du als Ergebnisse erhältst, denn sinnvoll?
zu 2.: du möchtest ja für die beiden Kurven dieselben Parameter. Da du ähnliche x-Werte hast, bekommst du ähnliche y-Werte, also fast die gleiche Kurve. Anders gesagt: du bekommst die gleiche Kurve und schaust dir lediglich unterschiedliche Punkte auf der Kurve an
Zum aneinander hängen: Ich hatte dich richtig verstanden, hatte es so schon geamcht, da kommt aber eine Funktion mit einer Hysterese bei raus, also eine die wieder in den Ursprung zurückläuft...?
Kannst du mal posten, was du da gemacht hast? Für das Plotten musst du die Datenpunkte schon wieder trennen...
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
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.