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

Parameteridentifikation Federmassesystem

 

aytugbas
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.12.17
Wohnort: Chemnitz
Version: R2015a
     Beitrag Verfasst am: 05.12.2017, 14:12     Titel: Parameteridentifikation Federmassesystem
  Antworten mit Zitat      
Hallo zusammen,
ich habe ein paar Probleme bei dieser Aufgabe. Ich möchte unbekannte Dämpfungs- und Federkonstanten r und k festlegen durch die Differentialgleichung und Messwerte bzw. Zeitpunkte t und Auslenkung y. Dazu habe ich ode23 verwendet und programmiert aber irgendwas stimmt nicht. Könnt ihr mal schauen? Danke im Voraus Smile

Diffglch: my"+ ry'+ ky = 0

% Differentialgleichung
function f = ode_rhs(t,y,m,r,k)

y1 = y(1); % displacement (deflection)
y2 = y(2); % speed

% rhs of ordinary differential equation
f = [y2; -k/m*y1 - r/m*y2];

end



function y1 = modellfunk(x,tData)
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here
m = 2;
r = x(1);
k = x(2);
dgl = @(t,y) ode_rhs(t,y,m,r,k);
T = tData;
[T,Y] = ode23(dgl,tData,[1 0]);
y1 = Y(:,1);
y2 = Y(:,2);
 
end

 

Code:

y1 = @(x,tdata) modellfunk(x,tdata);
% temp = importdata('oscillation.txt');
T = [0.0 0.6 1.2 1.8 2.4 3.0];
Y = [1.0000 0.3634 -0.4352 -0.3698 0.1029 0.2122];
m = 2;
x0 = [0;0];
options = optimoptions('lsqcurvefit','Algorithm','Levenberg-Marquardt','Diagnostics','on','Display','iter-detailed');
[xstar,resnorm,residual,exitflag,output,lambda,jacobian]=lsqcurvefit(y1,x0,T,Y,[],[],options);
xstar
figure(1);
clf
hold on
axis([0 8 -1 2]);
plot(T,Y(1,:),'ro')
title('ooo');
xlabel('Zeit t');
ylabel('Position y');
legend('y_1','y_2')
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2017, 14:44     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber irgendwas stimmt nicht.

Und woraus schließt du das?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
aytugbas
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.12.17
Wohnort: Chemnitz
Version: R2015a
     Beitrag Verfasst am: 05.12.2017, 14:52     Titel: Hi
  Antworten mit Zitat      
Diese zwei Fehler treten auf.

Error using lsqcurvefit (line 248)
Function value and YDATA sizes are not equal.

Error in diff_federmasse (line Cool
[xstar,resnorm,residual,exitflag,output,lambda,jacobian]=lsqcurvefit(y1,x0,T,Y,[],[],options);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2017, 14:59     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Funktion mit den Anfangswerten aufrufst:
y1(x0, T)
dann kommt ein Spaltenvektor mit 6 Elementen heraus. Dein Y ist aber ein Zeilenvektor. Also Y beim Aufruf von lsqcurvefit transponieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
aytugbas
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.12.17
Wohnort: Chemnitz
Version: R2015a
     Beitrag Verfasst am: 05.12.2017, 18:25     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

wenn du die Funktion mit den Anfangswerten aufrufst:
y1(x0, T)
dann kommt ein Spaltenvektor mit 6 Elementen heraus. Dein Y ist aber ein Zeilenvektor. Also Y beim Aufruf von lsqcurvefit transponieren.

Grüße,
Harald

ja das habe ich in der modellfonktion y1 in matrix umgewandelt, aber funktionierte es nicht dann einfach als 1x6 matrix geschrieben und nun die Konstanten herausgefunden. Ich danke Ihnen.
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.