Ho una traiettoria di un oggetto in uno spazio 2D (una superficie). La traiettoria è data come una sequenza di (x,y)
coordinate. So che le mie misurazioni sono rumorose e a volte ho ovvi valori anomali. Quindi, voglio filtrare le mie osservazioni.
Per quanto ho capito filtro Kalman, fa esattamente quello che mi serve. Quindi, provo ad usarlo. Ho trovato un'implementazione di Python qui . E questo è l'esempio che la documentazione fornisce:
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)
Ho dei problemi con l'interpretazione di input e output. Immagino che measurements
sia esattamente quello che sono le mie misure (coordinate). Anche se sono un po 'confuso perché le misure nell'esempio sono numeri interi.
Ho anche bisogno di fornire alcuni transition_matrices
e observation_matrices
. Quali valori dovrei mettere lì? Cosa significano queste matrici?
Infine, dove posso trovare il mio output? Dovrebbe essere filtered_state_means
o smoothed_state_means
. Questi array hanno forme corrette (2, n_observations)
. Tuttavia, i valori in questo array sono troppo lontani dalle coordinate originali.
Quindi, come usare questo filtro Kalman?