Main Content

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

getStateEstimate

粒子から最良の状態推定値と共分散を抽出

説明

State = getStateEstimate(pf) は、現在の粒子のセットに基づいて最良の状態推定値を返します。推定値は particleFilter オブジェクト pf から StateEstimationMethod プロパティに基づいて抽出されます。

[State,StateCovariance] = getStateEstimate(pf) は、状態推定値の共分散も返します。共分散は、状態推定値の不確かさの目安となります。一部の状態推定法では共分散出力がサポートされません。その場合、getStateEstimateStateCovariance を [ ] として返します。

StateStateCovariance の情報には、粒子フィルター オブジェクト pf のプロパティとして pf.Statepf.StateCovariance でアクセスすることができます。ただし、この両方の数量が必要とされる場合、getStateEstimation メソッドで 2 つの出力引数を指定する方が計算効率は高くなります。

すべて折りたたむ

粒子フィルターを作成して、状態遷移関数と測定尤度関数を設定します。

myPF = particleFilter(@vdpParticleFilterStateFcn,@vdpMeasurementLikelihoodFcn);

粒子フィルターを状態 [2; 0] で単位共分散を使って初期化し、1000 個の粒子を使用します。

initialize(myPF, 1000, [2;0], eye(2));

mean 状態推定法と systematic リサンプリング法を選択します。

myPF.StateEstimationMethod = 'mean';
myPF.ResamplingMethod = 'systematic';
myPF
myPF = 
  particleFilter with properties:

           NumStateVariables: 2
                NumParticles: 1000
          StateTransitionFcn: @vdpParticleFilterStateFcn
    MeasurementLikelihoodFcn: @vdpMeasurementLikelihoodFcn
     IsStateVariableCircular: [0 0]
            ResamplingPolicy: [1x1 particleResamplingPolicy]
            ResamplingMethod: 'systematic'
       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 ... ] (1x1000 double)
                       State: 'Use the getStateEstimate function to see the value.'
             StateCovariance: 'Use the getStateEstimate function to see the value.'

測定値 2.1 を仮定して、predict と correct のステップを 1 回実行します。

[PredictedState, PredictedStateCovariance] = predict(myPF);
[CorrectedState, CorrectedStateCovariance] = correct(myPF,2.1);

StateEstimationMethod プロパティに基づいて最良の状態推定値と共分散を取得します。

[State, StateCovariance] = getStateEstimate(myPF)
State = 2×1

    2.1018
   -0.1413

StateCovariance = 2×2

    0.0175   -0.0096
   -0.0096    0.5394

入力引数

すべて折りたたむ

粒子フィルター。オブジェクトとして指定します。詳細については、particleFilter を参照してください。

出力引数

すべて折りたたむ

最良の状態推定値。StateOrientation プロパティの条件に基づいて、ベクトルとして定義されます。

  • StateOrientation'row' の場合、State は 1 行 NumStateVariables 列のベクトルです。

  • StateOrientation'column' の場合、StateNumStateVariables 行 1 列のベクトルです。

状態推定誤差の共分散の現在の推定値。NumStateVariablesNumStateVariables 列の配列として定義されます。StateCovarianceStateEstimationMethod に基づいて計算されます。共分散がサポートされない状態推定法を指定した場合、関数は StateCovariance を [ ] として返します。

バージョン履歴

R2017b で導入