スマートフォンのアプリから取得した 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 ジャンプ データを改善するにはどうすればよいですか?
ありがとうございました