Main Content

Kalman Filter

動的システムの状態の予測または推定

ライブラリ

Filtering/Adaptive Filters

dspadpt3

  • Kalman Filter block

説明

Kalman Filter ブロックを使用して、不完全でノイズを含む一連の測定を使用して動的システムの状態を予測または推定します。次の方程式で定義される、ノイズを含む線形システムがあると仮定します。

xk=Axk1+wk1zk=Hxk+vk

このブロックは、以前に推定した状態 x^k1 を使用して、k, xk 時点の現在の状態を以下の方程式で示すように予測できます。

xk=Ax^k1Pk=AP^k1AT+Q

また、より正確な近似となるように、現在の測定 zk および予測される状態 xk を使用して、k, x^k 時点の現在の状態値を推定することもできます。

Kk=PkHT(HPkHT+R)1x^k=xk+Kk(zkHxk)P^k=(IKkH)Pk

以前の方程式の変数を次の表に定義します。

変数定義既定値または初期条件
x状態N/A
x^推定される状態zeros([6, 1])
x予測される状態N/A
A状態遷移マトリックス

[101000010100001000000100000010000001]

wプロセス ノイズN/A
z測定N/A
H測定マトリックス

[100000010000000010000001]

v測定ノイズN/A
P^推定誤差の共分散10*eye(6)
P-予測誤差の共分散 N/A
Qプロセス ノイズの共分散0.05*eye(6)
Kカルマン ゲインN/A
R測定ノイズの共分散eye(4)
I単位行列N/A

前述の方程式で、z は測定値のベクトルです。多くの場合、ブロックは Z、M 行 N 列の行列を処理します。ここで M は測定値の数で、N はフィルターの数です。

[フィルター数] パラメーターを使用して、現在の値を予測または推定するために使用するフィルターの数を指定します。

[フィルターの有効化] パラメーターを使用して、各タイム ステップで有効または無効にするフィルターを指定します。Always を選択すると、フィルターは常に有効になります。Specify via input port <Enable> を選択すると、ブロックに Enable 端子が表示されます。この端子への入力は、長さがフィルターの数と等しい、1 と 0 の行ベクトルでなければなりません。たとえば、3 つのフィルターがあり、Enable 端子への入力が [1 0 1] である場合、このタイム ステップでは 1 番目と 3 番目のフィルターのみが有効になります。[フィルターが無効な場合は推定された状態と推定誤差の共分散をリセット] チェック ボックスをオンにすると、無効にされたフィルターに対応する推定および予想された状態と推定誤差の共分散は初期値にリセットされます。

メモ

すべてのフィルターの状態遷移マトリックス、測定マトリックス、初期条件およびノイズ共分散は同じですが、状態、測定、有効および MSE 信号は一意です。状態、測定、有効および MSE 信号では、各列がフィルターに対応します。

[測定マトリックスのソース] パラメーターを使用して、測定マトリックス値を入力する方法を指定します。Specify via dialog を選択すると、[測定マトリックス] パラメーターがダイアログ ボックスに表示されます。Input port <H> を選択すると、ブロックに H 端子が表示されます。この端子を使用して測定マトリックスを指定します。

パラメーター

フィルター数

現在の値を予測または推定するために使用するフィルターの数を指定します。

フィルターの有効化

各タイム ステップで有効または無効にするフィルターを指定します。Always を選択すると、フィルターは常に有効になります。Specify via input port <Enable> を選択すると、ブロックに Enable 端子が表示されます。

フィルターが無効な場合は推定された状態と推定誤差の共分散をリセット

このチェック ボックスをオンにすると、無効にされたフィルターに対応する推定および予測される状態と推定誤差の共分散は初期値にリセットされます。このパラメーターが表示されるのは [フィルターの有効化] パラメーターで Specify via input port <Enable> を選択した場合です。

Initial condition for estimated state

推定される状態の初期条件を入力します。

推定誤差の共分散の初期状態

推定誤差の共分散の初期条件を入力します。

状態遷移マトリックス

状態遷移マトリックスを入力します。

プロセス ノイズの共分散

プロセス ノイズの共分散を入力します。

測定マトリックスのソース

測定マトリックス値を入力する方法を指定します。Specify via dialog を選択すると、[測定マトリックス] パラメーターがダイアログ ボックスに表示されます。Input port <H> を選択すると、ブロックに H 端子が表示されます。

測定マトリックス

測定マトリックス値を入力します。このパラメーターが表示されるのは [測定マトリックスのソース] パラメーターで Specify via dialog を選択した場合です。

測定ノイズの共分散

測定ノイズの共分散を入力します。

Output estimated measurement <Z_est>

推定される測定値を出力するには、このチェック ボックスをオンにします。

Output estimated state <X_est>

推定される状態を出力するには、このチェック ボックスをオンにします。

Output MSE of estimated state <MSE_est>

推定される状態の平均二乗誤差を出力するには、このチェック ボックスをオンにします。

予測された測定値の出力 <Z_prd>

予測される測定値を出力するには、このチェック ボックスをオンにします。

予測された状態の出力 <X_prd>

予測される状態を出力するには、このチェック ボックスをオンにします。

Output MSE of predicted state <MSE_prb>

予測される状態の平均二乗誤差を出力するには、このチェック ボックスをオンにします。

参考文献

[1] Haykin, Simon. Adaptive Filter Theory. Upper Saddle River, NJ: Prentice Hall, 1996.

[2] Welch, Greg and Gary Bishop, “An Introduction to the Kalman Filter,” TR 95–041, Department of Computer Science, University of North Carolina.

サポートされているデータ型

端子入力/出力サポートされているデータ型

Z

M 行 N 列の測定。M は測定ベクトルの長さで N はフィルターの数です。

  • 倍精度浮動小数点

  • 単精度浮動小数点

Enable

1 と 0 の 1 行 N 列のベクトル。N はフィルターの数です。

  • 倍精度浮動小数点

  • 単精度浮動小数点

  • boolean

H

M 行 P 列の測定。M は測定ベクトルの長さで P はフィルター状態ベクトルの長さです。

Z 端子と同じ

Z_est

M 行 N 列の推定される測定マトリックス。M は測定ベクトルの長さで N はフィルターの数です。

Z 端子と同じ

X_est

P 行 N 列の推定される状態マトリックス。P はフィルター状態ベクトルの長さで N はフィルターの数です。

Z 端子と同じ

MSE_est

推定される状態の平均二乗誤差を表す 1 行 N 列のベクトル。N はフィルターの数です。

Z 端子と同じ

Z_prd

M 行 N 列の予測される測定マトリックス。M は測定ベクトルの長さで N はフィルターの数です。

Z 端子と同じ

X_prd

P 行 N 列の予測される状態マトリックス。P はフィルター状態ベクトルの長さで N はフィルターの数です。

Z 端子と同じ

MSE_prd

予測される状態の平均二乗誤差を表す 1 行 N 列のベクトル。N はフィルターの数です。

Z 端子と同じ

参考

LDL Solver

DSP System Toolbox

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2007a で導入