Mam trajektorię obiektu w przestrzeni 2D (powierzchni). Trajektoria jest podana jako ciąg (x,y)
współrzędnych. Wiem, że moje pomiary są hałaśliwe i czasami mam oczywiste wartości odstające. Chcę więc odfiltrować moje obserwacje.
O ile rozumiem filtr Kalmana, robi dokładnie to, czego potrzebuję. Więc próbuję go użyć. Znalazłem tutaj implementację Pythona . A oto przykład dokumentacji:
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)
Mam pewne problemy z interpretacją danych wejściowych i wyjściowych. Sądzę, że measurements
dokładnie takie są moje pomiary (współrzędne). Chociaż jestem trochę zdezorientowany, ponieważ pomiary w tym przykładzie są liczbami całkowitymi.
Muszę też podać trochę transition_matrices
i observation_matrices
. Jakie wartości powinienem tam umieścić? Co oznaczają te macierze?
Wreszcie, gdzie mogę znaleźć moje wyniki? Powinien to być filtered_state_means
lub smoothed_state_means
. Te tablice mają prawidłowe kształty (2, n_observations)
. Jednak wartości w tych tablicach są zbyt dalekie od pierwotnych współrzędnych.
Jak korzystać z tego filtra Kalmana?