このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Kalman Filter
離散時間または連続時間の線形システムの状態の推定
ライブラリ:
Control System Toolbox /
State Estimation
System Identification Toolbox /
Estimators
説明
Kalman Filter ブロックを使用して、プロセスおよび測定ノイズ共分散データが与えられた状態空間プラント モデルの状態を推定します。状態空間モデルは時変にできます。状態空間モデルおよびノイズ共分散行列がすべて時不変の場合は、定常状態カルマン フィルターの実装を使用し、それ以外では時変カルマン フィルターを使用します。
カルマン フィルターは、連続時間の推定および離散時間の推定の連続または離散の推定問題に最適な解を提供します。
Kalman Filter ブロックは、次の点で kalman
(Control System Toolbox) コマンドと異なります。
kalman(sys,...)
を呼び出すと、sys
には行列G
と行列H
が含まれていると想定されます。具体的には、sys.B
は形式[B G]
になり、sys.D
は形式[D H]
になります。Kalman Filter ブロックに LTI 変数を指定する場合、指定された LTI 変数にG
およびH
を含めることは想定されていません。それらはオプションとして別々に扱います。kalman
コマンドで作成されるフィルターは、既定で[yhat;xhat]
を出力します。ブロックは、既定でxhat
のみを出力します。Kalman
コマンドは、離散時間システムの共分散行列P
およびZ
の両方を出力できます。ブロックは、そのようなシステムのP
またはZ
のみを出力できます。
制限
プラントとノイズのデータは以下の制約を満たさなければなりません。
(C,A) が検出可能である。
および 。
では、虚軸 (離散時間では単位円) に非可制御モードがない。ここで、
連続時間カルマン フィルターは、Function-Call Subsystem または Triggered Subsystem では使用できません。
端子
入力
u — 既知の入力
スカラー | ベクトル
既知の入力 u(t)
または u[k]
依存関係
この端子を有効にするには、[入力端子 u の追加] パラメーターを選択します。このパラメーターは既定で選択されています。
y — 測定出力
スカラー | ベクトル
推定された状態を更新する測定出力 y[n]
。
A — 状態行列
実数行列
n 行 n 列の状態 (またはシステム) 行列。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定します。
B — 入力行列
実数行列
n 行 p 列の入力行列。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定し、[入力端子 u の追加] パラメーターを選択します。
C — 出力行列
実数行列
q 行 p 列の出力行列。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定します。
D — 直達行列
実数行列
q 行 p 列の直達 (またはフィードフォワード) 行列。システム モデルに直達がない場合、[D] はゼロ行列になります。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定し、[入力端子 u の追加] パラメーターを選択します。
G — 測定出力
実数行列
状態空間方程式におけるノイズ変換。
依存関係
この端子を有効にするには、[G 行列と H 行列を使用 (既定値 G=I、H=0)] パラメーターを選択します。
H — 測定出力
実数行列
状態空間方程式におけるノイズ変換。
依存関係
この端子を有効にするには、[G 行列と H 行列を使用 (既定値 G=I、H=0)] パラメーターを選択します。
Q — プロセス ノイズの共分散行列
スカラー | ベクトル | 行列
プロセス ノイズの共分散行列。次のいずれかで指定します。
実数の非負のスカラー。[Q] は、対角にスカラーをもつ Nw 行 Nw 列の対角行列です。Nw はモデルのプロセス ノイズ入力の数です。
実数の非負のスカラーのベクトル。[Q] は、Nw 行 Nw 列の対角行列であり、[Q] の対角にベクトルの要素をもちます。
Nw 行 Nw 列の半正定値行列。
依存関係
この端子を有効にするには、[時不変 Q] パラメーターを選択解除します。
R — 測定ノイズの共分散行列
スカラー | ベクトル | 行列
測定ノイズの共分散行列。次のいずれかで指定します。
実数の正のスカラー。[R] は、対角にスカラーをもつ Ny 行 Ny 列の対角行列です。Ny はモデルの測定出力の数です。
実数の正のスカラーのベクトル。[R] は、Ny 行 Ny 列の対角行列であり、[R] の対角にベクトルの要素をもちます。
Ny 行 Ny 列の正定値行列。
依存関係
この端子を有効にするには、[時不変 R] パラメーターを選択解除します。
N — プロセスおよび測定ノイズの相互共分散行列
スカラー | ベクトル | 行列
プロセスおよび測定ノイズの相互共分散行列。Nw 行 Ny 列の行列として指定します。行列 [Q N; NT R] は、正定値でなければなりません。
依存関係
この端子を有効にするには、[時不変 N] パラメーターを選択解除します。
P0 — 初期状態推定誤差の共分散
スカラー | ベクトル | 行列
初期時点における行列 [P]。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定し、[ソース] パラメーターを [入力端子] に設定します。
X0 — 初期状態推定値
スカラー | ベクトル
初期時点での推定状態。
依存関係
この端子を有効にするには、[ソース] パラメーターを [入力端子] に設定します。
Enable — 測定値の更新を有効にする制御信号
スカラー
この端子は測定値の更新を制御し、スカラー信号を受け取ります。
依存関係
この端子を有効にするには、[入力端子 Enable を追加して測定値の更新を制御] パラメーターを選択します。
Reset — 状態推定値をリセットする制御信号
スカラー
指定された初期値を使用して、推定状態およびパラメーター共分散行列をリセットする制御信号。リセットがトリガーされるタイミングの詳細については、外部リセットを参照してください。
依存関係
この端子を有効にするには、[外部リセット] パラメーターを [なし] 以外の任意の値に設定します。
出力
xhat — 推定された状態
スカラー | ベクトル
線形システムの推定状態。
yhat — 推定出力
スカラー | ベクトル
線形システムの推定出力。
依存関係
この端子を有効にするには、[推定されたモデル出力 y の出力] パラメーターを選択します。
Z — 状態推定誤差の共分散
行列
出力端子 [Z] をブロックに追加します。
この端子を有効にするには、[状態推定誤差の共分散 Z の出力] パラメーターを選択します。
依存関係
この端子を有効にするには、[時間領域] パラメーターを [離散時間] に設定し、[現在の測定値 y[n] を使用して xhat[n] を改善] パラメーターを選択します。
P — 状態推定誤差の共分散
行列
出力端子 [P] をブロックに追加します。
この端子を有効にするには、[状態推定誤差の共分散 P の出力] パラメーターを選択します。
依存関係
この端子を有効にするには、[時間領域] パラメーターを [連続時間] に設定するか、[時間領域] パラメーターを [離散時間] に設定して [現在の測定値 y[n] を使用して xhat[n] を改善] パラメーターを選択解除します。
メモ
[イネーブル] と [リセット] 以外のすべての入力端子は、データ型は同じでなければなりません (single または double)。
[イネーブル] および [リセット] 端子は、
single
、double
、int8
、uint8
、int16
、uint16
、int32
、uint32
および boolean データ型をサポートします。
パラメーター
フィルター設定
時間領域 — 連続時間または離散時間のいずれの状態を推定するかを指定
Discrete-Time
(既定値) | Continuous-Time
離散時間
(既定) — ブロックは離散時間状態を推定します。連続時間
— ブロックは連続時間状態を推定します。Kalman Filter ブロックが同期状態制御 (State Control (HDL Coder) ブロックを参照) を備えたモデル内にある場合、[連続時間] は選択できません。
プログラムでの使用
ブロック パラメーター: TimeDomain |
型: string、文字ベクトル |
値: "Discrete-Time" | "Continuous-Time" |
既定: "Discrete-Time" |
現在の測定値 y[n] を使用して xhat[n] を改善 — 測定出力を使用して出力の状態推定値を更新
on
(既定値) | off
離散時間のカルマン フィルターの現在の推定器バリアントを使用します。このパラメーターを選択しない場合、遅延推定器 (バリアント) が使用されます。
このパラメーターは、[時間領域] が [離散時間] の場合にのみ使用できます。
プログラムでの使用
ブロック パラメーター: UseCurrentEstimator |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "on" |
サンプル時間 — ブロックのサンプル時間
-1
(既定値) | non-negative scalar
ブロックのサンプル時間。-1
または正のスカラーとして指定します。
既定値は -1
です。これは、ブロックがモデル内のブロックのコンテキストに基づいてサンプル時間を継承することを意味します。すべてのブロックの入力端子で、サンプル時間が同じでなければなりません。
依存関係
このパラメーターは、[時間領域] が [離散時間] で、[モデル ソース] が [個々の A、B、C、D 行列] または [入力端子] である場合にのみ使用できます。[モデル ソース] が [LTI 状態空間変数] の場合、ブロックのサンプル時間は LTI 状態空間変数から取得されます。
プログラムでの使用
ブロック パラメーター: Ts |
型: string、文字ベクトル |
値: "-1" | スカラー |
既定: "-1" |
モデル パラメーター
システム モデルモデル ソース — ブロックに行列 A、B、C、D を指定する方法を指定
LTI State-Space Variable
(既定値) | Individual A, B, C, D matrices
| Input port
LTI 状態空間変数
— [変数] で指定されたモデルを使用します。既定値はss(0.95,1,1,0)
です。モデルのサンプル時間は、[時間領域] パラメーターと一致しなければなりません。つまり、[時間領域] が [離散時間] の場合、モデルは離散時間でなければなりません。個々の A、B、C、D 行列
— ブロック パラメーターに [A]、[B]、[C]、および [D] を指定します。入力端子
— Kalman Filter ブロックへの入力信号として、行列 [A]、[B]、[C]、[D] を指定します。このオプションを選択した場合、ブロックには追加の入力端子 [A]、[B]、[C]、[D] が含められます。ブロック パラメーターの [状態数]、[入力数]、および [出力数] も指定しなければなりません。
プログラムでの使用
ブロック パラメーター: ModelSource |
型: string、文字ベクトル |
値: "LTI State-Space Varaible" | "Individual A, B, C, D matrices" | "Input port" |
既定: "LTI State-Space Variable" |
A — 状態行列
0.95
(既定値)
行列 [A] を指定します。実数の正方でなければなりません。既定値は 0.95
です。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [個々の A、B、C、D 行列] に設定します。
プログラムでの使用
ブロック パラメーター: A |
型: string、文字ベクトル |
値:"real matrix" |
既定: "0.95" |
B — 入力行列
1
(既定値)
行列 [B] を指定します。実数行列で、行数が行列 [A] と同じでなければなりません。既定値は 1
です。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [個々の A、B、C、D 行列] に設定します。
プログラムでの使用
ブロック パラメーター: B |
型: string、文字ベクトル |
値:"real matrix" |
既定: "1" |
C — 出力行列
1
(既定値)
行列 [C] を指定します。実数行列で、列数が行列 [A] と同じでなければなりません。既定値は 1
です。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [個々の A、B、C、D 行列] に設定します。
プログラムでの使用
ブロック パラメーター: C |
型: string、文字ベクトル |
値:"real matrix" |
既定: "1" |
D — 直達行列
0
(既定値)
行列 [D] を指定します。実数行列であり、行数は行列 [C] と同じで、列数は行列 [B] と同じでなければなりません。既定値は 0
です。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [個々の A、B、C、D 行列] に設定します。
プログラムでの使用
ブロック パラメーター: D |
型: string、文字ベクトル |
値:"real matrix" |
既定: "0" |
状態数 — 推定される状態数
1
(既定値) | non-negative scalar
推定される状態数。正の整数として指定します。既定値は 1
です。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定します。
プログラムでの使用
ブロック パラメーター: NumberOfStates |
型: string、文字ベクトル |
値: "1" | scalar |
既定: "1" |
入力数 — 既知の入力の数
1
(既定値) | non-negative scalar
モデルにおける既知の入力の数。正の整数として指定します。既定値は 1
です。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定します。
プログラムでの使用
ブロック パラメーター: NumberOfInputs |
型: string、文字ベクトル |
値: "1" | scalar |
既定: "1" |
出力の数 — 測定出力の数
1
(既定値) | non-negative scalar
モデルにおける測定出力の数。正の整数として指定します。既定値は 1
です。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に設定します。
プログラムでの使用
ブロック パラメーター: NumberOfOutputs |
型: string、文字ベクトル |
値: "1" | scalar |
既定: "1" |
ソース — 初期状態推定値および初期状態推定誤差の共分散を入力する方法を指定
Dialog
(既定値) | Input port
ダイアログ
— ダイアログ ボックスで値を直接指定します。入力端子
— 入力端子から値を継承します。既定値は10
です。ブロックには、追加の入力端子 [X0] が含まれます。時変カルマン フィルターを使用する場合、2 番目の入力端子 [P0] が追加されます。[X0] と [P0] は、それぞれパラメーター [初期状態 x[0]] および [状態推定誤差の共分散 P[0]] と同じ条件を満たさなければなりません。
プログラムでの使用
ブロック パラメーター: InitialEstimateSource |
型: string、文字ベクトル |
値: "Dialog" | "Input port" |
既定: "Dialog" |
初期状態 x[0] — 初期状態推定値を指定
0
(既定値) | scalar
| vector
初期状態推定値を、実数のスカラーまたはベクトルとして指定します。スカラーを指定する場合、すべての初期状態推定値はこのスカラーに設定されます。ベクトルを指定する場合、ベクトルの長さはモデル内の状態の数と一致しなければなりません。既定値は 0
です。
依存関係
この端子を有効にするには、[ソース] パラメーターを [ダイアログ] に設定します。
プログラムでの使用
ブロック パラメーター: X0 |
型: string、文字ベクトル |
値: "0" | scalar | vector |
既定: "0" |
状態推定誤差の共分散 P[0] — 初期状態推定誤差の共分散を指定
10
(既定値) | scalar
| vector
| matrix
離散時間カルマン フィルターでの初期状態推定誤差の共分散 P[0]、または連続時間での P(0) を指定します。このパラメーターは次のいずれかとして指定しなければなりません。
実数の非負のスカラー。[P] は対角にスカラーをもつ Ns 行 Ns 列の対角行列です。Ns はモデル内の状態数です。
実数の非負のスカラーのベクトル。[P] は、Ns 行 Ns 列の対角行列であり、[P] の対角にベクトルの要素をもちます。
Ns 行 Ns 列の半正定値行列。
依存関係
この端子を有効にするには、[モデル ソース] パラメーターを [入力端子] に、[ソース] パラメーターを [ダイアログ] 設定します。
プログラムでの使用
ブロック パラメーター: P0 |
型: string、文字ベクトル |
値: "10" | scalar | vector | matrix |
既定: "10" |
モデル変数からカルマン ゲイン K を使用 — 状態空間プラント モデルに含まれる、事前に同定されたカルマン ゲインを使用するかどうかを指定
off
(既定値) | on
[変数] で指定された状態空間モデルに存在する、事前に同定されたカルマン ゲインを使用するかどうかを指定します。
依存関係
このパラメーターを有効にするには、以下の条件を満たす必要があります。
[モデル ソース] が [LTI 状態空間変数] に設定されており、[変数] が非ゼロの [K] 行列をもつ同定された状態空間モデル (
idss
) である。[時不変 Q]、[時不変 R]、および [時不変 N] の各パラメーターを選択する。
[G 行列と H 行列を使用 (既定値 G=I、H=0)] パラメーターを選択している場合は、[時不変 G] および [時不変 H] パラメーターも選択しなければならない。
プログラムでの使用
ブロック パラメーター: UseK |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "off" |
G 行列と H 行列を使用 (既定値 G=I、H=0) — 行列 G と行列 H に既定以外の値を使用するかどうかを指定
off
(既定値) | on
既定は、G=I
および H=0
です。このオプションを選択する場合、[G] および [H] のパラメーターを指定しなければなりません。
プログラムでの使用
ブロック パラメーター: UseGH |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "off" |
G — 行列 G を指定
1
(既定値) | non-negative scalar
| vector
| matrix
これは、行列 [A] と同じ行数をもつ実数行列でなければなりません。既定値は 1
です。
依存関係
このパラメーターを有効にするには、[G 行列と H 行列を使用 (既定値 G=I、H=0)] パラメーターを選択します。
プログラムでの使用
ブロック パラメーター: G |
型: string、文字ベクトル |
値: スカラー | ベクトル | 行列 |
既定: "1" |
時不変 G — 行列 G が時不変であることを指定
on
(既定値) | off
このオプションを選択解除すると、ブロックには追加の入力端子 [G] が含められます。
プログラムでの使用
ブロック パラメーター: TimeInvariantG |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "on" |
H — 行列 H を指定
0
(既定値) | non-negative scalar
| vector
| matrix
これは、行列 [C] 行列と同じ行数と、行列 [G] 行列と同じ列数をもつ実数行列でなければなりません。既定値は 0
です。
依存関係
このパラメーターを有効にするには、[G 行列と H 行列を使用 (既定値 G=I、H=0)] パラメーターを選択します。
プログラムでの使用
ブロック パラメーター: H |
型: string、文字ベクトル |
値: スカラー | ベクトル | 行列 |
既定: "0" |
時不変 H — 行列 H が時不変であることを指定
on
(既定値) | off
このオプションを選択解除すると、ブロックには追加の入力端子 [H] が含められます。
プログラムでの使用
ブロック パラメーター: TimeInvariantH |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "on" |
プロセス ノイズの入力数 — プロセス ノイズ入力
1
(既定値) | non-negative scalar
モデル内のプロセス ノイズ入力の数を指定します。既定値は 1
です。
依存関係
このパラメーターは、[時不変 G] と [時不変 H] が選択解除されている場合にのみ使用できます。それ以外の場合、この情報は行列 [G] または行列 [H] から推定されます。
プログラムでの使用
ブロック パラメーター: NumberOfProcessNoiseInputs |
型: string、文字ベクトル |
値: スカラー |
既定: "1" |
Q — プロセス ノイズの共分散行列
0.05
(既定値) | non-negative scalar
| vector
| matrix
以下のいずれかとして指定します。
実数の非負のスカラー。[Q] は、対角にスカラーをもつ Nw 行 Nw 列の対角行列です。Nw はモデルのプロセス ノイズ入力の数です。
実数の非負のスカラーのベクトル。[Q] は、Nw 行 Nw 列の対角行列であり、[Q] の対角にベクトルの要素をもちます。
Nw 行 Nw 列の半正定値行列。
依存関係
このパラメーターを有効にするには、[時不変 Q] パラメーターを選択します。
プログラムでの使用
ブロック パラメーター: Q |
型: string、文字ベクトル |
値: スカラー | ベクトル | 行列 |
既定: "0.05" |
時不変 Q — 行列 Q が時不変かどうかを指定
on
(既定値) | off
このパラメーターを選択解除すると、ブロックには追加の入力端子 [Q] が含められます。
プログラムでの使用
ブロック パラメーター: TimeInvariantQ |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "on" |
R — 測定ノイズの共分散行列
1
(既定値) | non-negative scalar
| vector
| matrix
以下のいずれかとして指定します。
実数の正のスカラー。[R] は、対角にスカラーをもつ Ny 行 Ny 列の対角行列です。Ny はモデルの測定出力の数です。
実数の正のスカラーのベクトル。[R] は、Ny 行 Ny 列の対角行列であり、[R] の対角にベクトルの要素をもちます。
Ny 行 Ny 列の正定値行列。
依存関係
このパラメーターを有効にするには、[時不変 R] パラメーターを選択します。
プログラムでの使用
ブロック パラメーター: R |
型: string、文字ベクトル |
値: スカラー | ベクトル | 行列 |
既定: "1" |
時不変 R — 行列 R が時不変かどうかを指定
on
(既定値) | off
このパラメーターを選択解除すると、ブロックには追加の入力端子 [R] が含められます。
プログラムでの使用
ブロック パラメーター: TimeInvariantR |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "on" |
N — プロセスおよび測定ノイズの相互共分散行列
0
(既定値) | non-negative scalar
| vector
| matrix
このパラメーターを Nw 行 Ny 列の行列として指定します。行列 [Q N; NT R] は、正定値でなければなりません。
依存関係
このパラメーターを有効にするには、[時不変 N] パラメーターを選択します。
プログラムでの使用
ブロック パラメーター: N |
型: string、文字ベクトル |
値: スカラー | ベクトル | 行列 |
既定: "0" |
時不変 N — 行列 N が時不変かどうかを指定
on
(既定値) | off
このパラメーターを選択解除すると、ブロックには追加の入力端子 [N] が含められます。
プログラムでの使用
ブロック パラメーター: TimeInvariantN |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "on" |
オプション
追加の入力端子入力端子 u の追加 — モデルに既知の入力が含まれているかどうかを指定
on
(既定値) | off
モデル内に既知の入力 u(t)
または u[k]
が含まれる場合、このオプションを選択します。このパラメーターは既定で選択されています。このパラメーターを選択解除すると、ブロックから入力端子 [u] が削除され、ブロック ダイアログ ボックスから [B]、[D]、および [入力数] のパラメーターが削除されます。
プログラムでの使用
ブロック パラメーター: AddInputPort |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "on" |
入力端子 Enable を追加して測定値の更新を制御 — 測定値の更新を制御
off
(既定値) | on
測定値の更新を制御する場合、このオプションを選択します。ブロックには、追加の入力端子 [Enable] が含められます。入力端子 [Enable] はスカラー信号を受け入れます。既定で、このパラメーターは選択されません。
既定では、ブロックは各タイム ステップで測定の更新を行い、測定出力に基づいて状態および出力推定 および を改善します。端子 [Enable] 信号が 0
の場合、現在のサンプル時間での測定値更新はスキップされます。具体的な状態推定の方程式は、連続時間カルマン フィルターで 、離散時間で になります。
メモ
端子 [Enable] を有効にすることで、測定値の更新を制御できます。既定では、Kalman Filter が測定値を更新します。
プログラムでの使用
ブロック パラメーター: AddEnablePort |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "off" |
外部リセット — 指定された初期値を使用して、推定状態およびパラメーターの共分散行列をリセットするオプション
None
(既定値) | Rising
| Falling
| Either
| Level
| Level hold
このパラメーターは、ブロックがリセットされるタイミングの制御に役立ちます。タイム ステップ t
でブロックをリセットするとします。ブロックが t
で有効の場合、ソフトウェアはブロック ダイアログで、または入力端子 [P0] および [X0] で指定された初期パラメーター値を使用して、状態を推定します。つまり、t
においてブロックは時間の更新を行い、有効の場合には、リセット後に測定値を更新します。ブロックは、これらの更新された推定値を出力します。
次のいずれかを指定します。
なし
(既定) — 推定状態 および状態推定誤差の共分散行列 [P] の値はリセットされません。立ち上がり
— 制御信号が負または 0 の値から正の値に立ち上がる際にリセットをトリガーします。初期値が負の場合、0 に立ち上がるとリセットをトリガーします。立ち下がり
— 制御信号が正または 0 の値から負の値に立ち下がる時点でリセットをトリガーします。初期値が正の場合、0 に立ち下がるとリセットをトリガーします。両方
— 制御信号が立ち上がる際または立ち下がる際にリセットをトリガーします。レベル
— 次のいずれかの場合にリセットをトリガーします。制御信号が現在のタイム ステップで非ゼロの場合。
制御信号が前のタイム ステップでの非ゼロから現在のタイム ステップでの 0 に変化した場合。
レベル保持
— 制御信号が現在のタイム ステップで非ゼロの場合、リセットをトリガーします。
[なし]
以外のオプションを選択すると、[リセット] 入力端子がブロックに追加され、リセット制御の入力信号が提供されます。
プログラムでの使用
ブロック パラメーター: ExternalReset |
型: string、文字ベクトル |
値: "None" | "Rising" | "Falling" | "Either" | "Level" | "Level hold" |
既定: "None" |
推定されたモデル出力 y の出力 — 推定されたモデル出力を含める
off
(既定値) | on
出力端子 をブロックに追加して、推定されたモデル出力を出力します。既定で、このパラメーターは選択されません。
プログラムでの使用
ブロック パラメーター: OutputEstimatedY |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "off" |
状態推定誤差の共分散 Z の出力 — 出力端子 Z をブロックに追加
off
(既定値) | on
出力端子 [Z] をブロックに追加します。行列 [Z] は、[時間領域] が [離散時間] で、[現在の測定値 y[n] を使用して xhat[n] を改善] パラメーターが選択されている場合にのみ指定されます。それ以外の場合は、アルゴリズム節で説明されているように、行列 [P] が指定されます。
既定で、このパラメーターは選択されません。
プログラムでの使用
ブロック パラメーター: OutputZ |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "off" |
状態推定誤差の共分散 P の出力 — 出力端子 P をブロックに追加
off
(既定値) | on
出力端子 [P] をブロックに追加します。既定で、このパラメーターは選択されません。
依存関係
この端子を有効にするには、[時間領域] パラメーターを [連続時間] に設定するか、[時間領域] パラメーターを [離散時間] に設定して [現在の測定値 y[n] を使用して xhat[n] を改善] パラメーターを選択解除します。
プログラムでの使用
ブロック パラメーター: OutputP |
型: string、文字ベクトル |
値: "off" | "on" |
既定: "off" |
アルゴリズム
連続時間の推定
次の連続プラントを考えます。
ここで、u は既知の入力、w はホワイト プロセス ノイズ、v はホワイト測定ノイズで、次を満たします。
以上から、状態推定誤差の共分散 を最小化する状態推定 を作成します。
最適な解は、次の方程式をもつカルマン フィルターです。
ここで
カルマン フィルターは、既知の入力 u と測定値 y を使用して、状態推定 を生成します。必要に応じて、ブロックで真のプラント出力 の推定を出力することもできます。
システム行列 (A(t)
, B(t)
, C(t)
, D(t)
, G(t)
, H(t)
) およびノイズ共分散行列 (Q(t)
, R(t)
, N(t)
) が ([ブロック パラメーター] ダイアログ ボックスで指定された) 定数である場合、ブロックは定常状態カルマン フィルターを実装します。この定常状態カルマン フィルターは、定常状態の推定誤差の共分散を最小化する定数行列 P
を使用して、関連する連続時間代数リカッチ (Riccati) 方程式を解きます。
離散時間の推定
次の離散プラントを考えます。
ここで、u は既知の入力、w はホワイト プロセス ノイズ、v はホワイト測定ノイズで、次を満たします。
推定器には、次の状態方程式があります。
ここで、ゲイン L[n]
は次の離散リカッチ方程式で計算されます。
ここで、I は適切なサイズの単位行列で、以下が成り立ちます。
この定常状態カルマン フィルターは、定常状態の推定誤差の共分散を最小化する定数行列 P
を使用して、関連する離散時間代数リカッチ (Riccati) 方程式を解きます。
離散時間カルマン フィルターには 2 つの場合があります。
現在の推定器が、y[n] を含む使用可能なすべての測定値を使用して、状態推定 を生成する。フィルターは y[n] で を更新し、以下を出力します。
遅延推定器は、y[n –1] までの測定値を使用して、状態推定 を生成。フィルターは、以前に定義した を、オプションの出力とともに出力します。
現在の推定器は遅延推定器よりも推定精度が高く、これは低速のサンプル時間で重要です。ただし、計算コストがより高いため、制御ループ内に実装することは困難です。より具体的には、現在の推定器には直達があり、遅延を含まないフィードバック ループでカルマン フィルターを使用すると代数ループになります (フィードバック ループ自体にも直達がある)。この代数ループはシミュレーションの速度に影響する場合があり、またモデルに代数ループが含まれているとコードを生成できません。
参照
[1] Franklin, Gene F., J. David Powell, and Michael L. Workman. Digital Control of Dynamic Systems. 2nd ed. Reading, Mass: Addison-Wesley, 1990.
[2] Lewis, Frank L. Optimal Estimation: With an Introduction to Stochastic Control Theory. New York: Wiley, 1986.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
バージョン履歴
R2014b で導入R2021a: Kalman Filter ブロック: 数値の変更
2021a 以降、Kalman Filter ブロックで使用されるアルゴリズムの数値処理が改善されたことにより、前のバージョンを使用して得た結果とは異なる結果が生成される可能性があります。
参考
関数
kalman
(Control System Toolbox) |extendedKalmanFilter
|unscentedKalmanFilter
|particleFilter
ブロック
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)