Jetzt habe ich Messdaten in der Form von (x,Fr) aufgenommen, also die Reibung abhängig von x. Zu bestimmen sind die Parameter Fc,Fs,vs,Fv
Wie mache ich das am Besten? In dem Paper wird gesagt, sie haben den genetic algorithm benutzt um die Parameter zu erfassen. In matlab habe ich dazu die Funktion "ga" gefunden, ich weiss aber nicht, wie genau die Eingangswerte hier zu wählen sind. Alternativ hat mir auch google "nlinfit" für nonlinear least square angeboten, aber da stehe ich auch vor dem selben Problem, dass ich nicht weiss was der Befehl dazu ist.
wenn du die Statistik Toolbox hast, kannst du den Befehl nlinfit benutzen. Was meinst du genau mit "...ich weiß nicht was der Befehl dazu ist"?
Ich habs mal beispielhaft ausprobiert. Da ich deine Daten nicht habe, habe ich einfach mal beliebige Parameter für b gewählt um mir "Messdaten" )(x und y) zu erzeugen.
Code:
b = [1314]; % Zur Erzeugung von "Messwerten"
Fr =@(b,x) b(1)*sign(x)+(b(2)-b(1))*exp(-x./b(3)) +b(4)*x; % Die nl-Fcn
% Messwerte erzeugen
x = linspace(0,10,1000);
y = Fr(b,x)+normrnd(0,0.1,1,1000);
beta0 = [1032]; % Anfangswerte für die Suche beta = nlinfit(x,y,Fr,beta0)% Parameter schätzen
Falls du die Toolbox nicht hast, kann man das ganze auch "relativ einfach" selbst programmieren. Es sieht bei Wikipedia (finde ich) schwerer aus, als es wirklich ist.
http://en.wikipedia.org/wiki/Non-linear_least_squares
Vielen Dank für die Antwort. Sie hat mir schon viel weitergeholfen. Hatte die Syntax in der Matlab-Doku nicht genau verstanden. Leider hat mir nlinfit nicht so gute Werte geliefert.
Gibts noch ne möglichkeit, das ganze zu optimieren oder hast du eine Ahnung, wie genau der "ga" Befehl in Matlab instanziiert wird?
mit dem Befehl ga kenne ich mich leider nicht aus. nlinfit hab ich nachdem ich deinen Post gelesen habe, auch das erste mal benutzt. Ich nehme mal an, dass die Möglichkeiten von nlinfit mit meinem Beispiel nicht wirklich ausgeschöpft wurden. Hast du dir mal die Optionen für den Befehl angeschaut? Du kannst die Toleranzen und auch die Anzahl der Iterationen ändern.
Woher weißt du, dass dir die Funktion "keine guten Ergebnisse" liefert? Stellt sich natürlich die Frage, was gut ist Ich nehme auch mal an, dass deine nichtlineare Funktion auch nur eine analytische Näherungslösung deines technischen Problems ist und vielleicht dadurch gewisse Abweichungen nicht vermieden werden können?
Hi Alex,
danke für die Antwort. Ich habe mir die options noch nicht angeschaut, werde es aber nachholen.
Im Prinzip hatte ich dasselbe wie du mit deinem vorgeschlagenen Code gemacht. Zuerst mal Idealwerte für Fs,Fc,vs,Fv definiert. Messwerte mit Rauschen erzeugt und dann nlinfit Schätzwerte für Fs, Fc,vs, Fv generieren lassen. Diese haben nicht wirklich zu den Werten, mit denen ich die Messdaten erzeugt hatte, gepasst.
Matlab hat ja auch ein Curve Fitting Tool bei dem man unterschiedliche Algorithmen, ist man damit vielleicht besser bedient oder hat jemand Erfahrung mit dieser?
Danke
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.