read_kalmanT_read_kalmanReadKalmanReadKalmanread_kalman (Operator)

Name

read_kalmanT_read_kalmanReadKalmanReadKalmanread_kalman — Einlesen der Beschreibungsdatei eines Kalman-Filters.

Warnung

read_kalmanread_kalmanReadKalmanReadKalmanReadKalmanread_kalman 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)

def read_kalman(file_name: str) -> Tuple[Sequence[int], Sequence[float], Sequence[float], Sequence[float]]

Beschreibung

read_kalmanread_kalmanReadKalmanReadKalmanReadKalmanread_kalman liest die Beschreibungsdatei FileNameFileNameFileNameFileNamefileNamefile_name 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 , Steuermatrix mit der Stellgröße und Messmatrix

Modellstochastik:

Systemfehler-Kovarianzmatrix , Systemfehler-Messfehler-Kovarianzmatrix und Messfehler-Kovarianzmatrix

Schätzung des Anfangszustandes des Systems:

Zustand und zugehörige Kovarianzmatrix

Viele Systeme kommen dabei ohne Eingaben „von außen“ und damit ohne und aus. Außerdem sind im Normalfall System- und Messfehler unkorreliert ( entfällt).

Die oben genannten Kenngrößen können in einer ASCII-Datei mit folgendem Aufbau abgelegt und dann mittels read_kalmanread_kalmanReadKalmanReadKalmanReadKalmanread_kalman 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 DimensionDimensionDimensionDimensiondimensiondimension). 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. Matrizen werden in der Form zeilenweise (mit beliebigen Zwischenräumen/Zeilenvorschüben) abgespeichert, Vektoren entsprechend in der Form Zurückgeliefert werden von read_kalmanread_kalmanReadKalmanReadKalmanReadKalmanread_kalman folgende Parameterwerte:

DimensionDimensionDimensionDimensiondimensiondimension:

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

ModelModelModelModelmodelmodel:

Dieser Parameter enthält hintereinandergehängt die zeilenweise linearisierten Matrizen (Vektoren) und (gegebenenfalls) . ModelModelModelModelmodelmodel ist also ein Vektor der Länge . Der letzte Summand entfällt, falls System- und Messfehler unkorreliert sind, d.h. kein angegeben wurde.

MeasurementMeasurementMeasurementMeasurementmeasurementmeasurement:

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

PredictionPredictionPredictionPredictionpredictionprediction:

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 .

Ausführungsinformationen

Parameter

FileNameFileNameFileNameFileNamefileNamefile_name (input_control)  filename.read HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Beschreibungsdatei für einen Kalman-Filter.

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

DimensionDimensionDimensionDimensiondimensiondimension (output_control)  integer-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Die Dimensionen von Status-, Mess- und Stellvektor.

ModelModelModelModelmodelmodel (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Hintereinandergehängt die zeilenweise linearisierten Matrizen , eventuell und und gegebenenfalls .

MeasurementMeasurementMeasurementMeasurementmeasurementmeasurement (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Die zeilenweise linearisierte Matrix .

PredictionPredictionPredictionPredictionpredictionprediction (output_control)  real-array HTupleSequence[float]HTupleHtuple (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_kalmanReadKalmanReadKalmanReadKalmanread_kalman den Wert 2 (H_MSG_TRUE). Andernfalls wird eventuell eine Fehlerbehandlung durchgeführt.

Nachfolger

filter_kalmanfilter_kalmanFilterKalmanFilterKalmanFilterKalmanfilter_kalman

Siehe auch

update_kalmanupdate_kalmanUpdateKalmanUpdateKalmanUpdateKalmanupdate_kalman, filter_kalmanfilter_kalmanFilterKalmanFilterKalmanFilterKalmanfilter_kalman

Modul

Foundation