我在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)
。但是,这些数组中的值与原始坐标相距太远。
那么,如何使用该卡尔曼滤波器?