このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
extendedKalmanFilter
オンライン状態推定に対する拡張カルマン フィルター オブジェクトの作成
説明
extendedKalmanFilter
は 1 次離散時間の拡張カルマン フィルター アルゴリズムを使用して、離散時間非線形システムのオンライン状態推定のオブジェクトを作成します。
オンライン状態推定を実行する場合、最初に非線形の状態遷移関数 f と測定関数 h を作成します。次に、これらの非線形関数を使用して extendedKalmanFilter
オブジェクトを構築し、ノイズ項が加法性であるか非加法性であるかを指定します。また、関数 generateJacobianFcn
で自動微分を使用して生成するか独自に記述することで、状態遷移関数と測定関数のヤコビアンを指定することもできます。これらを指定しない場合、ソフトウェアはヤコビアンを数値的に計算します。
オブジェクトを作成した後、predict
コマンドを使用して次のタイム ステップでの状態推定を予測し、correct
でアルゴリズムとリアルタイム データを使用して状態推定を修正します。アルゴリズムの詳細については、アルゴリズムを参照してください。
作成
構文
説明
は、離散時間非線形システムのオンライン状態推定用の拡張カルマン フィルター オブジェクトを作成します。obj
= extendedKalmanFilter(stateTransitionFcn
,measurementFcn
,initialState
)
stateTransitionFcn
は、時間 k-1 における状態ベクトルが与えられた場合の時間 k におけるシステムの状態を計算する関数です。この関数は、オブジェクトのStateTransitionFcn
プロパティに格納されます。measurementFcn
は、時間 k における状態が与えられた場合の時間 k におけるシステムの出力測定を計算する関数です。この関数は、オブジェクトのMeasurementFcn
プロパティに格納されます。initialState
は、状態推定の初期値を指定します。この値は、オブジェクトのState
プロパティに格納されます。
オブジェクトを作成した後、関数 correct
と predict
を使用し、1 次離散時間の拡張カルマン フィルター アルゴリズムとリアルタイム データを使用して状態推定および状態推定誤差の共分散値を更新します。
predict
は、タイム ステップ k-1 における状態値を使用して、タイム ステップ k の予測値でobj.State
とobj.StateCovariance
を更新します。correct
は、タイム ステップ k における測定データを使用して、タイム ステップ k の推定値でobj.State
とobj.StateCovariance
を更新します。
プロパティ
オブジェクト関数
correct | 拡張カルマン フィルター、アンセンテッド カルマン フィルター、または粒子フィルターと測定値を使用して、状態および状態推定誤差の共分散を修正します。 |
predict | 拡張カルマン フィルター、アンセンテッド カルマン フィルター、または粒子フィルターを使用した次のタイム ステップにおける状態および状態推定誤差の共分散の予測 |
residual | 拡張カルマン フィルターまたはアンセンテッド カルマン フィルターを使用するとき、測定残差と残差共分散を返す |
clone | オンライン状態推定オブジェクトをコピー |
generateJacobianFcn | 自動微分を使用して拡張カルマン フィルターの MATLAB ヤコビ関数を生成 |
例
アルゴリズム
1 次離散時間の拡張カルマン フィルター アルゴリズムで、離散時間非線形システムのオンライン状態推定を実行します。
状態 x、入力 u、出力 y、プロセス ノイズ w および測定ノイズ v をもつプラントについて考えます。プラントを非線形システムとして表現できると仮定します。
アルゴリズムは指定した状態遷移関数と測定関数を使用して非線形システムの状態推定 を計算します。ソフトウェアを使用して、これらの関数にノイズを加法性または非加法性として指定することができます。
加法性ノイズ項 — 状態遷移方程式と測定方程式は次の形式で表されます。
ここで f は、タイム ステップ間の状態
x
の変化を記述する非線形の状態遷移関数です。非線形の測定関数 h は、x
をタイム ステップk
での測定値y
に関連付けます。w
とv
はそれぞれ、ゼロ平均の無相関プロセス ノイズと測定ノイズです。これらの関数は、方程式のus
とum
で表される追加の入力引数をもつこともできます。たとえば、追加引数はタイム ステップk
または非線形システムに対する入力u
にすることもできます。このような引数は複数存在する可能性があります。両方の方程式において、ノイズ項は加法性であることに注意してください。つまり、
x(k)
はプロセス ノイズw(k-1)
に線形に関連し、y(k)
は測定ノイズv(k)
に線形に関連します。非加法性ノイズ項 — ソフトウェアでは、状態 x[k] と測定値 y[k] がそれぞれプロセス ノイズと測定ノイズの非線形関数である、より複雑な状態遷移関数と測定関数もサポートされます。ノイズ項が非加法性な場合、状態遷移方程式と測定方程式は次の形式で表されます。
オンライン状態推定を実行する場合、最初に非線形の状態遷移関数 f と測定関数 h を作成します。次に、これらの非線形関数を使用して extendedKalmanFilter
オブジェクトを構築し、ノイズ項が加法性であるか非加法性であるかを指定します。また、関数 generateJacobianFcn
で自動微分を使用して生成するか独自に記述することで、状態遷移関数と測定関数のヤコビアンを指定することもできます。これらを指定しない場合、ソフトウェアはヤコビアンを数値的に計算します。
オブジェクトを作成した後、predict
コマンドを使用して次のタイム ステップでの状態推定を予測し、correct
でアルゴリズムとリアルタイム データを使用して状態推定を修正します。アルゴリズムの詳細については、オンライン状態推定のための拡張カルマン フィルター アルゴリズムおよびアンセンテッド カルマン フィルター アルゴリズムを参照してください。
拡張機能
バージョン履歴
R2016b で導入参考
関数
predict
|correct
|residual
|clone
|unscentedKalmanFilter
|kalman
|kalmd
|generateJacobianFcn