基于多项重采样的粒子滤波-matlab

本文详细阐述了粒子滤波算法在跟踪领域的应用,通过实例代码展示了如何使用该算法进行目标跟踪。包括初始化粒子、更新粒子权重、重采样等关键步骤,并最终实现目标位置的估计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clear
xp=0.1;
Q=5;
R=1;
P=10;
tf=100;
Np=10000;

particle_p=sqrt(P)*randn(1,Np);
wk_i=ones(1,Np)/Np;
c=zeros(Np,1);

for k=1:tf
    xk=xp/2+(25*xp/(1+xp^2))+8*cos(1.2*(k-1))+sqrt(Q)*randn;
    zk=xk^2/20+sqrt(R)*randn;
    xp=xk;
    x(k,1)=xk;
    
    %Selecting particles
    particle=0.5*particle_p + (25*particle_p./(1+particle_p.^2))+...
    8*cos(1.2*(k-1))+sqrt(Q)*randn;  
    z_p=particle.^2/20;
    
    wk=(1/sqrt(R)/sqrt(2*pi))*exp(-0.5/R*(z_p-zk).*(z_p-zk));
    wk=wk_i.*wk;  
    wk=wk/sum(wk); wk_i=wk;
    xest=sum(particle.*wk);
    y(k,1)=xest;
    
 %多项重采样算法     
    c(1)=wk(1);
    for i=2:1:Np
        c(i)=c(i-1)+wk(i);
    end
    u=zeros(Np,1);
    u(1)=rand/Np;
    i=1;
    for j=1:1:Np
       u(j)=u(1)+(j-1)/Np; 
        if u(j)>c(i)
            i=i+1;
        else
            particle(j)=particle_p(i);
            wk_i(j)=1/Np;
        end 
    end
  %  wk_i=wk_i/sum(wk_i);
    particle_p=particle;
end
hold on
t=1:tf;
plot(t,x)
plot(t,y,'r')

 

转载于:https://www.cnblogs.com/zjuhjm/archive/2013/02/27/2935676.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值