Verfasst am: 18.01.2021, 11:16
Titel: Polyfit für eine anharmonische Schwingung erstellen
Hallo Matlab Freunde,
weiß wer wie man einen Polyfit für eine anharmonische Schwingung erstellt? Ich habe eine Funktion für die anharmonsiche Schwingung mit Koeffizienten für den fminsearch erstellt, jedoch schaffe ich es leider nicht einen richtigen Fit für die Schwingung auszugeben... Wie kommt man auf die richtigen Koeffizienten für fminsearch? Für die fünf Koeffizienten wurden derzeit folgende Werte ausprobiert: [0.01 1 0.1 1 1]
Vielen Dank für jede Hilfe!
Anbei der derzeitige Polyfit Plot
Code:
%Bereinigung des Skripts
%-----------------------
clc; closeall; clear variables;
%Laden der Messdaten
%-------------------
A1Daten;
%Definition der Zeitwerte t[s] und der Anfangsamplitude theta[rad] für die Fit-Funktion
%---------------------------------------------------------
t = (0:0.1:20);
theta = (-1:0.01:1);
%Messwerte für Zeit t[s] und Amplitude y[rad] definieren
%--------------------------------
t1 = A1Daten1(:,1);
y1 = A1Daten1(:,2);
%Berechnung der Winkelfrequenz für die Gleichung des anharmonischen Oszillators
w = sqrt(3.480666667/9.81)*(1-((1/16)*0.46675340186084.^2));
%Output der Koeffizienten und finale Fehler E aus den Funktionen
%---------------------------------------------------------------
[coeff01,E01] = fminsearch('funktion_A1',[0.0110.111]);
%Input des Fitparameter in die jeweilige Funktion
%------------------------------------------------
y_fit01 = coeff01(1)+coeff01(2)*0.46675340186084*sin(coeff01(3).*w.*t)+coeff01(4)*(0.46675340186084.^2/192)*0.46675340186084*sin(coeff01(5)*3.*w.*t);
%---------------------------------------
%Plot der Funktion ausgeben
%---------------------------------------
ich sehe ein Problem mit der angesetzten Funktion. Du arbeitest mit sin-Termen, lässt aber keine Phasenverschiebung zu. Das kann also am Anfang nicht mit den Daten zusammenpassen, die mit einem Peak starten. Ich würde also cos statt sin verwenden oder eine Phasenverschiebung mit einbauen.
Mich verwundert übrigens, dass du zwei Schwingungen überlagerst. Ich erkenne in den Daten nur eine Schwingung mit leicht abnehmender Amplitude. Ich würde also Modell insgesamt also eher sowas wählen:
y = a * exp(-b*t) * cos(w*t)
y = (a*t + b) * cos(w*t)
Sofern die benötigten Toolboxen zur Verfügung stehen, sind lsqcurvefit oder fitnlm für diese Aufgabenstellung besser geeignet als fminsearch.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.