У меня есть траектория объекта в 2D-пространстве (поверхности). Траектория задается в виде последовательности (x,y)
координат. Я знаю, что мои измерения шумят, и иногда у меня есть очевидные выбросы. Итак, я хочу отфильтровать свои наблюдения.
Насколько я понял фильтр Калмана, он делает именно то, что мне нужно. Итак, я пытаюсь использовать это. Я нашел реализацию Python здесь . И это пример, который предоставляет документация:
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)
У меня есть некоторые проблемы с интерпретацией ввода и вывода. Я думаю, measurements
это именно то, что мои измерения (координаты). Хотя я немного запутался, потому что измерения в примере являются целыми числами.
Мне также нужно предоставить некоторые transition_matrices
и observation_matrices
. Какие ценности я должен поставить там? Что означают эти матрицы?
Наконец, где я могу найти свой вывод? Должно ли это быть filtered_state_means
или smoothed_state_means
. Эти массивы имеют правильную форму (2, n_observations)
. Однако значения в этом массиве слишком далеки от исходных координат.
Итак, как использовать этот фильтр Калмана?