Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Extended Kalman Filter

拡張カルマン フィルターを使用した離散時間非線形システムの状態の推定

  • ekf_block

ライブラリ:
Control System Toolbox / State Estimation
System Identification Toolbox / Estimators

説明

Extended Kalman Filter ブロックは、1 次離散時間拡張カルマン フィルター アルゴリズムを使用して離散時間の非線形システムの状態を推定します。

状態 x、入力 u、出力 y、プロセス ノイズ w および測定ノイズ v をもつプラントについて考えます。プラントを非線形システムとして表現できると仮定します。

このブロックは、システムの状態遷移関数と測定関数および拡張カルマン フィルター アルゴリズムを使用して、現在のタイム ステップに対する状態の推定値 x^ を生成します。アルゴリズムの詳細については、オンライン状態推定のための拡張カルマン フィルター アルゴリズムおよびアンセンテッド カルマン フィルター アルゴリズムを参照してください。

システムの非線形の状態遷移関数と測定関数を作成し、これらの関数をブロックで指定します。このブロックは、異なるサンプリング レートで動作する複数のセンサーをもつシステムの状態推定をサポートします。それぞれがシステムの 1 つのセンサーに対応する測定関数を最大 5 つ指定できます。また、状態遷移関数と測定関数のヤコビアンを指定することもできます。これらを指定しない場合、ソフトウェアはヤコビアンを数値的に計算します。詳細については、状態遷移関数と測定関数を参照してください。

端子

入力

すべて展開する

ブロックで指定した各測定関数に対応する、測定されたシステム出力。端子の個数は、システム内の測定関数の個数に等しくなります。最大 5 つの測定関数を指定できます。たとえば、システムに 2 つのセンサーがある場合、ブロックに 2 つの測定関数を指定します。最初の端子 [y1] は既定で利用可能です。[適用] をクリックすると、ソフトウェアは 2 番目の測定関数に対応する端子 [y2] を生成します。

端子は N 次元のベクトルとして指定します。ここで N は、対応するセンサーで測定される数量の数です。たとえば、システムにオブジェクトの位置と速度を測定するセンサーが 1 つある場合、端子は [y1] の 1 つだけです。この端子は、位置と速度に対応する値をもつ 2 次元ベクトルとして指定されます。

依存関係

最初の端子 [y1] は既定で利用可能です。[y2][y5] の端子は、[測定値の追加] をクリックし、[適用] をクリックすると生成されます。

データ型: single | double

状態遷移関数 f に渡される、状態 x とプロセス ノイズ w 以外の追加のオプション入力引数。状態遷移関数の詳細については、状態遷移関数と測定関数を参照してください。

システムに非加法性のプロセス ノイズがあり、状態遷移関数 f が次の形式であると仮定します。

x(k+1) = f(x(k),w(k),StateTransitionFcnInputs)

ここで、k はタイム ステップ、StateTransitionFcnInputsxw 以外の追加の入力引数です。

MATLAB® 関数 (.m ファイル) を使用して f を作成する場合、[適用] をクリックすると、ソフトウェアによって端子 [StateTransitionFcnInputs] が生成されます。この端子への入力はスカラー、ベクトル、または行列として指定できます。

状態遷移関数が複数の追加の入力をもつ場合、Simulink Function (Simulink) ブロックを使用して関数を指定します。Simulink Function ブロックを使用する際、追加の入力は Inport (Simulink) ブロックを使って Simulink Function ブロックに直接提供します。Extended Kalman Filter ブロック内に追加の入力用の入力端子は生成されません。

依存関係

この端子は次の両方の条件が満たされる場合にのみ生成されます。

  • MATLAB 関数を使用して [関数]f を指定しており、f が MATLAB パス上にある場合。

  • xw 以外に、f で必要とされる追加の入力引数が 1 つだけの場合。

データ型: single | double

測定関数に渡される、状態 x と測定ノイズ v 以外の追加のオプション入力。測定関数の詳細については、状態遷移関数と測定関数を参照してください。

[MeasurementFcn1Inputs] は指定した最初の測定関数に対応し、それ以降も同様です。たとえば、システムに 3 つのセンサーと非加法性測定ノイズがある場合、3 つの測定関数 h1h2h3 は次の形式を取ります。

y1[k] = h1(x[k],v1[k],MeasurementFcn1Inputs)

y2[k] = h2(x[k],v2[k],MeasurementFcn2Inputs)

y3[k] = h3(x[k],v3[k])

ここで、k はタイム ステップ、MeasurementFcn1InputsMeasurementFcn2Inputsh1h2 への追加の入力引数です。

[関数] で MATLAB 関数 (.m ファイル) を使用して h1h2、および h3 を指定する場合、[適用] をクリックすると、ソフトウェアは [MeasurementFcn1Inputs][MeasurementFcn2Inputs] の端子を生成します。これらの端子への入力はスカラー、ベクトル、または行列として指定できます。

測定関数が複数の追加の入力をもつ場合、Simulink Function (Simulink) ブロックを使用して関数を指定します。Simulink Function ブロックを使用する際、追加の入力は Inport (Simulink) ブロックを使って Simulink Function ブロックに直接提供します。Extended Kalman Filter ブロック内に追加の入力用の入力端子は生成されません。

依存関係

測定関数 h に対応する端子は、次の両方の条件が満たされる場合にのみ生成されます。

  • MATLAB 関数を使用して [関数]h を指定しており、h が MATLAB パス上にある場合。

  • xv 以外に、h で必要とされる追加の入力引数が 1 つだけの場合。

データ型: single | double

時変プロセス ノイズ共分散。[プロセス ノイズ] パラメーターの値に応じて、スカラー、ベクトルまたは行列として指定します。

  • [プロセス ノイズ][加法性] — 共分散をスカラー、Ns 要素のベクトル、または Ns 行 Ns 列の行列として指定します。ここで Ns はシステムの状態の数です。プロセス ノイズ項の間に相互相関がなく、すべての項が同じ分散をもつ場合は、スカラーを指定します。プロセス ノイズ項の間に相互相関がなく、すべての項が異なる分散をもつ場合は、長さ Ns のベクトルを指定します。

  • [プロセス ノイズ][非加法性] — 共分散を W 行 W 列の行列として指定します。ここで W は状態遷移関数のプロセス ノイズ項の数です。

依存関係

この端子は、プロセス ノイズ共分散を [時変] に指定した場合に生成されます。[適用] をクリックすると端子が表示されます。

データ型: single | double

システムの最大 5 つの測定関数の時変測定ノイズ共分散。行列として指定します。行列のサイズは、対応する測定関数の [測定ノイズ] パラメーターの値によって異なります。

  • [測定ノイズ][加法性] — 共分散を N 行 N 列の行列として指定します。ここで N はシステムの測定値の数です。

  • [測定ノイズ][非加法性] — 共分散を V 行 V 列の行列として指定します。ここで V は対応する測定関数の測定ノイズ項の数です。

依存関係

端子は、対応する測定関数の測定ノイズ共分散を [時変] に指定した場合に生成されます。[適用] をクリックすると端子が表示されます。

データ型: single | double

最初の測定関数に対応する端子 [y1] において、測定された出力データをすべての時間点で使用できないと仮定します。[Enable1] 端子で 0 以外の信号値を使用して、測定データが利用可能な場合に推定状態の補正をイネーブルにします。測定データが利用できない場合は端子値を 0 に指定します。同様に、ith の測定関数で、端子 [yi] のすべての時間点で測定された出力データを利用できない場合、対応する端子 [Enablei]0 以外の値に指定します。

依存関係

測定関数に対応する端子は、その測定関数で [イネーブル端子の追加] を選択した場合に生成されます。[適用] をクリックすると端子が表示されます。

データ型: single | double | Boolean

出力

すべて展開する

推定された状態。サイズが Ns のベクトルとして返されます。ここで Ns はシステムの状態の数です。個々の状態にアクセスするには、Selector (Simulink) ブロックを使用します。

[現在の測定値を使用して状態推定値を改善] パラメーターが選択されている場合、ブロックは、時間 k までに測定された出力を使って推定された、タイム ステップ k での修正された状態推定 x^[k|k] を出力します。このパラメーターをオフにすると、ブロックは、前の時間 k-1 までに測定された出力を使って推定された、時間 k の予測された状態推定 x^[k|k1] を返します。フィルターがフィードバック ループにあり Simulink® モデルに代数ループがある場合は、このパラメーターをクリアします。

データ型: single | double

状態推定誤差の共分散。Ns 行 Ns 列の行列として返されます。ここで Ns はシステムの状態の数です。個々の共分散にアクセスするには、Selector (Simulink) ブロックを使用します。

依存関係

この端子は、[システム モデル] タブで [状態推定誤差の共分散の出力] を選択して [適用] をクリックすると生成されます。

データ型: single | double

パラメーター

すべて展開する

[システム モデル] タブ

状態遷移

この状態遷移関数は、タイム ステップ k で状態ベクトルが与えられた場合の、タイム ステップ k+1 でシステムの Ns 要素をもつ状態ベクトルを計算します。Ns は非線形システムの状態の数です。状態遷移関数を作成し、[関数] にその関数名を指定します。たとえば、vdpStateFcn.m という状態遷移関数を作成して保存した場合、[関数]vdpStateFcn を指定します。

作成する関数への入力は、[プロセス ノイズ] でプロセス ノイズを加法性として指定するか、非加法性として指定するかによって異なります。

  • [プロセス ノイズ][加法性] — 状態遷移関数 f は前のタイム ステップでの状態値の関数として状態が変化する方法を指定します。

    x(k+1) = f(x(k),Us1(k),...,Usn(k)),

    ここで x(k) は時間 k で推定された状態であり、Us1,...,Usn はシステム入力やサンプル時間など、状態遷移関数で要求された任意の追加入力引数です。加法性のプロセス ノイズを使用した状態遷移関数の例を確認するには、コマンド ラインで edit vdpStateFcn を入力します。

  • [プロセス ノイズ][非加法性] — 状態遷移関数はプロセス ノイズ w の関数として状態が変化する方法も指定します。

    x(k+1) = f(x(k),w(k),Us1(k),...,Usn(k)).

詳細については、状態遷移関数と測定関数を参照してください。

f は Simulink Function (Simulink) ブロックを使用して作成するか、MATLAB 関数 (.m ファイル) としても作成できます。

  • MATLAB 関数を使用できるのは、f に xw 以外の追加の入力引数 Us1 が 1 つある場合のみです。

    x(k+1) = f(x(k),w(k),Us1(k))

    ソフトウェアはこの引数を指定する追加の入力端子 [StateTransitionFcnInputs] を生成します。

  • Simulink Function ブロックを使用する場合、Simulink Function ブロック内で Argument Inport (Simulink) ブロックを使って xw を指定し、追加の入力 Us1,...,Usn を指定するには Inport (Simulink) ブロックを使用します。Extended Kalman Filter ブロックに Us1,...,Usn は提供しません。

プログラムでの使用

ブロック パラメーター: StateTransitionFcn
型: 文字ベクトル、string
既定: 'myStateTransitionFcn'

状態遷移関数 f のヤコビアン。以下のいずれかとして指定します。

  • off — ヤコビアンがソフトウェアによって数値的に計算されます。この計算によって処理時間が長くなり、状態推定の数値が不正確になる場合があります。

  • on — ヤコビアンを計算する関数をユーザーが作成し、[ヤコビアン] にその関数名を指定します。たとえば、vdpStateJacobianFcn.m がヤコビ関数の場合、[ヤコビアン]vdpStateJacobianFcn に指定します。Simulink Function (Simulink) ブロックを使用して状態遷移関数 f を作成する場合、Simulink Function ブロックを使ってヤコビアンを作成します。MATLAB 関数 (.m ファイル) を使用して f を作成する場合、MATLAB 関数を使ってヤコビアンを作成します。

    この関数は、状態とプロセス ノイズに対する状態遷移関数の偏導関数を計算します。ヤコビ関数に対する入力数は、状態遷移関数の入力数と等しくなければならず、両方の関数において同じ順序で指定しなければなりません。ヤコビ関数の出力数は [プロセス ノイズ] パラメーターによって異なります。

    • [プロセス ノイズ][加法性] — この関数は状態に関する状態遷移関数 f の偏導関数 (f/x) を計算します。出力は Ns 行 Ns 列のヤコビ行列です。ここで Ns は状態の数です。

      加法性のプロセス ノイズに対するヤコビ関数の例を確認するには、コマンド ラインで edit vdpStateJacobianFcn を入力します。

    • [プロセス ノイズ][非加法性] — この関数は、プロセス ノイズ項に関する状態遷移関数 f の偏導関数 (f/w) である 2 番目の出力も返さなければなりません。2 番目の出力は Ns 行 W 列の行列として返されます。ここで W は状態遷移関数のプロセス ノイズ項の数です。

プログラムでの使用

ブロック パラメーター: HasStateTransitionJacobianFcn
型: 文字ベクトル
値: 'off''on'
既定: 'off'
ブロック パラメーター: StateTransitionJacobianFcn
型: 文字ベクトル、string
既定: ''

プロセス ノイズ特性。次のいずれかの値として指定されます。

  • 加法性 — プロセス ノイズ w は加法性であり、[関数] に指定する状態遷移関数 f は次の形式を取ります。

    x(k+1) = f(x(k),Us1(k),...,Usn(k)),

    ここで x(k) は時間 k での推定状態であり、Us1,...,Usn は状態遷移関数で要求された任意の追加入力引数です。

  • 非加法性 — プロセス ノイズは非加法性であり、状態遷移関数は前のタイム ステップで状態 "および" プロセス ノイズの関数として状態が変化する方法を指定します。

    x(k+1) = f(x(k),w(k),Us1(k),...,Usn(k)).

プログラムでの使用

ブロック パラメーター: HasAdditiveProcessNoise
型: 文字ベクトル
値: 'Additive''Nonadditive'
既定: 'Additive'

時不変プロセス ノイズ共分散。[プロセス ノイズ] パラメーターの値に応じて、スカラー、ベクトルまたは行列として指定します。

  • [プロセス ノイズ][加法性] — 共分散をスカラー、Ns 要素のベクトル、または Ns 行 Ns 列の行列として指定します。ここで Ns はシステムの状態の数です。プロセス ノイズ項の間に相互相関がなく、すべての項が同じ分散をもつ場合は、スカラーを指定します。プロセス ノイズ項の間に相互相関がなく、すべての項が異なる分散をもつ場合、長さ Ns のベクトルを指定します。

  • [プロセス ノイズ][非加法性] — 共分散を W 行 W 列の行列として指定します。ここで W はプロセス ノイズ項の数です。

プロセス ノイズ共分散が時変の場合、[時変] を選択します。ブロックは、時変共分散を指定する入力端子 [Q] を生成します。

依存関係

このパラメーターは、プロセス ノイズを [時変] として指定しない場合に有効になります。

プログラムでの使用

ブロック パラメーター: ProcessNoise
型: 文字ベクトル、string
既定: '1'

このパラメーターを選択すると、ブロックには、時変プロセス ノイズ共分散を指定する追加の入力端子 [Q] が含まれます。

プログラムでの使用

ブロック パラメーター: HasTimeVaryingProcessNoise
型: 文字ベクトル
値: 'off''on'
既定: 'off'
初期化

初期状態推定値。Ns 要素ベクトルとして指定します。ここで Ns はシステムの状態の数です。システムに関する知識に基づいて、初期状態値を指定します。

プログラムでの使用

ブロック パラメーター: InitialState
型: 文字ベクトル、string
既定: '0'

状態推定誤差の共分散。スカラー、Ns 要素のベクトル、または Ns 行 Ns 列の行列として指定します。ここで Ns はシステムの状態の数です。スカラーまたはベクトルを指定すると、対角線上にスカラーまたはベクトルの要素をもつ Ns 行 Ns 列の対角行列が作成されます。

[初期状態] に指定する初期状態の値に確信がもてない場合、共分散に高い値を指定します。

プログラムでの使用

ブロック パラメーター: InitialStateCovariance
型: 文字ベクトル、string
既定: '1'
測定

この測定関数は、タイム ステップ k で状態ベクトルが与えられた場合の、タイム ステップ k で非線形システムの N の要素をもつ出力測定ベクトルを計算します。測定関数を作成し、[関数] にその関数名を指定します。たとえば、vdpMeasurementFcn.m という測定関数を作成して保存した場合、[関数]vdpMeasurementFcn を指定します。

作成する関数への入力は、[測定ノイズ] で測定ノイズを加法性として指定するか、非加法性として指定するかによって異なります。

  • [測定ノイズ][加法性] — 測定関数 h は状態値の関数として測定値が変化する方法を指定します。

    y(k) = h(x(k),Um1(k),...,Umn(k)),

    ここで y(k)x(k) は時間 k で推定された出力と推定された状態であり、Um1,...,Umn は測定関数で要求されたオプションの入力引数です。たとえば、オブジェクトの追跡にセンサーを使用する場合、追加入力をセンサーの位置にすることができます。

    加法性のプロセス ノイズを使用した測定関数の例を確認するには、コマンド ラインで edit vdpMeasurementFcn を入力します。

  • [測定ノイズ][非加法性] — 測定関数は測定ノイズ v の関数として出力測定値が変化する方法も指定します。

    y(k) = h(x(k),v(k),Um1(k),...,Umn(k)).

    非加法性のプロセス ノイズを使用した測定関数の例を確認するには、コマンド ラインで edit vdpMeasurementNonAdditiveNoiseFcn を入力します。

詳細については、状態遷移関数と測定関数を参照してください。

h は Simulink Function (Simulink) ブロックを使用して作成するか、MATLAB 関数 (.m ファイル) としても作成できます。

  • MATLAB 関数を使用できるのは、h に xv 以外の追加の入力引数 Um1 が 1 つある場合のみです。

    y[k] = h(x[k],v[k],Um1(k))

    ソフトウェアは i 番目の測定関数にこの引数を指定する追加の入力端子 [MeasurementFcniInputs] を生成します。

  • Simulink Function ブロックを使用する場合、Simulink Function ブロック内で Argument Inport (Simulink) ブロックを使って xv を指定し、追加の入力 Um1,...,Umn を指定するには Inport (Simulink) ブロックを使用します。Extended Kalman Filter ブロックに Um1,...,Umn は提供しません。

システムに複数のセンサーがある場合、複数の測定関数を指定できます。[測定値の追加] ボタンを使用して最大 5 つの測定関数を指定できます。測定関数を削除するには、[測定値の削除] を使用します。

プログラムでの使用

ブロック パラメーター: MeasurementFcn1MeasurementFcn2MeasurementFcn3MeasurementFcn4MeasurementFcn5
型: 文字ベクトル、string
既定: 'myMeasurementFcn'

測定関数 h のヤコビアン。以下のいずれかとして指定します。

  • off — ヤコビアンがソフトウェアによって数値的に計算されます。この計算によって処理時間が長くなり、状態推定の数値が不正確になる場合があります。

  • on — 測定関数 h のヤコビアンを計算する関数をユーザーが作成し、[ヤコビアン] にその関数名を指定します。たとえば、vdpMeasurementJacobianFcn.m がヤコビ関数の場合、MeasurementJacobianFcnvdpMeasurementJacobianFcn として指定します。Simulink Function (Simulink) ブロックを使用して h を作成する場合、Simulink Function ブロックを使ってヤコビアンを作成します。MATLAB 関数 (.m ファイル) を使用して h を作成する場合、MATLAB 関数を使ってヤコビアンを作成します。

    この関数は、状態および測定ノイズに対して測定関数 h の偏導関数を計算します。ヤコビ関数に対する入力数は、測定関数に対する入力数と等しくなければならず、両方の関数において同じ順序で指定しなければなりません。ヤコビ関数の出力数は [測定ノイズ] パラメーターによって異なります。

    • [測定ノイズ][加法性] — 関数は状態に関する測定関数の偏導関数 (h/x) を計算します。出力は N 行 Ns 列のヤコビ行列です。ここで N はシステムの測定値の数で、Ns は状態の数です。

      加法性の測定ノイズに対するヤコビ関数の例を確認するには、コマンド ラインで edit vdpMeasurementJacobianFcn を入力します。

    • [測定ノイズ][非加法性] — 関数は測定ノイズ項に関する測定関数の偏導関数 (h/v) である 2 番目の出力も返します。2 番目の出力は N 行 V 列のヤコビ行列として返されます。ここで V は測定ノイズ項の数です。

プログラムでの使用

ブロック パラメーター: HasMeasurementJacobianFcn1HasMeasurementJacobianFcn2HasMeasurementJacobianFcn3HasMeasurementJacobianFcn4HasMeasurementJacobianFcn5
型: 文字ベクトル
値: 'off''on'
既定: 'off'
ブロック パラメーター: MeasurementJacobianFcn1MeasurementJacobianFcn2MeasurementJacobianFcn3MeasurementJacobianFcn4MeasurementJacobianFcn5
型: 文字ベクトル
既定: ''

測定ノイズ特性。次のいずれかの値として指定されます。

  • 加法性 — 測定ノイズ v は加法性であり、[関数] に指定する測定関数 h は次の形式を取ります。

    y(k) = h(x(k),Um1(k),...,Umn(k)),

    ここで y(k)x(k) は時間 k で推定された出力と推定された状態であり、Um1,...,Umn は測定関数で要求されたオプションの入力引数です。

  • 非加法性 — 測定ノイズは非加法性であり、測定関数は状態 "および" 測定ノイズの関数として出力測定値が変化する方法を指定します。

    y(k) = h(x(k),v(k),Um1(k),...,Umn(k)).

プログラムでの使用

ブロック パラメーター: HasAdditiveMeasurementNoise1HasAdditiveMeasurementNoise2HasAdditiveMeasurementNoise3HasAdditiveMeasurementNoise4HasAdditiveMeasurementNoise5
型: 文字ベクトル
値: 'Additive''Nonadditive'
既定: 'Additive'

このパラメーターを選択すると、測定値のラップが有効になり、モデルの状態に依存しない循環測定がある場合に状態が推定されます。このパラメーターを選択する場合、指定する測定関数に次の 2 つの出力が含まれていなければなりません。

  1. タイム ステップ "k" の状態ベクトルが与えられた場合の測定値。タイム ステップ "k" における非線形システムの "N" 要素の出力測定ベクトルとして指定します。"N" はシステムの測定値の数です。

  2. 測定値のラップの範囲。"N"2 列の行列として指定します。1 列目に最小測定範囲、2 列目に最大測定範囲を指定します。

[測定値がラップされている] チェック ボックスをオンにすると、定義した範囲内で測定残差がラップされ、正しくない測定残差の値によるフィルターの発散を防ぐのに役立ちます。例については、拡張カルマン フィルターを使用したラップされた測定値による状態推定を参照してください。

プログラムでの使用

ブロック パラメーター: HasMeasurementWrapping1HasMeasurementWrapping2HasMeasurementWrapping3HasMeasurementWrapping4HasMeasurementWrapping5
型: 文字ベクトル
値: 'off''on'
既定: 'off'

時不変プロセス ノイズ共分散。[プロセス ノイズ] パラメーターの値に応じて、スカラー、ベクトルまたは行列として指定します。

  • [プロセス ノイズ][加法性] — 共分散をスカラー、Ns 要素のベクトル、または Ns 行 Ns 列の行列として指定します。ここで Ns はシステムの状態の数です。プロセス ノイズ項の間に相互相関がなく、すべての項が同じ分散をもつ場合は、スカラーを指定します。プロセス ノイズ項の間に相互相関がなく、すべての項が異なる分散をもつ場合、長さ Ns のベクトルを指定します。

  • [プロセス ノイズ][非加法性] — 共分散を W 行 W 列の行列として指定します。ここで W はプロセス ノイズ項の数です。

プロセス ノイズ共分散が時変の場合、[時変] を選択します。ブロックは、時変共分散を指定する入力端子 [Q] を生成します。

依存関係

このパラメーターは、プロセス ノイズを [時変] として指定しない場合に有効になります。

プログラムでの使用

ブロック パラメーター: ProcessNoise
型: 文字ベクトル、string
既定: '1'

最初の測定関数の測定ノイズ共分散にこのパラメーターを選択すると、ブロックに追加の入力端子 [R1] が含まれます。[R1] には時変測定ノイズ共分散を指定します。同様に、ith の測定関数に [時変] を選択すると、ブロックにはその関数の時変測定ノイズ共分散を指定する追加の入力端子 [Ri] が含まれます。

プログラムでの使用

ブロック パラメーター: HasTimeVaryingMeasurementNoise1HasTimeVaryingMeasurementNoise2HasTimeVaryingMeasurementNoise3HasTimeVaryingMeasurementNoise4HasTimeVaryingMeasurementNoise5
型: 文字ベクトル
値: 'off''on'
既定: 'off'

最初の測定関数に対応する端子 [y1] において、測定された出力データをすべての時間点で使用できないと仮定します。[イネーブル端子の追加] を選択して、入力端子 [Enable1] を生成します。この端子で信号を使用して、測定データが利用できる場合にのみ推定状態の補正をイネーブルにします。同様に、ith 測定関数の端子 [yi] において、測定出力データがすべての時間点で利用できない場合には、対応する [イネーブル端子の追加] を選択します。

プログラムでの使用

ブロック パラメーター: HasMeasurementEnablePort1HasMeasurementEnablePort2HasMeasurementEnablePort3HasMeasurementEnablePort4HasMeasurementEnablePort5
型: 文字ベクトル
値: 'off''on'
既定: 'off'
設定

このパラメーターを選択すると、ブロックは、時間 k までに測定された出力を使って推定された、タイム ステップ k での修正された状態推定 x^[k|k] を出力します。このパラメーターをオフにすると、ブロックは、前の時間 k-1 までに測定された出力を使って推定された、時間 k の予測された状態推定 x^[k|k1] を返します。フィルターがフィードバック ループにあり Simulink モデルに代数ループがある場合は、このパラメーターをクリアします。

プログラムでの使用

ブロック パラメーター: UseCurrentEstimator
型: 文字ベクトル
値: 'off''on'
既定: 'on'

このパラメーターを選択すると、状態推定誤差の共分散の出力端子 [P] がブロックに生成されます。

プログラムでの使用

ブロック パラメーター: OutputStateCovariance
型: 文字ベクトル
値: 'off''on'
既定: 'off'

このパラメーターはすべてのブロック パラメーターのデータ型の指定に使用します。

プログラムでの使用

ブロック パラメーター: DataType
型: 文字ベクトル
値: 'single''double'
既定: 'double'

ブロックのサンプル時間。正のスカラーとして指定します。状態遷移関数と測定関数のサンプル時間が異なる場合、代わりに [マルチレート] タブで [マルチレート処理を有効にする] を選択し、[マルチレート] タブでサンプル時間を指定します。

依存関係

このパラメーターは、[マルチレート] タブの [マルチレート処理を有効にする] パラメーターが off である場合に使用できます。

プログラムでの使用

ブロック パラメーター: SampleTime
型: 文字ベクトル、string
既定: '1'

[マルチレート] タブ

状態遷移関数と測定関数のサンプル時間が異なる場合はこのパラメーターを選択します。サンプル時間は [マルチレート] タブの [サンプル時間] で指定します。

プログラムでの使用

ブロック パラメーター: EnableMultirate
型: 文字ベクトル
値: 'off''on'
既定: 'off'

状態遷移関数と測定関数のサンプル時間が異なる場合、[サンプル時間] を指定します。測定関数のサンプル時間は、状態遷移のサンプル時間の正の整数倍で指定します。指定するサンプル時間は次の入力端子に対応します。

  • 状態遷移関数に対応する端子 — 状態遷移関数の追加の入力 [StateTransitionFcnInputs] および時変プロセス ノイズ共分散 [Q]。これらの端子のサンプル時間は常に状態遷移関数のサンプル時間に等しくなければなりませんが、測定関数のサンプル時間と異なっても構いません。

  • ith 測定関数に対応する端子 — 測定された出力 [yi]、測定関数への追加の入力 [MeasurementFcniInputs]、端子 [Enablei] でのイネーブル信号、および時変測定ノイズ共分散 [Ri]。同じ測定関数におけるこれらの端子のサンプル時間は常に同じでなければなりませんが、状態遷移関数および他の測定関数のサンプル時間と異なっても構いません。

依存関係

このパラメーターは、[マルチレート] タブの [マルチレート処理を有効にする] パラメーターが on である場合に使用できます。

プログラムでの使用

ブロック パラメーター: StateTransitionFcnSampleTimeMeasurementFcn1SampleTime1MeasurementFcn1SampleTime2MeasurementFcn1SampleTime3MeasurementFcn1SampleTime4MeasurementFcn1SampleTime5
型: 文字ベクトル、string
既定: '1'

詳細

すべて展開する

拡張機能

バージョン履歴

R2017a で導入

すべて展開する