Code covered by the BSD License

### Highlights from Particle filter tutorial

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

# Particle filter tutorial

### Diego Andrés Alvarez Marín (view profile)

• 1 file
• 4.66667

05 Mar 2012 (Updated )

Implementation of the generic particle filter

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)
07 Oct 2013 Nima

### Nima (view profile)

03 Oct 2013 droulias Roulias

### droulias Roulias (view profile)

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));
xk = xk+hopt*dd*ee; % extract new particles
wk = repmat(1/Ns, 1, Ns);

16 Sep 2013 soheil

### soheil (view profile)

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

Comment only
22 Jul 2013 Jesús Lucio

### Jesús Lucio (view profile)

Thanks a lot.

20 Jun 2013 SaiNave

### SaiNave (view profile)

not helpful it is so complexed :(

Comment only
03 Nov 2012 eddieyang Yang

GOOD

Comment only