Ich habe eine Flugbahn eines Objekts in einem 2D-Raum (einer Oberfläche). Die Flugbahn wird als eine Folge von (x,y)
Koordinaten angegeben. Ich weiß, dass meine Messungen laut sind und ich manchmal offensichtliche Ausreißer habe. Also möchte ich meine Beobachtungen filtern.
Soweit ich Kalman Filter verstanden habe, tut es genau das, was ich brauche. Also versuche ich es zu benutzen. Ich habe hier eine Python-Implementierung gefunden . Und dies ist das Beispiel, das die Dokumentation bietet:
from pykalman import KalmanFilter
import numpy as np
kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
measurements = np.asarray([[1,0], [0,0], [0,1]]) # 3 observations
kf = kf.em(measurements, n_iter=5)
(filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
(smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements)
Ich habe einige Probleme mit der Interpretation von Input und Output. Ich denke measurements
genau das sind meine Maße (Koordinaten). Obwohl ich ein bisschen verwirrt bin, weil die Messungen im Beispiel ganze Zahlen sind.
Ich muss auch einige zur Verfügung stellen transition_matrices
und observation_matrices
. Welche Werte soll ich dort setzen? Was bedeuten diese Matrizen?
Wo kann ich meine Ausgabe finden? Sollte es sein filtered_state_means
oder smoothed_state_means
. Diese Arrays haben korrekte Formen (2, n_observations)
. Die Werte in diesem Array sind jedoch zu weit von den ursprünglichen Koordinaten entfernt.
Wie benutzt man diesen Kalman-Filter?