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

Simulation Zustandsraummodell

 

Kranich90
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2013, 11:30     Titel: Simulation Zustandsraummodell
  Antworten mit Zitat      
Hallo,

ich hoffe, ich finde hier eine Antwort auf meine Frage - vielen Dank schonmal im Vorhinein!

Es geht darum, dass ich einen Beobachter in Form eines Zustandsraummodells vorliegen habe.
Nun möchte ich den Ausgang des Beobachters simulieren.

Ich habe eine Reihe von Eingabewerten für mein beobachtetes System und die jeweiligen Ausgaben des beobachteten Systems. Nun möchte ich den Ausgang des Beobachters über die komplette Zeit ermitteln.

Erledige ich das mittels:

Code:

[y_obs,t_obs,state]=lsim(observer,[u_1(1:i);x_1(1:i)],t(1:i),[0;0]);
 

so funktioniert es einwandfrei und ich erhalte die Ergebnisse, die ich auch erhalten möchte.

Problematisch wird das ganze nun, wenn ich es nicht über die gesamte Zeit simulieren möchte, sondern immer von Eingabe zu Eingabe. Aus zeitgründen, kann ich nicht immer die komplette Beobachtertrajektorie in jedem Zeitschritt neu berechnen.
Mein Ansatz war der Folgende:

Code:

[y_obs,t_obs,state]=lsim(observer,[u_1(i) x_1(i);0 0],[t(i-1) t(i)],state_obs_1);
state_obs_1=state(2,:);
 


Die Ausgaben stimmen jedoch nicht überein. Anbei ist ein Plot mit der Differenz zwischen den beiden Ergebnissen. Es gibt eine konstante Abweichung.

Eine spannende Beobachtung ist auch diejenige: Wenn ich den folgenden Code ausführe:
Code:

[y_obs,t_obs,state]=lsim(observer,[u_1(1:4);x_1(1:4)],t(1:4),[0;0]);
 
,
so erhalte ich andere Werte, als wenn ich ausführe:

Code:

[y_obs,t_obs,state]=lsim(observer,[u_1(1:3);x_1(1:3)],t(1:3),[0;0]);
 


Also klar: Es ist ein Wert mehr, jedoch verändern sich auch die ersten Werte, die eigentlich identisch sein sollten.
Habt ihr Ideen, wie ich die simulierten Werte konsistent zueinander kriege?

Vielen Dank schonmal für Eure Hilfe - gerne bin ich für Tipps jeder Art offen!

Liebe Grüße
Kai

diff.png
 Beschreibung:
Differenz beider Beobachterausgänge

Download
 Dateiname:  diff.png
 Dateigröße:  2.93 KB
 Heruntergeladen:  896 mal
Private Nachricht senden Benutzer-Profile anzeigen


geieraffe
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 19.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2013, 08:17     Titel:
  Antworten mit Zitat      
Nun ja, ein Beobachter ist ja immer abhängig von den Anfangswerten die man ihm gibt. Wenn du also "mittendrin" anfängst ist es nicht verwunderlich, dass du andere Ergebnisse bekommst.
Was mich allerdings auch stuzig machst ist, dass du bei t(1:3) und t(1:4) andere Werte bekommst.
Sind deine Anfangsbedinungen identisch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kranich90
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2013, 08:28     Titel:
  Antworten mit Zitat      
Hey,
die Anfangswerte sind natürlich der jeweiligen Situation angepasst.
Daran liegt es leider nicht.

LG und Danke
Kai
Private Nachricht senden Benutzer-Profile anzeigen
 
geieraffe
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 19.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2013, 08:33     Titel:
  Antworten mit Zitat      
Du hast also unterschiedliche Anfangsbedingungen? Dann kann dir ein Beobachter natürlich auch keine gleichen Ergebnisse liefern. Rolling Eyes

Oder hab ich dich gerade falsch verstanden?

Du bekommst für t(1:3) und t(1:4) NUR DANN die gleichen Ergebnisse für t(1:3) wenn auch die Anfangsbedingungen beide male dieselben sind. Exclamation
Private Nachricht senden Benutzer-Profile anzeigen
 
Kranich90
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2013, 10:48     Titel:
  Antworten mit Zitat      
Hey,

nein, das hast du falsch verstanden. Die Anfangsbedingungen sind natürlich identisch. Sonst macht es natürlich keinen Sinn.

Das wäre aber auch mit dem angehängten Fehler nicht konsistent - der Beobachtungsfrhler würde nicht auf einen konstanten Wert einschwingen, wenn es an den AB liegen würde. Daran liegt es also leider nicht.

LG
Kai
Private Nachricht senden Benutzer-Profile anzeigen
 
Kranich90
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2013, 15:28     Titel:
  Antworten mit Zitat      
Hey,

also ich habe mein Problem gelöst, bzw. vielmehr ein workaround gefunden.

Wenn ich nicht nur zwei Zeitpunkte zur Simulation heranziehe, sondern mindestens 3, so funktioniert es.

Code:

[y_obs,t_obs,state_obs]=lsim(observer,[u_1(i-4:i);x_1(i-4:i)],t(i-4:i),state_obs(2,:));
 


Warum es so ist, kann ich mir nicht erklären. Löst man die dem ZRM zu Grunde liegende DGL händisch, so macht es natürlich keinen Unterschied, wieviele Samples zur Berechnung zur Verfügung stehen.

Danke für die Klärungsversuche!

LG
Kai
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.