オンライン状態推定のトラブルシューティング
線形、拡張、またはアンセンテッドのカルマン フィルター アルゴリズムあるいは粒子フィルター アルゴリズムを使用して非線形システムの状態推定を実行した後、コードをアプリケーションに配布する前に推定を検証します。検証で推定の信頼度が低いことが示される場合、指定した次のフィルター プロパティをチェックします。
初期状態および状態共分散の値 — システムの測定出力および推定出力が状態推定の開始時に発散している場合、指定した初期値をチェックします。
状態遷移関数と測定関数 — 指定する関数が非線形システムを適切に表していることを確認します。真のシステムが連続時間である場合、アルゴリズムを実装するには状態遷移方程式と測定方程式を離散化して、この離散化したバージョンを使用します。状態推定結果が適切でない場合、離散化に使用するサンプル時間の短縮を検討してください。あるいは、異なる離散化手法を試してください。連続時間の状態遷移関数を離散化する方法の例については、コマンド ラインで「
edit vdpStateFcn.m
」と入力します。アンセンテッド カルマン フィルターおよび粒子フィルターを使用した非線形の状態推定も参照してください。プロセスおよび測定ノイズ共分散の値 — システムの推定出力と測定出力の間の誤差が大きい場合、プロセスおよび測定ノイズ共分散の値に異なる値を指定してみてください。
アルゴリズムの選択 — 拡張カルマン フィルター アルゴリズムを使用している場合、代わりにアンセンテッド カルマン フィルターまたは粒子フィルター アルゴリズムを試すことができます。アンセンテッド カルマン フィルターおよび粒子フィルターは、システムの非線形性をより的確に取得する場合があります。
状態推定のトラブルシューティングを行うには、異なるプロパティをもつ複数のバージョンのフィルターを作成して状態推定を行い、最適な検証結果が得られるフィルターを選択できます。
コマンド ラインで、既存のフィルター オブジェクトをコピーした後、コピーしたオブジェクトのプロパティを変更する場合は、clone
コマンドを使用します。構文 obj2 = obj
を使用した追加のオブジェクトは作成しません。この方法 (obj2
) で作成された新しいオブジェクトのプロパティに加えられたすべての変更によって、元のオブジェクト (obj
) のプロパティも変更されます。