我有一个物体在二维空间(表面)中的轨迹。(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)
。但是,这些数组中的值离原始坐标太远了。
那么,如何使用这个卡尔曼滤波器呢?