我有从智能手机应用程序获得的 GPS 数据。每当智能手机静止时,gps 点就会跳跃。我了解信号不准确,因为在建筑物之间的城市接收信号并且无论何时在内部信号丢失。
从这篇文章中,我想试一试卡尔曼滤波器。多亏了这篇文章,我能够在纬度和经度上尝试 Ramer-Douglas-Peucker 算法,并尝试使用pykalman 包来获取高程数据。我还尝试了pykalman 示例来使用过滤器。
根据这些读数,我假设输入参数错误:
measurements = numpy.column_stack([longitude_list, latitude_list])
# F_k : state transition matrix
F = numpy.array([ [1, 0],
[0, 1] ])
# H_k : the observation matrix
H = numpy.array([ [1, 0],
[0, 1] ])
# R : covariance R of delta_k observation noise N(0, R)
R = numpy.diag([1e-4, 1e-4])
kf = kf.em(measurements, n_iter=100)
(filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
(smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements)
下图来自 matplotlib。左上角是迭代 km.em(n_iter=2),右上角是迭代 10,左下角是迭代 50,右下角是迭代 100。每当我尝试更高时,我都会超时。在这种情况下,我的过滤器似乎没有多大作用。确实输出了相同的形状(由于比例轴,起初它可能看起来不同)。
我错过了什么吗?如何改进我的固定 gps 跳跃数据?
谢谢