pykalman でカルマンフィルタを試す

Python でカルマンフィルタを勉強しようと思いましたが、Python-Control でどうやってカルマンフィルタを使えるのかわからなかったので、pykalman というパッケージを試してみました。

ここ の SciPy のドキュメントにカルマンフィルタの実装が載っていますが、pykalman を使えばもっとパラメトリックにカルマンフィルタを設計できそうです。

pykalman は pip でインストールできます。scipy 等を先にインストールしておく必要があります。 なお、Python3 でも問題なく使えます。

pip install pykalman

一番シンプルな使い方は以下のような感じです。パラメータ設定の仕方がよくわかっていないので、これから勉強していきます。

import numpy as np
from matplotlib import pylab as plt
from pykalman import KalmanFilter

x = -0.37727
observations = np.random.normal(x, 0.1, size=50)

kf = KalmanFilter(transition_matrices=np.array([[1, 1], [0, 1]]),
                  transition_covariance=0.0000001*np.eye(2))

smoothed_states_pred = kf.em(observations).smooth(observations)[0]
filtered_states_pred = kf.em(observations).filter(observations)[0]

plt.figure(figsize=(12, 9))
plt.plot(observations, "-xc", label="observations")
plt.plot(smoothed_states_pred[:, 0], "b", label="smoothed")
plt.plot(filtered_states_pred[:, 0], "r", label="filtered")
plt.axhline(x, color="k", label="truth value")
plt.legend()
plt.show()
15071401.png

コメント

Comments powered by Disqus
書籍更新情報
2017-04-18
Pythonによる科学技術計算 基礎編
固定版:1.5版、リフロー版:1.2版への更新が可能になりました。
サポートページはこちら
電子書籍