Saya memiliki lintasan objek dalam ruang 2D (permukaan). Lintasan diberikan sebagai urutan (x,y)
koordinat. Saya tahu bahwa pengukuran saya berisik dan kadang-kadang saya memiliki outlier yang jelas. Jadi, saya ingin memfilter pengamatan saya.
Sejauh yang saya mengerti filter Kalman, itu melakukan apa yang saya butuhkan. Jadi, saya mencoba menggunakannya. Saya menemukan implementasi python di sini . Dan ini adalah contoh yang disediakan oleh dokumentasi:
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)
Saya memiliki beberapa masalah dengan interpretasi input dan output. Saya kira itu measurements
adalah pengukuran saya (koordinat). Meskipun saya agak bingung karena pengukuran dalam contoh ini adalah bilangan bulat.
Saya juga perlu menyediakan beberapa transition_matrices
dan observation_matrices
. Nilai apa yang harus saya taruh di sana? Apa yang dimaksud dengan matriks ini?
Akhirnya, di mana saya dapat menemukan output saya? Haruskah filtered_state_means
atau smoothed_state_means
. Array ini memiliki bentuk yang benar (2, n_observations)
. Namun, nilai dalam array ini terlalu jauh dari koordinat aslinya.
Jadi, bagaimana cara menggunakan filter Kalman ini?