Hallo ich brauche dringend Hilfe beim Anpassen meiner simulierten Linie an meine Messwerte. Wäre super, wenn mir jemand hilft.
Ich sitze den ganzen Tag vor dem PC und versuche mich schlau über die lsqcurvefit Funktion zu machen. Mir qualmt der Kopf und ich finde einfach keine passende Beschreibung. Kennt jemand ein Link, wo dieses Thema mal ausführlich beschrieben wird? (Bitte nicht die Matlab Hilfe Funktion)
Meine Messwerte:
Code:
F=[]; %Kräfte werden auf x-Achse aufgetragen
v=[]; %Geschwindigkeiten auf der y-Achse
Ausgang: daraus resultieren 6 unterschiedliche Kraftverläufe, jedoch interessieren mich nur die Maximalwerte. Diese 6 Maximalwerte sollen an die Messwerte F=[] angepasst werden.
Parameter im Modell: sigma0,sigma1,sigma2,vs,Fs,Fc,a
(Für diese wollte ich Werte haben)
function F=myfun(xdata,sigma0,sigma1,sigma2,vs,Fs,Fc,a);
%Muss an diese Stelle die Funktion geschrieben werden? Oder weiß Matlab das automatisch aus dem Simulink-Modell?
ydata=[]; %Messdaten Kraft
xdata=[]; %Messdaten Geschwindigkeit
x0=[]; %Anfangswerte?? Für die Parameter???
[xdata,sigma0,sigma1,sigma2,vs,Fs,Fc,a]=lsqcurvefit(@myfun,x0,xdata,ydata);
Hallo, inzwischen bin ich etwas weiter.
Ich habe 6 Messdaten (xdata,ydata).
Über meine Simulation erhalten ich ebenfalls 6 Messdaten (x-Werte sind gleich xdata/ Y-Werte weichen ab und sollen angepasst werden)
Ich habe 7 Variablen in meinem Simulink Modell.
In meinem Matlab-Editor steht:
ja stimmt.
jetzt kreidet er mir das auch nicht mehr an.
Ich erhalte jetzt für x aber meine Startwerte und keine angepassten Werte.
Code:
Warning: Trust-region-reflective algorithm
requires at least as many equations as
variables; using Levenberg-Marquardt
algorithm instead.
> In lsqncommon at 56
In lsqcurvefit at 253
In VDA_Kennung_curvefit at 65
was passiert, wenn du den Startwert ein wenig variierst? Dieselbe Meldung?
- Falls nein: dann hast du tatsächlich das Minimum als Startwert angegeben. Daran denken, dass lsqcurvefit nur lokale Minima findet.
- Falls ja: meine Vermutung wäre, dass das Simulink-Modell sich die Parameters aus dem falschen Workspace zieht. Diesen Workspace kann man über die Option 'SrcWorkspace' setzen.
Je nach Release geht das leicht unterschiedlich, z.B. so
Kann man leider nicht erahnen, wenn es nicht beschrieben wird.
Kannst du mal alle beteiligten Funktionen in der verwendeten Form sowie das Modell posten? Wenn ein Posten des gesamten Modells ein Probkem ist, kannst du die wesentlichen Bestandteile ja durch andere Blöcke ersetzen - die Problematik sollte halt erkennbar sein.
Was man noch versuchen könnte: da deine Startwerte in sehr unterschiedlichen Größenordnungen sind, erwartest du das wohl auch von der Lösung --> Option 'TypicalX' anpassen.
Simulationen sind grundsätzlich ja immer fehlerbehaftet. Bei der Schätzung von Gradienten kann es dann problematisch werden, wenn die Datenpunkte zu nah beieinander liegen --> Option 'DiffMinChange' setzen (z.B. auf 1e-3).
der letzte Eingabeparameter von lsqcurvefit ist options. Je nach Release kann man optimset oder optimoptions verwenden, um den passenden Input zu erzeugen, also:
Hat es eventuel etwas mit der TolFun Option zu tun?
Optimization completed: The final point is the initial point.
The first-order optimality measure, 0.000000e+00, is less than
options.TolFun = 1.000000e-04.
Für verschiedene x-Werte kommen definitiv andere F-Werte heraus
Hast du das unabhängig von der Optimierung getestet oder wirklich mit dem Debugger im Kontext der Optimierung?
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.