read_kalmanT_read_kalmanReadKalmanReadKalman (Operator)

Name

read_kalmanT_read_kalmanReadKalmanReadKalman — Einlesen der Beschreibungsdatei eines Kalman-Filters.

Warnung

read_kalmanread_kalmanReadKalmanReadKalmanReadKalman ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.

Signatur

read_kalman( : : FileName : Dimension, Model, Measurement, Prediction)

Herror T_read_kalman(const Htuple FileName, Htuple* Dimension, Htuple* Model, Htuple* Measurement, Htuple* Prediction)

void ReadKalman(const HTuple& FileName, HTuple* Dimension, HTuple* Model, HTuple* Measurement, HTuple* Prediction)

static HTuple HMisc::ReadKalman(const HString& FileName, HTuple* Model, HTuple* Measurement, HTuple* Prediction)

static HTuple HMisc::ReadKalman(const char* FileName, HTuple* Model, HTuple* Measurement, HTuple* Prediction)

static HTuple HMisc::ReadKalman(const wchar_t* FileName, HTuple* Model, HTuple* Measurement, HTuple* Prediction)   (Nur Windows)

static void HOperatorSet.ReadKalman(HTuple fileName, out HTuple dimension, out HTuple model, out HTuple measurement, out HTuple prediction)

static HTuple HMisc.ReadKalman(string fileName, out HTuple model, out HTuple measurement, out HTuple prediction)

Beschreibung

read_kalmanread_kalmanReadKalmanReadKalmanReadKalman liest die Beschreibungsdatei FileNameFileNameFileNameFileNamefileName eines Kalman-Filters. Der Kalman-Filter liefert eine Schätzung des aktuellen Zustands (oder auch eine Prädiktion des künftigen Zustandes) eines diskreten, stochastisch gestörten, linearen Systems. Sie werden im Bereich der Bildverarbeitung insbesondere erfolgreich bei der Bildfolgenanalyse eingesetzt. Eine Kalman-Filterung stützt sich dabei auf ein mathematisches Modell des zu untersuchenden Systems, das durch folgende Größen charakterisiert wird:

Modellparameter:

Übergangsmatrix A, Steuermatrix G mit der Stellgröße u und Messmatrix C

Modellstochastik:

Systemfehler-Kovarianzmatrix Q, Systemfehler-Messfehler-Kovarianzmatrix L und Messfehler-Kovarianzmatrix R

Schätzung des Anfangszustandes des Systems:

Zustand und zugehörige 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).

Die oben genannten Kenngrößen können in einer ASCII-Datei mit folgendem Aufbau abgelegt und dann mittels read_kalmanread_kalmanReadKalmanReadKalmanReadKalman eingelesen werden: Dimensionszeile + Inhaltszeile + Matrix A + Matrix C + Matrix Q [ + Matrix G + Vektor u ] [ + Matrix L ] + Matrix R [ + Matrix P0 ] [ + Vektor x0 ] 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 DimensionDimensionDimensionDimensiondimension). Die maximale Dimension wird dabei durch eine Systemkonstante (derzeit 30) begrenzt.

Die Inhaltszeile ist von der Form A*C*Q*G*u*L*R*P*x* und beschreibt den weiteren Inhalt der Datei. Statt '*' ist dabei '+' (Parameter ist vorhanden) bzw. '-' (Parameter fehlt) einzusetzen. Zu beachten ist dabei, dass nur die oben durch [...] als optional gekennzeichneten Parameter in einer Beschreibungsdatei weggelassen werden dürfen. Fehlt die Anfangsschätzung (d.h. 'x-'), werden die Komponenten des Vektors als 0.0 angenommen. Fehlt die Kovarianzmatrix der Anfangsschätzung (d.h. 'P-'), wird angenommen, der Fehler sei sehr groß. Die Matrixelemente werden in diesem Fall auf 10000.0 gesetzt. Dieser Wert erscheint zwar hoch, ist aber nur dann ausreichend, wenn die Wertebereiche der Komponenten des Zustandsvektors x um Zehnerpotenzen kleiner sind. (r x s) Matrizen werden in der Form zeilenweise (mit beliebigen Zwischenräumen/Zeilenvorschüben) abgespeichert, Vektoren entsprechend in der Form Zurückgeliefert werden von read_kalmanread_kalmanReadKalmanReadKalmanReadKalman folgende Parameterwerte:

DimensionDimensionDimensionDimensiondimension:

Dieser Parameter enthält die Dimensionen von Status-, Mess- und Stellvektor. Dimension ist somit ein Vektor [n,m,p], wobei n die Anzahl der Zustandsvariablen, m die Anzahl der Messwerte und p die Anzahl der Stellglieder ist. Für ein System ohne deterministische Steuerung (d.h. ohne Einfluss „von außen“) ist folglich DimensionDimensionDimensionDimensiondimension = [n,m,0].

ModelModelModelModelmodel:

Dieser Parameter enthält hintereinandergehängt die zeilenweise linearisierten Matrizen (Vektoren) A, C, Q, G, u und (gegebenenfalls) L. ModelModelModelModelmodel ist also ein Vektor 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.

MeasurementMeasurementMeasurementMeasurementmeasurement:

Dieser Parameter enthält die zeilenweise linearisierte Matrix R ist also ein Vektor der Dimension m*m.

PredictionPredictionPredictionPredictionprediction:

Dieser Parameter enthält hintereinandergehängt die zeilenweise linearisierte Matrix (Fehler-Kovarianzmatrix der Anfangsschätzung) und die Anfangsschätzung , ist also ein Vektor der Länge n*n + n.

Ausführungsinformationen

Parameter

FileNameFileNameFileNameFileNamefileName (input_control)  filename.read HTupleHTupleHtuple (string) (string) (HString) (char*)

Beschreibungsdatei für einen Kalman-Filter.

Defaultwert: 'kalman.init' "kalman.init" "kalman.init" "kalman.init" "kalman.init"

DimensionDimensionDimensionDimensiondimension (output_control)  integer-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Die Dimensionen von Status-, Mess- und Stellvektor.

ModelModelModelModelmodel (output_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Hintereinandergehängt die zeilenweise linearisierten Matrizen A,C,Q, eventuell G und u und gegebenenfalls L.

MeasurementMeasurementMeasurementMeasurementmeasurement (output_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Die zeilenweise linearisierte Matrix R.

PredictionPredictionPredictionPredictionprediction (output_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Hintereinandergehängt die zeilenweise linearisierte Matrix (die Fehler-Kovarianzmatrix der Anfangsschätzung) und die Anfangsschätzung

Beispiel (HDevelop)

* An example of the description-file:
*
* n=3 m=1 p=0
* A+C+Q+G-u-L-R+P+x+
* transition matrix A:
* 1 1 0.5
* 0 1 1
* 0 0 1
* measurement matrix C:
* 1 0 0
* system-error covariance matrix Q:
* 54.3 37.9 48.0
* 37.9 34.3 42.5
* 48.0 42.5 43.7
* measurement-error covariance matrix R:
* 1.2
* estimation-error covariance matrix (for the initial estimate) P0: \
* 0 0 0
* 0 180.5 0
* 0 0 100
* initial estimate x0:
* 0 100 0
*
* the result of read_kalman with the upper descriptionfile
* as inputparameter:
*
* Dimension   = [3,1,0]
* Model       = [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]
* Measurement = [1.2]
* Prediction  = [0.0,0.0,0.0,0.0,180.5,0.0,0.0,0.0,100.0,0.0,100.0,
*                           0.0].

Beispiel (C)

/*An example of the description-file:                                 */
/*                                                                    */
/*n=3 m=1 p=0                                                         */
/*A+C+Q+G-u-L-R+P+x+                                                  */
/*transition matrix A:                                                */
/*1 1 0.5                                                             */
/*0 1 1                                                               */
/*0 0 1                                                               */
/*measurement matrix C:                                               */
/*1 0 0                                                               */
/*system-error covariance matrix Q:                                   */
/*54.3 37.9 48.0                                                      */
/*37.9 34.3 42.5                                                      */
/*48.0 42.5 43.7                                                      */
/*measurement-error covariance matrix R:                              */
/*1.2                                                                 */
/*estimation-error covariance matrix (for the initial estimate) P0:   */
/*0 0 0                                                               */
/*0 180.5 0                                                           */
/*0 0 100                                                             */
/*initial estimate x0:                                                */
/*0 100 0                                                             */
/*                                                                    */
/*the result of read_kalman with the upper descriptionfile            */
/*as inputparameter:                                                  */
/*                                                                    */
/*Dimension   = [3,1,0]                                               */
/*Model       = [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]   */
/*Measurement = [1.2]                                                 */
/*Prediction  = [0.0,0.0,0.0,0.0,180.5,0.0,0.0,0.0,100.0,0.0,100.0,   */
/*                          0.0]                                      */

Beispiel (HDevelop)

* An example of the description-file:
*
* n=3 m=1 p=0
* A+C+Q+G-u-L-R+P+x+
* transition matrix A:
* 1 1 0.5
* 0 1 1
* 0 0 1
* measurement matrix C:
* 1 0 0
* system-error covariance matrix Q:
* 54.3 37.9 48.0
* 37.9 34.3 42.5
* 48.0 42.5 43.7
* measurement-error covariance matrix R:
* 1.2
* estimation-error covariance matrix (for the initial estimate) P0: \
* 0 0 0
* 0 180.5 0
* 0 0 100
* initial estimate x0:
* 0 100 0
*
* the result of read_kalman with the upper descriptionfile
* as inputparameter:
*
* Dimension   = [3,1,0]
* Model       = [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]
* Measurement = [1.2]
* Prediction  = [0.0,0.0,0.0,0.0,180.5,0.0,0.0,0.0,100.0,0.0,100.0,
*                           0.0].

Beispiel (HDevelop)

* An example of the description-file:
*
* n=3 m=1 p=0
* A+C+Q+G-u-L-R+P+x+
* transition matrix A:
* 1 1 0.5
* 0 1 1
* 0 0 1
* measurement matrix C:
* 1 0 0
* system-error covariance matrix Q:
* 54.3 37.9 48.0
* 37.9 34.3 42.5
* 48.0 42.5 43.7
* measurement-error covariance matrix R:
* 1.2
* estimation-error covariance matrix (for the initial estimate) P0: \
* 0 0 0
* 0 180.5 0
* 0 0 100
* initial estimate x0:
* 0 100 0
*
* the result of read_kalman with the upper descriptionfile
* as inputparameter:
*
* Dimension   = [3,1,0]
* Model       = [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]
* Measurement = [1.2]
* Prediction  = [0.0,0.0,0.0,0.0,180.5,0.0,0.0,0.0,100.0,0.0,100.0,
*                           0.0].

Beispiel (HDevelop)

* An example of the description-file:
*
* n=3 m=1 p=0
* A+C+Q+G-u-L-R+P+x+
* transition matrix A:
* 1 1 0.5
* 0 1 1
* 0 0 1
* measurement matrix C:
* 1 0 0
* system-error covariance matrix Q:
* 54.3 37.9 48.0
* 37.9 34.3 42.5
* 48.0 42.5 43.7
* measurement-error covariance matrix R:
* 1.2
* estimation-error covariance matrix (for the initial estimate) P0: \
* 0 0 0
* 0 180.5 0
* 0 0 100
* initial estimate x0:
* 0 100 0
*
* the result of read_kalman with the upper descriptionfile
* as inputparameter:
*
* Dimension   = [3,1,0]
* Model       = [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]
* Measurement = [1.2]
* Prediction  = [0.0,0.0,0.0,0.0,180.5,0.0,0.0,0.0,100.0,0.0,100.0,
*                           0.0].

Ergebnis

Ist die Beschreibungsdatei lesbar und korrekt, liefert read_kalmanread_kalmanReadKalmanReadKalmanReadKalman den Wert 2 (H_MSG_TRUE). Andernfalls wird eventuell eine Fehlerbehandlung durchgeführt.

Nachfolger

filter_kalmanfilter_kalmanFilterKalmanFilterKalmanFilterKalman

Siehe auch

update_kalmanupdate_kalmanUpdateKalmanUpdateKalmanUpdateKalman, filter_kalmanfilter_kalmanFilterKalmanFilterKalmanFilterKalman

Modul

Foundation