Particle Filter
粒子フィルターを使用した離散時間非線形システムの状態の推定

ライブラリ:
Control System Toolbox /
State Estimation
System Identification Toolbox /
Estimators
説明
Particle Filter ブロックは、離散時間粒子フィルター アルゴリズムを使用して離散時間の非線形システムの状態を推定します。
状態 x、入力 u、出力 m、プロセス ノイズ w および測定値 y をもつプラントについて考えます。プラントを非線形システムとして表現できると仮定します。
アルゴリズムは、指定した状態遷移関数と測定尤度関数を使用して非線形システムの状態推定 を計算します。
システムの非線形の状態遷移関数と測定尤度関数を作成し、これらの関数をブロックで指定します。このブロックは、異なるサンプリング レートで動作する複数のセンサーをもつシステムの状態推定をサポートします。それぞれがシステムの 1 つのセンサーに対応する測定尤度関数を最大 5 つ指定できます。
例
端子
入力
y1,y2,y3,y4,y5 — 測定されたシステム出力
ベクトル
ブロックで指定した各測定尤度関数に対応する、測定されたシステム出力。端子の個数は、システム内の測定尤度関数の個数に等しくなります。最大 5 つの測定尤度関数を指定できます。たとえば、システムに 2 つのセンサーがある場合、ブロックに 2 つの測定尤度関数を指定します。最初の端子 [y1] は既定で利用可能です。[測定値の追加] をクリックし、2 番目の測定尤度関数に対応する端子 y2 を生成します。
端子は N 次元のベクトルとして指定します。ここで N は、対応するセンサーで測定される数量の数です。たとえば、システムにオブジェクトの位置と速度を測定するセンサーが 1 つある場合、端子は [y1] の 1 つだけです。この端子は、位置と速度に対応する値をもつ 2 次元ベクトルとして指定されます。
依存関係
最初の端子 [y1] は既定で利用可能です。[y2] ~ [y5] の端子は、[測定値の追加] をクリックすると生成されます。
StateTransitionFcnInputs — 状態遷移関数へのオプションの入力引数
スカラー | ベクトル | 行列
状態遷移関数 f
に渡される、状態 x
以外のオプションの入力引数。
MATLAB® 関数 (.m
ファイル) を使用して f
を作成する場合、関数の名前を入力して [適用] をクリックすると、ソフトウェアによって端子 [StateTransitionFcnInputs] が生成されます。
状態遷移関数が複数の追加の入力をもつ場合、Simulink Function (Simulink) ブロックを使用して関数を指定します。Simulink Function ブロックを使用する際、追加の入力は Inport (Simulink) ブロックを使って Simulink Function ブロックに直接提供します。Particle Filter ブロック内に追加の入力用の入力端子は生成されません。
依存関係
この端子は次の両方の条件が満たされる場合にのみ生成されます。
MATLAB 関数を使用して [関数] に
f
を指定しており、f
が MATLAB パス上にある場合。f
で粒子以外に必要とされる追加の入力引数が 1 つだけの場合。
MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputs — 各測定尤度関数へのオプションの入力引数
スカラー | ベクトル | 行列
測定尤度関数に渡される、状態 x
と測定値 y
以外のオプションの入力。
[MeasurementLikelihoodFcn1Inputs] は指定した最初の測定尤度関数に対応し、それ以降も同様です。
[関数] で MATLAB 関数 (.m
ファイル) を使用して 2 つの測定入力を指定する場合、[適用] をクリックすると、ソフトウェアは [MeasurementLikelihoodFcn1Inputs] と [MeasurementLikelihoodFcn2Inputs] の端子を生成します。これらの端子への入力はスカラー、ベクトル、または行列として指定できます。
測定尤度関数が複数の追加の入力をもつ場合、Simulink Function (Simulink) ブロックを使用して関数を指定します。Simulink Function ブロックを使用する際、追加の入力は Inport (Simulink) ブロックを使って Simulink Function ブロックに直接提供します。Particle Filter ブロック内に追加の入力用の入力端子は生成されません。
依存関係
測定尤度関数 h
に対応する端子は、次の両方の条件が満たされる場合にのみ生成されます。
MATLAB 関数を使用して [関数] に測定入力
h
を指定しており、h
が MATLAB パス上にある場合。粒子と測定値以外に、
h
で必要とされる追加の入力引数が 1 つだけの場合。
Enable1,Enable2,Enable3,Enable4,Enable5 — 測定データが利用可能な場合に推定状態の補正を有効にする
スカラー
測定データが利用可能な場合に推定状態の補正を有効にします。
たとえば、最初の測定尤度関数に対応する端子 [y1] において、測定された出力データをすべての時間点で使用できない場合を考えます。その場合、[Enable1] 端子で 0
以外の信号値を使用して、測定データが利用可能な場合に推定状態の補正をイネーブルにします。測定データが利用できない場合は端子値を 0
に指定します。同様に、ith の測定尤度関数で、端子 [yi
] のすべての時間点で測定された出力データを利用できない場合、対応する端子 [Enablei
] を 0
以外の値に指定します。
依存関係
測定尤度関数に [イネーブル端子の追加] を選択すると、その測定尤度関数に対応する端子が生成されます。[適用] をクリックすると端子が表示されます。
出力
xhat — 推定された状態
ベクトル
推定された状態。サイズが Ns のベクトルとして返されます。ここで Ns はシステムの状態の数です。個々の状態にアクセスするには、Selector (Simulink) ブロックを使用します。
[現在の測定値を使用して状態推定値を改善] パラメーターが選択されている場合、ブロックは、時間 k
までに測定された出力を使って推定された、タイム ステップ k
での修正された状態推定 を出力します。このパラメーターをオフにすると、ブロックは、前の時間 k-1
までに測定された出力を使って推定された、時間 k
の予測された状態推定 を返します。フィルターがフィードバック ループにあり Simulink® モデルに代数ループがある場合は、このパラメーターをクリアします。
P — 状態推定誤差の共分散
行列
状態推定誤差の共分散。Ns 行 Ns 列の行列として返されます。ここで Ns はシステムの状態の数です。個々の共分散にアクセスするには、Selector (Simulink) ブロックを使用します。
誤差共分散を出力できるのは、[ブロック出力、マルチレート] タブで [状態推定誤差の共分散の出力] を選択して [適用] をクリックした場合のみです。
依存関係
このパラメーターは、[ブロック出力、マルチレート] タブの [状態推定法] パラメーターが 'Mean'
に設定されている場合に使用できます。
Particles — 状態の推定に使用される粒子値
配列
状態の推定に使用される粒子値。Ns 行 Np 列または Np 行 Ns 列の配列として指定します。Ns はシステムの状態の数、Np は粒子の数です。
StateOrientation
パラメーターを'column'
として指定した場合、[粒子] は Ns 行 Np 列の配列として返されます。StateOrientation
パラメーターを'row'
として指定した場合、[粒子] は Np 行 Ns 列の配列として返されます。
依存関係
この端子は、[ブロック出力、マルチレート] タブで [すべての粒子を出力] を選択して [適用] をクリックした場合に生成されます。
Weights — 状態の推定に使用される粒子の重み
ベクトル
状態の推定に使用される粒子の重み。1 行 Np 列または Np 行 1 列のベクトルとして返されます。ここで Np は状態の推定に使用される粒子の数です。
StateOrientation
パラメーターを'column'
として指定した場合、[重み] は 1 行 Np 列のベクトルとして返されます。ここで各重みは配列Particles
内の同じ列にある粒子に関連付けられています。StateOrientation
パラメーターを'row'
として指定した場合、[重み] は Np 行 1 列のベクトルとして返されます。ここで各重みは配列Particles
内の同じ行にある粒子に関連付けられています。
依存関係
この端子は、[ブロック出力、マルチレート] タブで [重みを出力] を選択して [適用] をクリックした場合に生成されます。
パラメーター
[システム モデル] タブ
状態遷移関数 — 状態遷移関数名
'vdpParticleFilterStateFcn'
(既定値) | 関数名
粒子フィルターの状態遷移関数は、システムとプロセス ノイズのダイナミクスに基づいて、タイム ステップ k における粒子が与えられた場合のタイム ステップ k+1 における粒子を計算します。この関数の構文は次のとおりです。
particlesNext = f(particles, param1, param2, ...)
ここで、particles と particlesNext の次元は、[状態の向き] を 'column'
に指定した場合は Ns 行 Np 列、[状態の向き] を 'row'
に指定した場合は Np 行 Ns 列になります。また、param_i
は指定できるオプションの入力引数を表します。オプションの入力引数の詳細については、StateTransitionFcnInputs, StateTransitionFcnInputsStateTransitionFcnInputsStateTransitionFcnInputsを参照してください。
状態遷移関数を作成し、[関数] にその関数名を指定します。たとえば、vdpParticleFilterStateFcn.m
という状態遷移関数を作成して保存した場合、[関数] に 'vdpParticleFilterStateFcn'
を指定します。
[関数] は Simulink Function (Simulink) ブロックを使用して作成するか、MATLAB 関数 (.m
ファイル) として作成できます。
プログラムでの使用
ブロック パラメーター: StateTransitionFcn |
型: 文字ベクトル、string |
既定: 'vdpParticleFilterStateFcn' |
粒子数 — フィルターで使用される粒子の数
1000 (既定値) | 正のスカラー整数
フィルターで使用される粒子の数。正のスカラー整数として指定します。各粒子がシステム内の 1 つの状態仮説を表します。粒子の数が多いほど状態推定の精度が高くなりますが、フィルターの実行に必要な計算処理も増大します。
プログラムでの使用
ブロック パラメーター: NumberOfParticles |
型: 正のスカラー整数 |
既定: 1000 |
分布 — 粒子の初期分布
'Gaussian'
(既定値) | 'Uniform'
| 'Custom'
粒子の初期分布。'Gaussian'
、'Uniform'
または 'Custom'
として指定します。
'Gaussian'
を選択すると、粒子つまり状態仮説の初期セットは、ユーザーが指定する [平均] と [共分散] をもつ多変量ガウス分布に従います。すべての粒子の初期の重みは等しいと仮定されます。
'Uniform'
を選択すると、粒子の初期セットは、ユーザーが指定する [状態の範囲] の上限と下限をもつ一様分布に従います。すべての粒子の初期の重みは等しいと仮定されます。
'Custom'
では、初期の粒子とその重みの独自のセットを指定できます。[粒子] と [重み] に任意の確率分布を使用してフィルターを初期化することができます。
プログラムでの使用
ブロック パラメーター: InitialDistribution |
型: 文字ベクトル |
値: 'Gaussian' 、'Uniform' 、'Custom' |
既定: 'Gaussian' |
平均 — 粒子の初期平均値
[0;0] (既定値) | ベクトル
粒子の初期平均値。ベクトルとして指定します。ベクトルの長さは推定する状態の数によって決まります。
依存関係
このパラメーターは、[システム モデル] タブの [分布] パラメーターが Gaussian
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: InitialMean |
型: 配列 |
既定: [0,0] |
共分散 — 粒子の初期の共分散
1 (既定値) | スカラー | ベクトル | 行列
粒子の初期の共分散。スカラー、ベクトルまたは行列として指定します。
[共分散] は次のように指定します。
スカラーの場合、正でなければなりません。共分散は、対角方向にこのスカラーをもつ [Ns Ns] 行列であると仮定されます。ここで、Ns は状態の数です。
ベクトルの場合、各要素が正でなければなりません。共分散は、対角方向にベクトルの要素をもつ [Ns Ns] 行列であると仮定されます。
行列の場合、半正定値でなければなりません。
依存関係
このパラメーターは、[システム モデル] タブの [分布] パラメーターが Gaussian
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: InitialCovariance |
型: スカラー、ベクトルまたは行列 |
既定: 1 |
循環変数 — 状態の推定に使用される循環変数
0 (既定値) | スカラー | ベクトル
状態の推定に使用される循環変数。スカラー、または Ns 要素のベクトルとして指定します。ここで Ns は状態の数です。
[循環変数] をスカラーとして指定した場合、ソフトウェアはこれを各要素がこのスカラーに等しいベクトルに拡張します。循環 (または角) 分布は範囲が [-π
π
] の確率密度関数を使用します。循環変数は、システム内のいくつかの状態がオブジェクトの方向などの角度の数量を表す場合に使用します。
プログラムでの使用
ブロック パラメーター: CircularVariables |
型: スカラー、ベクトル |
既定: 0 |
状態の向き — 入力システムの状態の方向
'column'
(既定値) | 'row'
システムの状態の方向。'column'
または 'row'
として指定します。
[状態の向き] は次のように指定します。
'column'
の場合、状態遷移および測定尤度関数への最初の入力引数は [Ns Np] です。この場合、この行列の ith 列が ith 粒子 (状態仮説) になります。また、状態推定値 xhat が [Ns 1] ベクトルとして出力されます。ここで、Ns は状態の数、Np は粒子の数です。'row'
の場合、状態遷移および測定尤度関数への最初の入力引数は [Np Ns] で、この行列の各行に粒子が含まれます。また、状態推定値 xhat が [1 Ns] ベクトルとして出力されます。
プログラムでの使用
ブロック パラメーター: StateOrientation |
型: 文字ベクトル |
値: 'column' 、'row' |
既定: 'column' |
状態の範囲 — システムの状態の初期範囲
[-3 3;-3 3] (既定値) | 配列
システムの状態の初期範囲。Ns 行 2 列の配列として指定します。ここで Ns は状態の数です。
ith 番目の行は、ith 番目の状態の粒子の初期分布に対する一様分布の下限と上限を示しています。
依存関係
このパラメーターは、[システム モデル] タブの [分布] パラメーターが Uniform
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: InitialStateBounds |
型: 配列 |
既定: [-3 3;-3 3] |
粒子 — 状態の推定のためのカスタム粒子分布
[] (既定値) | 配列
状態の推定のためのカスタム粒子分布。Ns 行 Np 列または Np 行 Ns 列の配列として指定します。Ns はシステムの状態の数、Np は粒子の数です。
StateOrientation
パラメーターを'column'
として指定した場合、[粒子] は Ns 行 Np 列の配列になります。StateOrientation
パラメーターを'row'
として指定した場合、[粒子] は Np 行 Ns 列の配列になります。
依存関係
このパラメーターは、[システム モデル] タブの [分布] パラメーターが Custom
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: InitialParticles |
型: 配列 |
既定: [] |
重み — 状態推定のためのカスタムの粒子重み値
[] (既定値) | 正のベクトル
状態推定のためのカスタムの粒子重み値。1 行 Np 列または Np 行 1 列の正のベクトルとして指定します。ここで Np は状態の推定に使用される粒子の数です。
StateOrientation
パラメーターを'column'
として指定した場合、[重み] は 1 行 Np 列のベクトルになります。ベクトル内の各重みは配列Particles
内の同じ列にある粒子に関連付けられています。StateOrientation
パラメーターを'row'
として指定した場合、[重み] は Np 行 1 列のベクトルになります。ベクトル内の各重みは配列Particles
内の同じ行にある粒子に関連付けられています。
依存関係
このパラメーターは、[システム モデル] タブの [分布] パラメーターが Custom
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: InitialWeights |
型: 正のベクトル |
既定: [] |
関数 — 測定尤度関数の名前
'vdpMeasurementLikelihoodFcn'
(既定値) | 関数名
測定尤度関数は、センサー測定値を使用して粒子 (状態仮説) の尤度を計算します。各状態仮説 (粒子) に対して、関数はまず Nm 要素の測定仮説ベクトルを計算します。次に、センサー測定値および測定ノイズの確率分布に基づいて各測定仮説の尤度が計算されます。この関数の構文は次のとおりです。
likelihood = h(particles, measurement, param1, param2, ...)
'column'
に指定した場合は Ns 行 Np 列、[状態の向き] を 'row'
に指定した場合は Np 行 Ns 列になります。measurement は Nm 要素のベクトルで、Nm はセンサーが提供する測定値の数です。param_i は、指定できるオプションの入力引数を表します。オプションの入力引数の詳細については、MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputs, MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5InputsMeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5InputsMeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputsを参照してください。
測定尤度関数を作成し、[関数] にその関数名を指定します。たとえば、vdpMeasurementLikelihoodFcn.m
という測定尤度関数を作成して保存した場合、[関数] に 'vdpMeasurementLikelihoodFcn'
を指定します。
[関数] は Simulink Function (Simulink) ブロックを使用して作成するか、MATLAB 関数 (.m
ファイル) として作成できます。
MATLAB 関数を使用できるのは、h に、[粒子] と [測定値] 以外の追加の入力引数
param_i
が 0 個か 1 個ある場合のみです。ith 番目の測定尤度関数にこの引数を指定して [適用] をクリックすると、ソフトウェアが追加の入力端子 [MeasurementLikelihoodFcn
i
Inputs] を生成します。Simulink Function ブロックを使用する場合、Simulink Function ブロック内で Argument Inport (Simulink) ブロックを使って
x
とy
を指定し、追加の入力param_i
を指定するには Inport (Simulink) ブロックを使用します。Particle Filter ブロックにparam_i
は提供しません。
システムに複数のセンサーがある場合、複数の測定尤度関数を指定できます。[測定値の追加] ボタンを使用して最大 5 つの測定尤度関数を指定できます。測定尤度関数を削除するには、[測定値の削除] を使用します。
プログラムでの使用
ブロック パラメーター: MeasurementLikelihoodFcn1 、MeasurementLikelihoodFcn2 、MeasurementLikelihoodFcn3 、MeasurementLikelihoodFcn4 、MeasurementLikelihoodFcn5 |
型: 文字ベクトル、string |
既定: 'vdpMeasurementLikelihoodFcn' |
イネーブル端子の追加 — 測定データが利用できる場合のみ推定状態の補正を有効にする
off
(既定値) | on
最初の測定尤度関数に対応する端子 [y1] において、測定された出力データをすべての時間点で使用できないと仮定します。入力端子 [Enable1] を生成するには、[イネーブル端子の追加] を選択します。この端子で信号を使用して、測定データが利用できる場合にのみ推定状態の補正をイネーブルにします。同様に、ith 測定尤度関数の端子 [yi
] において、測定出力データがすべての時間点で利用できない場合には、対応する [イネーブル端子の追加] を選択します。
プログラムでの使用
ブロック パラメーター: HasMeasurementEnablePort1 、HasMeasurementEnablePort2 、HasMeasurementEnablePort3 、HasMeasurementEnablePort4 、HasMeasurementEnablePort5 |
型: 文字ベクトル |
値: 'off' 、'on' |
既定: 'off' |
リサンプリング法 — 粒子のリサンプリングに使用される手法
'Multinomial'
(既定値) | 'Systemic'
| 'Stratified'
粒子のリサンプリングに使用される手法。次のいずれかとして指定します。
'Multinomial'
— 多項リサンプリング (簡易無作為抽出とも呼ばれる) は、開区間(0,1)
で一様分布とは別にN
個の乱数を生成し、それらを使用して重みに比例した粒子を選択します。'Stratified'
— 層化リサンプリングは、粒子の母集団全体を階層と呼ばれる部分集合に分割します。(0,1)
区間を、サイズが1/N
のN
個の重ならない部分区間に事前分割します。これらの各部分区間と階層で選択されたサンプルのインデックスとは別に乱数が取得されます。'Systematic'
— 体系的リサンプリングも階層を使用するという点で、層化リサンプリングと似ています。1 つの違いは、開区間(0,1/N)
から 1 つの乱数のみを取得し、残りのサンプル点は固定1/N
ステップ サイズで確定的に計算される点です。
プログラムでの使用
ブロック パラメーター: ResamplingMethod |
型: 文字ベクトル |
値: 'Multinomial' 、'Systemic' 、'Stratified' |
既定: 'Multinomial' |
トリガー法 — リサンプリングが発生するタイミングを決定する手法
'Ratio'
(既定値) | 'Interval'
リサンプリングが発生するタイミングを決定する手法。'Ratio'
または 'Interval'
として指定します。'Ratio'
の値を指定すると、合計有効粒子の比率に基づいてリサンプリングをトリガーします。'Interval'
の値を指定すると、粒子フィルター動作の一定のタイム ステップ間隔でリサンプリングをトリガーします。
プログラムでの使用
ブロック パラメーター: TriggerMethod |
型: 文字ベクトル |
値: 'Ratio' 、'Interval' |
既定: 'Ratio' |
最小有効粒子比率 — 合計粒子数に対する有効粒子数の最小目標比率
0.5 (既定値) | 正のスカラー
合計粒子数に対する有効粒子数の最小目標比率。正のスカラーとして指定します。有効粒子数は、現在の粒子セットが事後分布をどれだけよく近似しているかを示す尺度です。有効粒子比率が低い場合、推定に寄与している粒子の数が少なく、リサンプリングが必要であることを意味します。
合計粒子数に対する有効粒子数の比率が最小有効粒子比率より低い場合、リサンプリング ステップがトリガーされます。
最小有効粒子比率を 0 ~ 1 の任意の値として指定します。
依存関係
このパラメーターは、[システム モデル] タブの [トリガー法] パラメーターが Ratio
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: MinEffectiveParticleRatio |
型: スカラー |
値: 範囲 [0,1] |
既定: 0.5 |
サンプリング間隔 — リサンプリング間の固定間隔
1 (既定値) | 正のスカラー整数
リサンプリング間の固定間隔。正のスカラー整数として指定します。サンプリング間隔により、どの修正ステップでリサンプリングが実行されるかが決まります。たとえば、2 の値を指定すると、修正ステップ 1 つおきにリサンプリングが実行されます。inf
の値を指定すると、リサンプリングが実行されることはありません。
依存関係
このパラメーターは、[システム モデル] タブの [トリガー法] パラメーターが Interval
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: SamplingInterval |
型: 正のスカラー整数 |
既定: 1 |
ランダム性 — 乱数が繰り返し可能かどうか
'Repeatable'
(既定値) | 'Not repeatable'
乱数が繰り返し可能かどうか。'Repeatable'
または 'Not repeatable'
として指定します。同じ結果を複数回生成できるようにするには、[ランダム性] を 'Repeatable'
に設定し、[シード] に同じ乱数発生器のシード値を指定します。
プログラムでの使用
ブロック パラメーター: Randomness |
型: 文字ベクトル |
値: 'Repeatable' 、'Not repeatable' |
既定: 'Repeatable' |
シード — 繰り返し可能な乱数のシード値
0 (既定値) | スカラー
繰り返し可能な乱数のシード値。スカラーとして指定します。
依存関係
このパラメーターは、[システム モデル] タブの [ランダム性] パラメーターが 'Repeatable'
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: Seed |
型: スカラー |
既定: 0 |
データ型 — ブロック パラメーターのデータ型
double
(既定値) | single
このパラメーターはすべてのブロック パラメーターのデータ型の指定に使用します。
プログラムでの使用
ブロック パラメーター: DataType |
型: 文字ベクトル |
値: 'single' 、'double' |
既定: 'double' |
サンプル時間 — ブロックのサンプル時間
1
(既定値) | 正のスカラー
ブロックのサンプル時間。正のスカラーとして指定します。
[サンプル時間] パラメーターは、状態遷移およびすべての測定尤度関数が同じサンプル時間をもつ場合に使用します。それ以外の場合は [マルチレート] タブで [マルチレート処理を有効にする] オプションを選択し、同じタブでサンプル時間を指定します。
依存関係
このパラメーターは、[ブロック出力、マルチレート] タブの [マルチレート処理を有効にする] パラメーターが off
である場合に使用できます。
プログラムでの使用
ブロック パラメーター: SampleTime |
型: 文字ベクトル、string |
既定: '1' |
[ブロック出力、マルチレート] タブ
出力状態推定法 — 粒子から状態推定値を抽出するのに使用される手法
'Mean'
(既定値) | 'MaxWeight'
| 'None'
粒子から状態推定値を抽出するのに使用される手法。次のいずれかとして指定します。
'Mean'
— Particle Filter ブロックは [重み] と [粒子] パラメーターに基づいて、粒子の加重平均を状態推定値として出力します。'Maxweight'
— Particle Filter ブロックは重みが最も大きい粒子を状態推定値として出力します。'None'
— このオプションは、[ブロック出力、マルチレート] タブの [すべての粒子を出力] パラメーターを使用してすべての粒子にアクセスすることにより、カスタムの状態推定法を実装するために使用します。
プログラムでの使用
ブロック パラメーター: StateEstimationMethod |
型: 文字ベクトル、string |
値: 'Mean' 、'MaxWeight' 、'None' |
既定: 'Mean' |
すべての粒子を出力 — すべての粒子を出力
'off'
(既定値) | 'on'
このパラメーターを選択すると、推定に使用される粒子の出力端子 [粒子] がブロックに生成されます。
StateOrientation
パラメーターを'column'
として指定した場合、粒子は Ns 行 Np 列の配列として出力されます。Ns はシステムの状態の数、Np は粒子の数です。StateOrientation
パラメーターを'row'
として指定した場合、粒子は Np 行 Ns 列の配列として出力されます。
プログラムでの使用
ブロック パラメーター: OutputParticles |
型: 文字ベクトル |
値: 'off' 、'on' |
既定: 'off' |
重みを出力 — 粒子の重みの出力
'off'
(既定値) | 'on'
このパラメーターを選択すると、推定に使用される粒子の重みの出力端子 [重み] がブロックに生成されます。
StateOrientation
パラメーターを'column'
として指定した場合、粒子の重みは 1 行 Np 列のベクトルとして出力されます。ここで、各重みは配列Particles
内の同じ列にある粒子に関連付けられています。Np は状態推定に使用される粒子の数です。StateOrientation
パラメーターを'row'
として指定した場合、粒子の重みは Np 行 1 列のベクトルとして出力されます。
プログラムでの使用
ブロック パラメーター: OutputWeights |
型: 文字ベクトル |
値: 'off' 、'on' |
既定: 'off' |
状態推定誤差の共分散の出力 — 状態推定誤差の共分散の出力
'off'
(既定値) | 'on'
このパラメーターを選択すると、状態推定誤差の共分散の出力端子 [P] がブロックに生成されます。
依存関係
このパラメーターは、[ブロック出力、マルチレート] タブの [状態推定法] パラメーターが 'Mean'
に設定されている場合に使用できます。
プログラムでの使用
ブロック パラメーター: OutputStateCovariance |
型: 文字ベクトル |
値: 'off' 、'on' |
既定: 'off' |
現在の測定値を使用して状態推定値を改善 — 状態推定に現在の測定値を使用するオプション
'on'
(既定値) | 'off'
このパラメーターを選択すると、ブロックは、時間 k
までに測定された出力を使って推定された、タイム ステップ k
での修正された状態推定 を出力します。このパラメーターをオフにすると、ブロックは、前の時間 k-1
までに測定された出力を使って推定された、時間 k
の予測された状態推定 を返します。フィルターがフィードバック ループにあり Simulink モデルに代数ループがある場合は、このパラメーターをクリアします。
プログラムでの使用
ブロック パラメーター: UseCurrentEstimator |
型: 文字ベクトル |
値: 'on' 、'off' |
既定: 'on' |
マルチレート処理を有効にする — 状態遷移関数と測定尤度関数への異なるサンプル時間の指定を有効にする
'off'
(既定値) | 'on'
状態遷移関数またはいずれかの測定尤度関数のサンプル時間がその他とは異なる場合、このパラメーターを選択します。サンプル時間は [マルチレート] タブの [サンプル時間] で指定します。
プログラムでの使用
ブロック パラメーター: EnableMultirate |
型: 文字ベクトル |
値: 'off' 、'on' |
既定: 'off' |
サンプル時間 — 状態遷移関数と測定尤度関数のサンプル時間
正のスカラー
状態遷移関数と測定尤度関数のサンプル時間が異なる場合、[サンプル時間] を指定します。測定関数のサンプル時間は、状態遷移のサンプル時間の正の整数倍で指定します。指定するサンプル時間は次の入力端子に対応します。
状態遷移関数に対応する端子 — 状態遷移関数への追加の入力 [StateTransitionFcnInputs]。これらの端子のサンプル時間は、状態遷移関数のサンプル時間と常に等しくなければなりませんが、測定尤度関数のサンプル時間とは異なるものを指定できます。
ith 測定尤度関数に対応する端子 — 測定出力 [y
i
]、測定尤度関数への追加入力 [MeasurementLikelihoodFcni
Inputs]、端子でのイネーブル信号 [Enablei
]。これらの端子のサンプル時間は、同一の測定尤度関数では常に同じでなければなりませんが、状態遷移関数やその他の測定尤度関数のサンプル時間とは異なるものを指定できます。
依存関係
このパラメーターは、[ブロック出力、マルチレート] タブの [マルチレート処理を有効にする] パラメーターが on
である場合に使用できます。
プログラムでの使用
ブロック パラメーター: StateTransitionFcnSampleTime 、MeasurementLikelihoodFcn1SampleTime1 、MeasurementLikelihoodFcn1SampleTime2 、MeasurementLikelihoodFcn1SampleTime3 、MeasurementLikelihoodFcn1SampleTime4 、MeasurementLikelihoodFcn1SampleTime5 |
型: 文字ベクトル、string |
既定: '1' |
参照
[1] T. Li, M. Bolic, P.M. Djuric, "Resampling Methods for Particle Filtering: Classification, implementation, and strategies," IEEE Signal Processing Magazine, vol. 32, no. 3, pp. 70-86, May 2015.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
指定する状態遷移関数と測定尤度関数は、コード生成をサポートする MATLAB コマンドと Simulink ブロックのみを使用しなければなりません。コード生成をサポートするブロックの一覧については、コード生成をサポートする Simulink 組み込みブロック (Simulink Coder)を参照してください。コード生成をサポートするコマンドの一覧については、C/C++ コードの生成でサポートされている関数およびオブジェクト (MATLAB Coder)を参照してください。
バージョン履歴
R2018a で導入
参考
ブロック
関数
トピック
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)