У мене траєкторія об'єкта у двомірному просторі (поверхні). Траєкторія задається у вигляді послідовності (x,y)
координат. Я знаю, що мої вимірювання шумні, і іноді я маю очевидні люди. Отже, я хочу відфільтрувати свої спостереження.
Наскільки я зрозумів фільтр Кальмана, він робить саме те, що мені потрібно. Отже, я намагаюся ним скористатися. Я знайшов реалізацію пітона тут . І це приклад, який надає документація:
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)
. Однак значення в цьому масиві занадто далеко від початкових координат.
Отже, як використовувати цей фільтр Кальмана?