設計ケーススタディ    

定常状態の設計

関数kalmanを用いて、上記の定常状態Kalmanフィルタを設計することができます。まず、つぎのプロセスノイズをもつプラントモデルを設定します。

これは、以下の方法で実行します。

と仮定すると、以下の方法で離散Kalmanフィルタを設計することができます。

これは、フィルタの状態空間モデルkalmfとイノベーションゲインMを出力します。

kalmfの入力は、およびで、その出力は、プラント出力、および、つぎの状態推定値です()。

ここで、関心があるのは出力推定値なので、つぎのkalmfの第1出力のみを抜き出します。

MATLABは、つぎの出力を行います。

フィルタが、どのように機能するかを見るためには、何らかの入力データとランダムノイズを生成し、フィルタを適用した応答と真の応答を比較します。それぞれの応答は、別々に生成することも、同時に生成することもできます。それぞれの応答を別々にシミュレーションするには、まずプラントだけでlsimを使用し、ついでプラントとフィルタを一緒にして、lsimを使用します。両者を同時にシミュレーションする、もう1つの方法については、つぎに説明します。

下のブロックダイアグラムは、真の出力とフィルタを適用した出力を生成する方法を示したものです。

このブロックダイアグラムの状態空間モデルは、関数parallelfeedbackを用いて設計することができます。まず、を入力とし、 (測定値)を出力とする完全なプラントモデルを作成します。

つぎに、parallelを用いて、つぎの並列結合を作成します。

最後に、プラント出力を正のフィードバックで、フィルタ入力に結合することによってセンサループを閉じます。

結果として得られるシミュレーションモデルは、を入力とし、を出力とします。

これで、フィルタの挙動をシミュレーションする準備ができました。正弦波入力、プロセスノイズベクトル、測定ノイズベクトルを生成します。

ここで、lsimを用いてシミュレーションします。

また、真の応答とフィルタを適用した応答をグラフ上で比較します。

最初のプロットは、真の応答(破線)とフィルタを適用した出力 (実線)を示しています。第2のプロットは、測定誤差(鎖線と点)と推定誤差(実線)を比較しています。このプロットは、ノイズレベルが著しく減少したことを示しています。これは、つぎの誤差共分散の計算で確認されます。

フィルタ処理を行う前の誤差共分散(測定誤差)は、つぎのとおりです。

一方、フィルタ処理を行った後の誤差共分散(推定誤差)は、つぎのとおりです。


 離散Kalmanフィルタ 時変Kalmanフィルタ