J'ai une trajectoire d'un objet dans un espace 2D (une surface). La trajectoire est donnée comme une séquence de (x,y)
coordonnées. Je sais que mes mesures sont bruyantes et j'ai parfois des valeurs aberrantes évidentes. Donc, je veux filtrer mes observations.
Pour autant que je comprenne le filtre Kalman, il fait exactement ce dont j'ai besoin. Donc, j'essaie de l'utiliser. J'ai trouvé une implémentation python ici . Et voici l'exemple fourni par la documentation:
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)
J'ai des problèmes avec l'interprétation des entrées et sorties. Je suppose que measurements
c'est exactement ce que mes mesures sont (coordonnées). Bien que je sois un peu confus parce que les mesures dans l'exemple sont des entiers.
Je dois également en fournir transition_matrices
et observation_matrices
. Quelles valeurs dois-je y mettre? Que signifient ces matrices?
Enfin, où puis-je trouver ma sortie? Que ce soit filtered_state_means
ou smoothed_state_means
. Ces tableaux ont des formes correctes (2, n_observations)
. Cependant, les valeurs de ces tableaux sont trop éloignées des coordonnées d'origine.
Alors, comment utiliser ce filtre Kalman?