Verfasst am: 07.06.2018, 13:01
Titel: Allgemeines Vorgehen beim Lösen von DGL mittels Zustandsrau
Hallo zusammen,
ich bin gerade dabei mich in Zustandsraum, Kalmanfilter etc. einzuarbeiten. Dazu würde ich gerne sagen, wie ich das allgemeine Vorgehen verstanden habe und ihr gebt einfach mal Feedback und Verbesserungsvorschläge. Zudem habe ich versucht ein Beispiel zu erstellen, leider ist dies jedoch aus irgend einem Grund instabil.
1) Vorbereitung, Gleichung Aufstellen etc.
2) Manuell in A, B, C, D-Matrix umstellen
3) Mittels ss-Befehl in ein Matlab system umrechnen
3. 1) An dieser Stelle kann bereits eine Samplingzeit angegeben werden um ein
diskretes System zu erstellen
3. 2) Sinnvoll ist hier mittels step-Funktion die Systemantwort zu überprüfen
4) Mittels lsim-befehl können Inertialwerte, Inputvektoren gegeben werden, für
dass das Gleichungssystem gelöst wird.
5) Auswertung über Plots etc.
Theoretisch gäbe es wohl noch die möglichkeit dies Kontinuierlich zu machen, auch wenn ich nicht genau weiß wie (mathematisch) der Unterschied begründet wird, da ein Computer immer diskretisieren muss.
Als Minimalbeispiel habe ich vollgendes probiert:
Feder-Masse-Schwinger ohne Dämpfung im zustandraummodell:
Code:
% 1 Konstanten
m = 1800; % masse [kg]
d = 2000; % dämpfung [kg]
k = 2.4e+04; % steifigkeit [N/m]
Das ergebnis ist ein unkontrolliertes Aufschwingen, wie bei Systemen mit negativer Dämpfung (Anfachung) oder Vorzeichenfehler in der A matrix. Wenn ich
einfüge, habe ich auf einmal ein gedämpftes System, obwohl d=0 gesetzt wurde. Vllt kann mir jmd mit Fehlern in dem Code oder allgemeinen Tipps zum vorgehen weiterhelfen.
_________________
Hallo, weil die Mitgabe der SampleTime im ss-Befehl nicht dafür sorgt, dass dein System diskretisiert wird. Wenn du sie mit übergibst, muss das System schon diskret sein.
vielen Dank für die Info, kennst du zufällig eine Quelle wo es gut (nicht zu mathematisch wie auf Wiki) beschrieben ist? Könnte man eine einfache Umformung über abtastfrequenz / kreisfrequenz finden?
Für mich sieht es so aus, als würde beim diskretisieren alle werte größer 0 mit 1/dt = f multipliziert werden. Aus nullen werden dann 1 (wahrscheinlich wegen der Integration), aber wie gesagt, durchblicken tue ich da nicht.
Wäre cool wenn jmd eine Quelle hat.
Wenn ich ein System diskretisieren muss, muss ich dann evtl. auch Ein- und Ausgänge in die z-Ebene transformieren? Mein Kalmanfilter erzeugt nämlich momentan ziemlich Müll
da kann ich persönlich eigentlich das "Taschenbuch der Regelungstechnik" von Lutz und Wendt empfehlen. Ich finde das dort anschaulich mit Beispielen erklärt.
alles klar danke für die Info! ich habe mich jetzt gerade mehr mit Kalman beschäftigt insofern gucke ich mir gerade Kalman Filter von R. Marchthaler 2017 an. Ist mit Beispielen und beschäftigt sich auch etwas mit diskretsierung. Insofern mal schauen.
Schöne Grüße
Simms91
_________________
Schöne Grüße,
Simms91
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.