Tengo una trayectoria de un objeto en un espacio 2D (una superficie). La trayectoria se da como una secuencia de (x,y)
coordenadas. Sé que mis medidas son ruidosas y, a veces, tengo valores atípicos evidentes. Entonces, quiero filtrar mis observaciones.
Hasta donde entendí el filtro de Kalman, hace exactamente lo que necesito. Entonces, trato de usarlo. Encontré una implementación de Python aquí . Y este es el ejemplo que proporciona la documentación:
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)
Tengo algunos problemas con la interpretación de entrada y salida. Supongo que eso measurements
es exactamente lo que son mis medidas (coordenadas). Aunque estoy un poco confundido porque las medidas en el ejemplo son enteros.
También necesito proporcionar algunos transition_matrices
y observation_matrices
. ¿Qué valores debo poner allí? ¿Qué significan estas matrices?
Finalmente, ¿dónde puedo encontrar mi salida? Debería ser filtered_state_means
o smoothed_state_means
. Estas matrices tienen formas correctas (2, n_observations)
. Sin embargo, los valores en esta matriz están demasiado lejos de las coordenadas originales.
Entonces, ¿cómo usar este filtro de Kalman?