Particle Filter
粒子フィルターを使用した離散時間非線形システムの状態の推定
ライブラリ:
Control System Toolbox /
State Estimation
System Identification Toolbox /
Estimators
説明
Particle Filter ブロックは、離散時間粒子フィルター アルゴリズムを使用して離散時間の非線形システムの状態を推定します。
状態 x、入力 u、出力 m、プロセス ノイズ w および測定値 y をもつプラントについて考えます。プラントを非線形システムとして表現できると仮定します。

アルゴリズムは、指定した状態遷移関数と測定尤度関数を使用して非線形システムの状態推定 を計算します。
システムの非線形の状態遷移関数と測定尤度関数を作成し、これらの関数をブロックで指定します。このブロックは、異なるサンプリング レートで動作する複数のセンサーをもつシステムの状態推定をサポートします。それぞれがシステムの 1 つのセンサーに対応する測定尤度関数を最大 5 つ指定できます。
例
Particle Filter ブロックを使用した Simulink でのパラメーターおよび状態の推定
この例では、System Identification Toolbox™ の Particle Filter ブロックを使用する方法を示します。離散時間伝達関数のパラメーター推定問題を再定式化し、状態の推定問題として再帰的に解きます。
端子
入力
ブロックで指定した各測定尤度関数に対応する、測定されたシステム出力。端子の個数は、システム内の測定尤度関数の個数に等しくなります。最大 5 つの測定尤度関数を指定できます。たとえば、システムに 2 つのセンサーがある場合、ブロックに 2 つの測定尤度関数を指定します。最初の端子 [y1] は既定で利用可能です。[測定値の追加] をクリックし、2 番目の測定尤度関数に対応する端子 y2 を生成します。
端子は N 次元のベクトルとして指定します。ここで N は、対応するセンサーで測定される数量の数です。たとえば、システムにオブジェクトの位置と速度を測定するセンサーが 1 つある場合、端子は [y1] の 1 つだけです。この端子は、位置と速度に対応する値をもつ 2 次元ベクトルとして指定されます。
依存関係
最初の端子 [y1] は既定で利用可能です。y2 ~ y5 の端子を生成するには、[測定値の追加] をクリックします。
状態遷移関数 f に渡される、状態 x 以外のオプションの入力引数。
MATLAB® 関数 (.m ファイル) を使用して f を作成する場合、関数の名前を入力して [適用] をクリックすると、ソフトウェアによって端子 [StateTransitionFcnInputs] が生成されます。
状態遷移関数が複数の追加の入力をもつ場合、Simulink Function (Simulink) ブロックを使用して関数を指定します。Simulink Function ブロックを使用する際、追加の入力は Inport (Simulink) ブロックを使って Simulink Function ブロックに直接提供します。Particle Filter ブロック内に追加の入力用の入力端子は生成されません。
依存関係
この端子を生成するには、次の両方の条件を満たしている必要があります。
MATLAB 関数を使用して [関数] に
fを指定しており、fが MATLAB パス上にある場合。fで粒子以外に必要とされる追加の入力引数が 1 つだけの場合。
測定尤度関数に渡される、状態 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 つだけの場合。
測定データが利用可能な場合に推定状態の補正を有効にします。
たとえば、最初の測定尤度関数に対応する端子 [y1] において、測定された出力データをすべての時間点で使用できない場合を考えます。その場合、[Enable1] 端子で 0 以外の信号値を使用して、測定データが利用可能な場合に推定状態の補正をイネーブルにします。測定データが利用できない場合は端子値を 0 に指定します。同様に、ith の測定尤度関数で、端子 [yi] のすべての時間点で測定された出力データを利用できない場合、対応する端子 [Enablei] を 0 以外の値に指定します。
依存関係
測定尤度関数に対応する端子を生成するには、その測定尤度関数の [イネーブル端子の追加] を選択します。[適用] をクリックすると端子が表示されます。
出力
推定された状態。サイズが Ns のベクトルとして返されます。ここで Ns はシステムの状態の数です。個々の状態にアクセスするには、Selector (Simulink) ブロックを使用します。
[現在の測定値を使用して状態推定値を改善] パラメーターが選択されている場合、ブロックは、時間 k までに測定された出力を使って推定された、タイム ステップ k での修正された状態推定 を出力します。このパラメーターをオフにすると、ブロックは、前の時間 k-1 までに測定された出力を使って推定された、時間 k の予測された状態推定 を返します。フィルターがフィードバック ループにあり Simulink® モデルに代数ループがある場合は、このパラメーターをクリアします。
状態推定誤差の共分散。Ns 行 Ns 列の行列として返されます。ここで Ns はシステムの状態の数です。個々の共分散にアクセスするには、Selector (Simulink) ブロックを使用します。
誤差共分散を出力できるのは、[ブロック出力、マルチレート] タブで [状態推定誤差の共分散の出力] を選択して [適用] をクリックした場合のみです。
依存関係
このパラメーターを有効にするには、[ブロック出力、マルチレート] タブの [状態推定法] パラメーターを 'Mean' に設定します。
状態の推定に使用される粒子値。Ns 行 Np 列または Np 行 Ns 列の配列として指定します。Ns はシステムの状態の数、Np は粒子の数です。
StateOrientationパラメーターを'column'として指定した場合、Particles は Ns 行 Np 列の配列として返されます。StateOrientationパラメーターを'row'として指定した場合、Particles は Np 行 Ns 列の配列として返されます。
依存関係
この端子を生成するには、[ブロック出力、マルチレート] タブで [すべての粒子を出力] を選択し、[適用] をクリックします。
状態の推定に使用される粒子の重み。1 行 Np 列または Np 行 1 列のベクトルとして返されます。ここで Np は状態の推定に使用される粒子の数です。
StateOrientationパラメーターを'column'として指定した場合、[重み] は 1 行 Np 列のベクトルとして返されます。ここで各重みは配列Particles内の同じ列にある粒子に関連付けられています。StateOrientationパラメーターを'row'として指定した場合、[重み] は Np 行 1 列のベクトルとして返されます。ここで各重みは配列Particles内の同じ行にある粒子に関連付けられています。
依存関係
この端子を生成するには、[ブロック出力、マルチレート] タブで [重みを出力] を選択し、[適用] をクリックします。
パラメーター
[システム モデル] タブ
状態遷移
粒子フィルターの状態遷移関数は、システムとプロセス ノイズのダイナミクスに基づいて、タイム ステップ k における粒子が与えられた場合のタイム ステップ k+1 における粒子を計算します。この関数の構文は次のとおりです。
particlesNext = f(particles, param1, param2, ...)
ここで、particles と particlesNext の次元は、[状態の向き] を 'column' に指定した場合は Ns 行 Np 列、[状態の向き] を 'row' に指定した場合は Np 行 Ns 列になります。また、param_i は指定できるオプションの入力引数を表します。オプションの入力引数の詳細については、StateTransitionFcnInputsを参照してください。
状態遷移関数を作成し、[関数] にその関数名を指定します。たとえば、vdpParticleFilterStateFcn.m という状態遷移関数を作成して保存した場合、[関数] に 'vdpParticleFilterStateFcn' を指定します。
[関数] は Simulink Function (Simulink) ブロックを使用して作成するか、MATLAB 関数 (.m ファイル) として作成できます。
プログラムでの使用
ブロック パラメーター: StateTransitionFcn |
| タイプ: 文字ベクトル、string |
既定: 'vdpParticleFilterStateFcn' |
初期化
フィルターで使用される粒子の数。正のスカラー整数として指定します。各粒子がシステム内の 1 つの状態仮説を表します。粒子の数が多いほど状態推定の精度が高くなりますが、フィルターの実行に必要な計算処理も増大します。
プログラムでの使用
ブロック パラメーター: NumberOfParticles |
| 型: 正のスカラー整数 |
既定: 1000 |
粒子の初期分布。'Gaussian'、'Uniform' または 'Custom' として指定します。
'Gaussian' を選択すると、粒子つまり状態仮説の初期セットは、ユーザーが指定する [平均] と [共分散] をもつ多変量ガウス分布に従います。すべての粒子の初期の重みは等しいと仮定されます。
'Uniform' を選択すると、粒子の初期セットは、ユーザーが指定する [状態の範囲] の上限と下限をもつ一様分布に従います。すべての粒子の初期の重みは等しいと仮定されます。
'Custom' では、初期の粒子とその重みの独自のセットを指定できます。[粒子] と [重み] に任意の確率分布を使用してフィルターを初期化することができます。
プログラムでの使用
ブロック パラメーター: InitialDistribution |
| タイプ: 文字ベクトル |
値: 'Gaussian'、'Uniform'、'Custom' |
既定: 'Gaussian' |
粒子の初期平均値。ベクトルとして指定します。ベクトルの長さは推定する状態の数によって決まります。
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [分布] パラメーターを Gaussian に設定します。
プログラムでの使用
ブロック パラメーター: InitialMean |
| 型: 配列 |
既定: [0,0] |
粒子の初期の共分散。スカラー、ベクトルまたは行列として指定します。
[共分散] は次のように指定します。
スカラーの場合、正でなければなりません。共分散は、対角方向にこのスカラーをもつ [Ns Ns] 行列であると仮定されます。ここで、Ns は状態の数です。
ベクトルの場合、各要素が正でなければなりません。共分散は、対角方向にベクトルの要素をもつ [Ns Ns] 行列であると仮定されます。
行列の場合、半正定値でなければなりません。
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [分布] パラメーターを Gaussian に設定します。
プログラムでの使用
ブロック パラメーター: InitialCovariance |
| 型: スカラー、ベクトルまたは行列 |
既定: 1 |
状態の推定に使用される循環変数。スカラー、または Ns 要素のベクトルとして指定します。ここで Ns は状態の数です。
[循環変数] をスカラーとして指定した場合、ソフトウェアはこれを各要素がこのスカラーに等しいベクトルに拡張します。循環 (または角) 分布は範囲が [-π π] の確率密度関数を使用します。循環変数は、システム内のいくつかの状態がオブジェクトの方向などの角度の数量を表す場合に使用します。
プログラムでの使用
ブロック パラメーター: CircularVariables |
| 型: スカラー、ベクトル |
既定: 0 |
システムの状態の方向。'column' または 'row' として指定します。
[状態の向き] は次のように指定します。
'column'の場合、状態遷移および測定尤度関数への最初の入力引数は [Ns Np] です。この場合、この行列の ith 列が ith 粒子 (状態仮説) になります。また、状態推定値 xhat が [Ns 1] ベクトルとして出力されます。ここで、Ns は状態の数、Np は粒子の数です。'row'の場合、状態遷移および測定尤度関数への最初の入力引数は [Np Ns] で、この行列の各行に粒子が含まれます。また、状態推定値 xhat が [1 Ns] ベクトルとして出力されます。
プログラムでの使用
ブロック パラメーター: StateOrientation |
| タイプ: 文字ベクトル |
値: 'column'、'row' |
既定: 'column' |
システムの状態の初期範囲。Ns 行 2 列の配列として指定します。ここで Ns は状態の数です。
ith 番目の行は、ith 番目の状態の粒子の初期分布に対する一様分布の下限と上限を示しています。
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [分布] パラメーターを Uniform に設定します。
プログラムでの使用
ブロック パラメーター: InitialStateBounds |
| 型: 配列 |
既定: [-3 3;-3 3] |
状態の推定のためのカスタム粒子分布。Ns 行 Np 列または Np 行 Ns 列の配列として指定します。Ns はシステムの状態の数、Np は粒子の数です。
分布を選択し、その確率分布オブジェクトを関数 makedist を使用して作成してから、目的の分布の粒子を関数 random を使用して生成します。
StateOrientationパラメーターが'column'の場合、Particles は Ns 行 Np 列の配列として指定します。以下に例を示します。
pd = makedist('Poisson'); Particles = random(pd,Ns,Np);StateOrientationパラメーターが'row'の場合、Particles は Np 行 Ns 列の配列として指定します。以下に例を示します。
pd = makedist('Poisson'); Particles = random(pd,Np,Ns);
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [分布] パラメーターを Custom に設定します。
プログラムでの使用
ブロック パラメーター: InitialParticles |
| 型: 配列 |
既定: [] |
状態推定のためのカスタムの粒子重み値。1 行 Np 列または Np 行 1 列の正の値のベクトルとして指定します。ここで Np は状態の推定に使用される粒子の数です。
StateOrientationパラメーターが'column'の場合、[重み] は 1 行 Np 列のベクトルとして指定します。ベクトル内の各重みは配列Particles内の同じ列にある粒子に関連付けられています。以下に例を示します。
Weights = ones(1,Np)/Np;
StateOrientationパラメーターが'row'の場合、[重み] は Np 行 1 列のベクトルとして指定します。ベクトル内の各重みは配列Particles内の同じ行にある粒子に関連付けられています。以下に例を示します。
Weights = ones(Np,1)/Np;
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [分布] パラメーターを Custom に設定します。
プログラムでの使用
ブロック パラメーター: InitialWeights |
| 型: 正の値のベクトル |
既定: [] |
測定
測定尤度関数は、センサー測定値を使用して粒子 (状態仮説) の尤度を計算します。各状態仮説 (粒子) に対して、関数はまず Nm 要素の測定仮説ベクトルを計算します。次に、センサー測定値および測定ノイズの確率分布に基づいて各測定仮説の尤度が計算されます。この関数の構文は次のとおりです。
likelihood = h(particles, measurement, param1, param2, ...)
'column' に指定した場合は Ns 行 Np 列、[状態の向き] を 'row' に指定した場合は Np 行 Ns 列になります。measurement は Nm 要素のベクトルで、Nm はセンサーが提供する測定値の数です。param_i は、指定できるオプションの入力引数を表します。オプションの入力引数の詳細については、MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputsを参照してください。測定尤度関数を作成し、[関数] にその関数名を指定します。たとえば、vdpMeasurementLikelihoodFcn.m という測定尤度関数を作成して保存した場合、[関数] に 'vdpMeasurementLikelihoodFcn' を指定します。
[関数] は Simulink Function (Simulink) ブロックを使用して作成するか、MATLAB 関数 (.m ファイル) として作成できます。
MATLAB 関数を使用できるのは、h に、[粒子] と [測定値] 以外の追加の入力引数
param_iが 0 個か 1 個ある場合のみです。ith 番目の測定尤度関数にこの引数を指定して [適用] をクリックすると、ソフトウェアが追加の入力端子 [MeasurementLikelihoodFcn
iInputs] を生成します。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' |
最初の測定尤度関数に対応する端子 [y1] において、測定された出力データをすべての時間点で使用できないと仮定します。入力端子 [Enable1] を生成するには、[イネーブル端子の追加] を選択します。この端子で信号を使用して、測定データが利用できる場合にのみ推定状態の補正をイネーブルにします。同様に、ith 測定尤度関数の端子 [yi] において、測定出力データがすべての時間点で利用できない場合には、対応する [イネーブル端子の追加] を選択します。
プログラムでの使用
ブロック パラメーター: HasMeasurementEnablePort1、HasMeasurementEnablePort2、HasMeasurementEnablePort3、HasMeasurementEnablePort4、HasMeasurementEnablePort5 |
| タイプ: 文字ベクトル |
値: 'off'、'on' |
既定: 'off' |
リサンプリング
粒子のリサンプリングに使用される手法。次のいずれかとして指定します。
'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' の値を指定すると、粒子フィルター動作の一定のタイム ステップ間隔でリサンプリングをトリガーします。
プログラムでの使用
ブロック パラメーター: TriggerMethod |
| タイプ: 文字ベクトル |
値: 'Ratio'、'Interval' |
既定: 'Ratio' |
合計粒子数に対する有効粒子数の最小目標比率。正のスカラーとして指定します。有効粒子数は、現在の粒子セットが事後分布をどれだけよく近似しているかを示す尺度です。有効粒子比率が低い場合、推定に寄与している粒子の数が少なく、リサンプリングが必要であることを意味します。
合計粒子数に対する有効粒子数の比率が最小有効粒子比率より低い場合、リサンプリング ステップがトリガーされます。
最小有効粒子比率を 0 ~ 1 の任意の値として指定します。
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [トリガー法] パラメーターを Ratio に設定します。
プログラムでの使用
ブロック パラメーター: MinEffectiveParticleRatio |
| 型: スカラー |
値: 範囲 [0,1] |
既定: 0.5 |
リサンプリング間の固定間隔。正のスカラー整数として指定します。サンプリング間隔により、どの修正ステップでリサンプリングが実行されるかが決まります。たとえば、2 の値を指定すると、修正ステップ 1 つおきにリサンプリングが実行されます。inf の値を指定すると、リサンプリングが実行されることはありません。
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [トリガー法] パラメーターを Interval に設定します。
プログラムでの使用
ブロック パラメーター: SamplingInterval |
| 型: 正のスカラー整数 |
既定: 1 |
乱数発生器のオプション
乱数が繰り返し可能かどうか。'Repeatable' または 'Not repeatable' として指定します。同じ結果を複数回生成できるようにするには、[ランダム性] を 'Repeatable' に設定し、[シード] に同じ乱数発生器のシード値を指定します。
プログラムでの使用
ブロック パラメーター: Randomness |
| タイプ: 文字ベクトル |
値: 'Repeatable'、'Not repeatable' |
既定: 'Repeatable' |
繰り返し可能な乱数のシード値。スカラーとして指定します。
依存関係
このパラメーターを有効にするには、[システム モデル] タブの [ランダム性] パラメーターを 'Repeatable' に設定します。
プログラムでの使用
ブロック パラメーター: Seed |
| 型: スカラー |
既定: 0 |
設定
このパラメーターはすべてのブロック パラメーターのデータ型の指定に使用します。
プログラムでの使用
ブロック パラメーター: DataType |
| タイプ: 文字ベクトル |
値: 'single'、'double' |
既定: 'double' |
ブロックのサンプル時間。正のスカラーとして指定します。
[サンプル時間] パラメーターは、状態遷移およびすべての測定尤度関数が同じサンプル時間をもつ場合に使用します。それ以外の場合は [マルチレート] タブで [マルチレート処理を有効にする] オプションを選択し、同じタブでサンプル時間を指定します。
依存関係
このパラメーターを有効にするには、[ブロック出力、マルチレート] タブの [マルチレート処理を有効にする] パラメーターを off に設定します。
プログラムでの使用
ブロック パラメーター: SampleTime |
| タイプ: 文字ベクトル、string |
既定: '1' |
[ブロック出力、マルチレート] タブ
出力
粒子から状態推定値を抽出するのに使用される手法。次のいずれかとして指定します。
'Mean'— Particle Filter ブロックは [重み] と [粒子] パラメーターに基づいて、粒子の加重平均を状態推定値として出力します。'Maxweight'— Particle Filter ブロックは重みが最も大きい粒子を状態推定値として出力します。'None'— このオプションは、[ブロック出力、マルチレート] タブの [すべての粒子を出力] パラメーターを使用してすべての粒子にアクセスすることにより、カスタムの状態推定法を実装するために使用します。
プログラムでの使用
ブロック パラメーター: StateEstimationMethod |
| タイプ: 文字ベクトル、string |
値: 'Mean'、'MaxWeight'、'None' |
既定: 'Mean' |
このパラメーターを選択すると、推定に使用される粒子の出力端子 [粒子] がブロックに生成されます。
StateOrientationパラメーターを'column'として指定した場合、粒子は Ns 行 Np 列の配列として出力されます。Ns はシステムの状態の数、Np は粒子の数です。StateOrientationパラメーターを'row'として指定した場合、粒子は Np 行 Ns 列の配列として出力されます。
プログラムでの使用
ブロック パラメーター: OutputParticles |
| タイプ: 文字ベクトル |
値: 'off'、'on' |
既定: 'off' |
このパラメーターを選択すると、推定に使用される粒子の重みの出力端子 [重み] がブロックに生成されます。
StateOrientationパラメーターを'column'として指定した場合、粒子の重みは 1 行 Np 列のベクトルとして出力されます。ここで、各重みは配列Particles内の同じ列にある粒子に関連付けられています。Np は状態推定に使用される粒子の数です。StateOrientationパラメーターを'row'として指定した場合、粒子の重みは Np 行 1 列のベクトルとして出力されます。
プログラムでの使用
ブロック パラメーター: OutputWeights |
| タイプ: 文字ベクトル |
値: 'off'、'on' |
既定: 'off' |
このパラメーターを選択すると、状態推定誤差の共分散の出力端子 [P] がブロックに生成されます。
依存関係
このパラメーターを有効にするには、[ブロック出力、マルチレート] タブの [状態推定法] パラメーターを 'Mean' に設定します。
プログラムでの使用
ブロック パラメーター: OutputStateCovariance |
| タイプ: 文字ベクトル |
値: 'off'、'on' |
既定: 'off' |
このパラメーターを選択すると、ブロックは、時間 k までに測定された出力を使って推定された、タイム ステップ k での修正された状態推定 を出力します。このパラメーターをオフにすると、ブロックは、前の時間 k-1 までに測定された出力を使って推定された、時間 k の予測された状態推定 を返します。フィルターがフィードバック ループにあり Simulink モデルに代数ループがある場合は、このパラメーターをクリアします。
プログラムでの使用
ブロック パラメーター: UseCurrentEstimator |
| タイプ: 文字ベクトル |
値: 'on'、'off' |
既定: 'on' |
マルチレート
状態遷移関数またはいずれかの測定尤度関数のサンプル時間がその他とは異なる場合、このパラメーターを選択します。サンプル時間は [マルチレート] タブの [サンプル時間] で指定します。
プログラムでの使用
ブロック パラメーター: EnableMultirate |
| タイプ: 文字ベクトル |
値: 'off'、'on' |
既定: 'off' |
状態遷移関数と測定尤度関数のサンプル時間が異なる場合、[サンプル時間] を指定します。測定関数のサンプル時間は、状態遷移のサンプル時間の正の整数倍で指定します。指定するサンプル時間は次の入力端子に対応します。
状態遷移関数に対応する端子 — 状態遷移関数への追加の入力 [StateTransitionFcnInputs]。これらの端子のサンプル時間は、状態遷移関数のサンプル時間と常に等しくなければなりませんが、測定尤度関数のサンプル時間とは異なるものを指定できます。
ith 測定尤度関数に対応する端子 — 測定出力 [y
i]、測定尤度関数への追加入力 [MeasurementLikelihoodFcniInputs]、端子でのイネーブル信号 [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.
拡張機能
指定する状態遷移関数と測定尤度関数は、コード生成をサポートする MATLAB コマンドと Simulink ブロックのみを使用しなければなりません。コード生成をサポートするブロックの一覧については、コード生成向けにサポートされているブロック (Simulink Coder)を参照してください。コード生成をサポートするコマンドの一覧については、C/C++ コードの生成でサポートされている関数およびオブジェクト (MATLAB Coder)を参照してください。
バージョン履歴
R2018a で導入
参考
ブロック
関数
トピック
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)
