| Operatoren |
update_kalman — Einlesen einer Updatedatei eines Kalman-Filters.
update_kalman ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.
update_kalman( : : FileName, DimensionIn, ModelIn, MeasurementIn : DimensionOut, ModelOut, MeasurementOut)
update_kalman liest die Updatedatei FileName eines Kalman-Filters. Kalman-Filter liefern eine Schätzung des aktuellen Zustands (oder auch eine Prädiktion des künftigen Zustandes) eines diskreten, stochastisch gestörten, linearen Systems.
Eine Kalman-Filterung stützt sich dabei auf ein mathematisches Modell des zu untersuchenden Systems, das zu jedem Zeitpunkt durch folgende Größen charakterisiert wird:
Übergangsmatrix A, Steuermatrix G mit der Stellgröße u und Messmatrix C
Systemfehler-Kovarianzmatrix Q, Systemfehler-Messfehler-Kovarianzmatrix L und Messfehler-Kovarianzmatrix R
y
Extrapolationsvektor und Extrapolationsfehler-Kovarianzmatrix
Viele Systeme kommen dabei ohne Eingaben „von außen“ und damit ohne G und u aus. Außerdem sind im Normalfall System- und Messfehler unkorreliert (L entfällt). Einige der oben genannten Größen können sich dynamisch (von Iteration zu Iteration) ändern. update_kalman dient zur Modifikation von Systemteilen gemäß einer Updatedatei (ASCII) mit folgendem Aufbau (vgl. auch read_kalman):
Dimensionszeile
+ Inhaltszeile
+ Matrix A
+ Matrix C
+ Matrix Q
+ Matrix G + Vektor u
+ Matrix L
+ Matrix R
Die Dimensionszeile hat dabei die Form
n = <integer> m = <integer> p = <integer>
wobei n die Anzahl der Zustandsvariablen, m die Anzahl der Messwerte
und p die Anzahl der Stellglieder ist (siehe Parameter
DimensionIn / DimensionOut).
Die maximale Dimension wird dabei durch eine Systemkonstante (derzeit
30) begrenzt. Da hier an einem gültigen Modell Veränderungen
vorgenommen werden sollen, sind die Dimensionen n und m
unveränderbar (und werden nur zu Kontrollzwecken angegeben).
Die Inhaltszeile ist von der Form
A*C*Q*G*u*L*R*
und beschreibt den weiteren Inhalt der Datei. Statt '*' ist
dabei '+' (Parameter ist vorhanden) bzw. '-' (Parameter fehlt) einzusetzen.
Im Gegensatz zu Beschreibungsdateien für read_kalman muss die
Systembeschreibung hier nicht vollständig sein. Anzugeben sind nur
die sich ändernden Systemteile. Die Angabe von Schätzwerten
entfällt, da diese gemäß Konstruktion des Filters von der
jeweils letzten Filterung stammen müssen.
(r x s) Matrizen werden in der Form
Diese Parameter enthalten die Dimensionen von Status-, Mess- und Stellvektor und sind daher Vektoren [n,m,p], wobei n die Anzahl der Zustandsvariablen, 'm' die Anzahl der Messwerte und 'p' die Anzahl der Stellglieder ist. m und m sind für ein gegebenes System fest, dürfen also in der Updatedatei nicht von den entsprechenden Eingabewerten abweichen. Für ein System ohne deterministische Steuerung (d.h. ohne Einfluss „von außen“) ist 'p = 0'.
Diese Parameter enthalten hintereinandergehängt die zeilenweise linearisierten Matrizen (Vektoren) A, C, Q, G, u und (gegebenenfalls) L. ModelIn / ModelOut sind also Vektoren der Länge n*n + n*m + n*n + n*p + p [+ n*m] Der letzte Summand entfällt, falls System- und Messfehler unkorreliert sind, d.h. kein 'L' angegeben wurde.
Diese Parameter enthalten die zeilenweise linearisierte Matrix R, sind also Vektoren der Dimension m*m.
Updatedatei für einen Kalman-Filter.
Defaultwert: 'kalman.updt'
Die Dimensionen von Status-, Mess- und Stellvektor.
Defaultwert: [3,1,0]
Typischer Wertebereich: 0 ≤ DimensionIn ≤ 30
Hintereinandergehängt die zeilenweise linearisierten Matrizen A,C,Q, eventuell G und u und gegebenenfalls L.
Defaultwert: [1.0,1.0,0.5,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,54.3,37.9,48.0,37.9,34.3,42.5,48.0,42.5,43.7]
Typischer Wertebereich: 0.0 ≤ ModelIn ≤ 10000.0
Die zeilenweise linearisierte Matrix R.
Defaultwert: [1,2]
Typischer Wertebereich: 0.0 ≤ MeasurementIn ≤ 10000.0
Die Dimensionen von Status-, Mess- und Stellvektor.
Hintereinandergehängt die zeilenweise linearisierten Matrizen A,C,Q, eventuell G und u und gegebenenfalls L.
Die zeilenweise linearisierte Matrix R.
* The following values are describing the system * * DimensionIn = [3,1,0] * ModelIn = [1.0,1.0,0.5,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0, * 54.3,37.9,48.0,37.9,34.3,42.5,48.0,42.5,43.7] * MeasurementIn = [1,2] * * An example of the Updatefile: * * n=3 m=1 p=0 * A+C-Q-G-u-L-R- * transitions at time t=15: * 2 1 1 * 0 2 2 * 0 0 2 * * the results of update_kalman: * * DimensionOut = [3,1,0] * ModelOut = [2.0,1.0,1.0,0.0,2.0,2.0,0.0,0.0,2.0,1.0,0.0,0.0, * 54.3,37.9,48.0,37.9,34.3,42.5,48.0,42.5,43.7] * MeasurementOut = [1.2]
Ist die Updatedatei lesbar und korrekt, liefert update_kalman den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
Foundation
| Operatoren |