Code covered by the BSD License  

Highlights from
Particle filter tutorial

4.66667

4.7 | 3 ratings Rate this file 174 Downloads (last 30 days) File Size: 4.88 KB File ID: #35468
image thumbnail

Particle filter tutorial

by

 

05 Mar 2012 (Updated )

Implementation of the generic particle filter

| Watch this File

File Information
Description

This file implements the particle filter described in

Arulampalam et. al. (2002). A tutorial on particle filters for online nonlinear/non-gaussian bayesian tracking. IEEE Transactions on Signal Processing. 50 (2). p 174--188

Heavily commented code included

Required Products Statistics Toolbox
MATLAB release MATLAB 7.8 (R2009a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (6)
07 Oct 2013 Nima  
03 Oct 2013 droulias Roulias

add regularized PF

case 'regularized_pf'

%reasmple
edges = min([0 cumsum(wk)'],1); % protect against accumulated round-off
edges(end) = 1; % get the upper edge exact
u1 = rand/Ns;

[~, idx] = histc(u1:1/Ns:1, edges);
xk = xk(:,idx); % extract new particles
wk = repmat(1/Ns, 1, Ns); % now all particles have the same weight

%according to Mussao et al., 2001
% compute empirical covariance of particles
emp_cov=cov(xk')';
% form D'*D=emp_cov
dd=cholcov(emp_cov);

nx=size(xk,1);
%unit sphere volume (in two dimensions)
cc=pi;
%form the optimal choice of bandwidth
aa=(8*(1/cc)*(nx+4)*(2*pi^.5)^nx)^(1/(nx+4));
hopt=aa*Ns^(-1/(nx+4));
% form an estimation of continuous pdf via epanechnikov kernel
[f,~] = ksdensity(wk,'npoints',length(wk),'kernel','epanechnikov');
f=f/sum(f);
% compute the cumulative of the continuous distribution
edges = min([0 cumsum(f)],1); % protect against accumulated round-off
edges(end) = 1; % get the upper edge exact
%sample from the inverse of cumulative of continuous density
u1 = rand/Ns;
[~, idx] = histc(u1:1/Ns:1, edges);
ee=xk(:,idx);
%move all samples to centre
ee=ee-repmat(mean(ee,2),1,length(ee));
% adjust resampled particles
xk = xk+hopt*dd*ee; % extract new particles
wk = repmat(1/Ns, 1, Ns);

16 Sep 2013 soheil

Dear Dr. Alvarez,
I am using your Particle Filter code and that is great. Right now, I am changing that to solve my problem. The problem has observation likelihood with more than two dimensions. I was wondering how I can model observation likelihood "p_yk_given_xk". Any idea for that will be really appreciated.

Regards,

Soheil

22 Jul 2013 Jesús Lucio

Thanks a lot.

20 Jun 2013 SaiNave

not helpful it is so complexed :(

03 Nov 2012 eddieyang Yang

GOOD

Updates
14 Aug 2012

Changed title

Contact us