initialize
粒子フィルターの状態を初期化
構文
説明
initialize(
は、指定した粒子数で粒子フィルター オブジェクトを初期化します。状態空間における粒子の初期状態は、指定された pf
,numParticles
,mean
,covariance
)mean
と covariance
をもつ多変量正規分布からのサンプリングにより定義されます。状態変数の数 (NumStateVariables
) は mean
ベクトルの長さに基づいて自動的に取得されます。
initialize(
は、与えられた pf
,numParticles
,stateBounds
)stateBounds
をもつ多変量一様分布からサンプリングすることにより、numParticles
粒子の初期位置を決定します。
initialize(___,
は、1 つ以上の Name,Value
)Name,Value
のペアの引数で指定された追加オプションを使って粒子を初期化します。
例
オンライン状態推定のための粒子フィルター オブジェクトの初期化
システムの状態を推定するための粒子フィルター オブジェクトを作成するには、システムに適切な状態遷移関数と測定関数を作成します。
この例では、関数 vdpParticleFilterStateFcn and vdpMeasurementLikelihoodFcn
が、1 と等しい非線形性パラメーター mu を使ってファン デル ポール振動子の離散近似を記述します。
粒子フィルター オブジェクトを作成します。関数ハンドルを使用して、オブジェクトに状態遷移関数と測定尤度関数を提供します。
myPF = particleFilter(@vdpParticleFilterStateFcn,@vdpMeasurementLikelihoodFcn);
粒子フィルターを状態 [2; 0]
で単位共分散を使って初期化し、1000
個の粒子を使用します。
initialize(myPF, 1000, [2;0], eye(2)); myPF
myPF = particleFilter with properties: NumStateVariables: 2 NumParticles: 1000 StateTransitionFcn: @vdpParticleFilterStateFcn MeasurementLikelihoodFcn: @vdpMeasurementLikelihoodFcn IsStateVariableCircular: [0 0] ResamplingPolicy: [1x1 particleResamplingPolicy] ResamplingMethod: 'multinomial' StateEstimationMethod: 'mean' StateOrientation: 'column' Particles: [2x1000 double] Weights: [1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 ... ] State: 'Use the getStateEstimate function to see the value.' StateCovariance: 'Use the getStateEstimate function to see the value.'
作成したオブジェクトから状態と状態推定誤差の共分散を推定するには、predict
コマンドと correct
コマンドを使用します。
入力引数
pf
— 粒子フィルター
particleFilter
オブジェクト
粒子フィルター。オブジェクトで指定します。詳細については、particleFilter
を参照してください。
numParticles
— フィルターで使用される粒子の数
スカラー
フィルターで使用される粒子の数。スカラーとして指定します。
パフォーマンスが問題になる場合を除き、1000 個以上の粒子を使用してください。粒子の数が多いほど推定結果は改善しますが、アルゴリズムでより多くの粒子を処理しなければならないため、パフォーマンス速度が犠牲になります。粒子フィルターの追跡を改善するには、粒子の数を調整するのが最良の方法です。
mean
— 粒子分布の平均値
ベクトル
粒子分布の平均値。ベクトルとして指定します。pf
の NumStateVariables
プロパティはこのベクトルの長さに基づいて設定されます。
covariance
— 粒子分布の共分散
N 行 N 列の行列
粒子分布の共分散。N 行 N 列の行列として指定します。N は pf
の NumStateVariables
プロパティの値です。
stateBounds
— 状態変数の範囲
n 行 2 列の行列
状態変数の範囲。n 行 2 列の行列として指定します。pf
の NumStateVariables
プロパティは n の値に基づいて設定されます。各行は対応する状態変数の下限と上限に対応します。状態変数の数 (NumStateVariables
) は、配列 stateBounds
の行数に基づいて自動的に取得されます。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: ...'StateOrientation','row'
CircularVariables
— 循環変数
logical ベクトル
循環変数。CircularVariables
からなるコンマ区切りのペアで、logical ベクトルとして指定します。循環座標または角座標を使用する各状態変数は 1 で示されます。ベクトルの長さは particleFilter
の NumStateVariables
プロパティと等しくなります。
StateOrientation
— 状態の方向
'column' (既定値) | 'row'
状態の方向。'column' または 'row' の値をとる StateOrientation
からなるコンマ区切りのペアとして指定します。'column' の場合、オブジェクト pf
の State
プロパティと getStateEstimate
メソッドは状態を列ベクトルとして返し、Particles
プロパティの次元は NumStateVariables
行 NumParticles
列となります。'row' の場合、状態は行方向になり、Particles
の次元は NumParticles
行 NumStateVariables
列です。
バージョン履歴
R2017b で導入
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)