Particle filter correct function and likelihood as an output

조회 수: 1 (최근 30일)
zym
zym 2022년 9월 4일
댓글: zym 2022년 9월 7일
Hi, I am wondering if there is an easy way to extract the likelihood for each particle using the correct function. At the moment the correct function just calculates the likelihood to get weights for the resampling. To avoid double re-calculation, could correct function retrieve also the likelihood? I need this for the computation of likelihood using mle. I believe it is a nice addition to the function.
Regards!

채택된 답변

Remo Pillat
Remo Pillat 2022년 9월 6일
Hi zym,
Unfortunately, there is no way of retrieving the individual particle likelihoods from the correct function.
As a workaround, you can retrieve the likelihood by evaluating the MeasurementLikelihoodFcn after the prediction step. This incurs a little extra overhead, but if your MeasurementLikelihoodFcn is simple, this might be acceptable for your application. See a small example here of evaluating the function between the prediction and correction steps and calculating the likelihood vector:
% Create a particle filter
pf = stateEstimatorPF;
% Initialize the particle filter at state [4 1 9] with unit covariance
initialize(pf, 5000, [4 1 9], eye(3), 'StateOrientation', 'row');
% Run one predict step
statePredicted = predict(pf);
% Assume we have a measurement [4.2 0.9 9]
% (Optional) calculate likelihood for each particle.
measurement = [4.2 0.9 9];
likelihood = feval(pf.MeasurementLikelihoodFcn, pf, pf.Particles, measurement)
likelihood = 5000×1
0.0042 0.0025 0.0032 0.0220 0.0533 0.0053 0.0000 0.0751 0.0034 0.0129
% Run correct step with measurement
stateCorrected = correct(pf, measurement);
  댓글 수: 1
zym
zym 2022년 9월 7일
Thanks a lot for your answer! It would be very useful to incorporate this possibility in future releases.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Localization Algorithms에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by