2B alanda (bir yüzey) bir nesnenin yörüngesi var. Yörünge bir (x,y)
koordinat dizisi olarak verilir . Ölçümlerimin gürültülü olduğunu ve bazen belirgin aykırı değerlerim olduğunu biliyorum. Bu yüzden gözlemlerimi filtrelemek istiyorum.
Kalman filtresini anladığım kadarıyla, tam olarak ihtiyacım olanı yapıyor. Bu yüzden kullanmaya çalışıyorum. Burada bir python uygulaması buldum . Ve bu dokümantasyonun sağladığı örnek:
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)
Girdi ve çıktının yorumlanmasında bazı sıkıntılarım var. measurements
Ölçümlerimin tam olarak bu olduğunu tahmin ediyorum (koordinatlar). Biraz kafam karışsa da, örnekteki ölçümler tamsayıdır.
Ayrıca bazı sağlamak gerekir transition_matrices
ve observation_matrices
. Oraya hangi değerleri koymalıyım? Bu matrisler ne anlama geliyor?
Son olarak, çıktımı nerede bulabilirim? Olmalı filtered_state_means
ya da smoothed_state_means
. Bu diziler doğru şekillere sahiptir (2, n_observations)
. Ancak, bu dizideki değerler orijinal koordinatlardan çok uzak.
Peki, bu Kalman filtresi nasıl kullanılır?