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

 

Evelje
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 22.06.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2011, 12:38     Titel: Parameteridentifikation
  Antworten mit Zitat      
Hallo,
ich möchte eine Parameteridentifikation eines RIC-Modells (Reihenschaltung) mittels OE-Algorithmus machen. ich habe die Identikation bereits mit einem RC-Modell durchgeführt und das klappt super. Aber bei dem RIC-Modell leider nicht. Wenn ich die Messmatrix selbst aufbaue bekomme ich die Lösung. Ich brauch diese nur leider auch über die Kalkulation mit Output Error.

Code:

%Variablen
t_sim=(0:0.005:10)';     %Simulationszeit  
T_azn=4;                 %Periodendauer
A_flow=0.6;              %Flowamplitude
f_azn=2*pi/T_azn;        %Atemfrequenz
T_samp=0.005;            %Abtastrate
R=3.53;                  %Resistance in mbar/l/sec
C=0.05;                  %Compliance in l/mbar
I=0.01;                  %Inertance in mbar/l/sec^2
num=[R+I/(T_samp*C)+T_samp/C -R-2*I/(T_samp*C) I/(T_samp*C)];                    
den=[1 -1 0];
           
%Eingangsgröße Flow
flow=A_flow*sin(f_azn*t_sim);                   %Funktion Flow
   
%Modell
[t_Modell_RIC,x_Modell_RIC,y_Modell_RIC]=sim('Modell_RIC');   %Modellsimulation aufrufen

%Ausgangsgröße Paw+Pdi
Paus=y_Modell_RIC;
   
%Auswertung zu Fuß
M = zeros(length(Paus)-2,5);
M(:,1) = flow(2:length(Paus)-1);
M(:,2) = flow(1:length(Paus)-2);
M(2:length(Paus)-2,3) = flow(1:length(Paus)-3);
M(:,4) = Paus(1:length(Paus)-2);
Yp = Paus(2:length(Paus)-1);
%Parametervektor
p_vektor = M\Yp;
b0=p_vektor(1);       %Berechnung b0
b1=p_vektor(2);       %Berechnung b1
b2=p_vektor(3);       %Berechnung b2

Rfit=-b1-2*b2
Cfit=T_samp/(b0-b2-Rfit)
Ifit=b2*T_samp*Cfit
       
%Auswertung mit OE bzw. ARX  
z=[Paus flow];
m=oe(z,[3 1 0]);
%m=arx(z,[1 3 0]);
Rfit_oe=-m.b(2)-2*m.b(3)
Cfit_oe=T_samp/(m.b(1)-m.b(3)-Rfit_oe)
Ifit_oe=m.b(3)*T_samp*Cfit_oe
 


Meinen Eingang (flow) schicke ich über ein Simulink Modell (discrete filter)..mit num als Zähler und den als Nenner.

Über Hilfe wäre ich sehr dankbar!!!! Gruss Evelje
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.