我有从智能手机应用程序获得的gps数据。 每当智能手机静止时,gps点就会跳跃。 据我所知,由于建筑物之间的城市接收和内部信号丢失,信号不准确。
从这个post我想给卡尔曼滤波器一个镜头。 感谢article我能够在纬度和经度上尝试Ramer-Douglas-Peucker算法,并尝试pykalman package获取高程数据。 我也试过pykalman example来玩过滤器。
根据这些读数,我假设输入参数错误:
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跳跃数据?
谢谢