有关粒子滤波的matlab程序

function partical
clear all;   
a=xlsread('datace.xls');
T =2344;                
dt=0.00001;                  
Q=0.00000001;                 
R=0.000001;                    
w=sqrt(Q)*randn(T,1);
v=sqrt(R)*randn(T,1);  
   
numSamples=1000;            


x0=0;                
 
X=zeros(T,1);          
Z=zeros(T,1);          
X(1,1)=x0;             
Z(1,1)=a(1,1); 
for k=2:T
 
    Z(k,1)=a(k,1);
end
 
Xpf=zeros(numSamples,T);      
Xparticles=zeros(numSamples,T);  
Zpre_pf=zeros(numSamples,T);   
weight=zeros(numSamples,T);     
 
Xpf(:,1)=x0+sqrt(Q)*randn(numSamples,1);
Zpre_pf(:,1)=Xpf(:,1);
 
for k=2:T
    
    for i=1:numSamples
        QQ=Q;    
        net=sqrt(QQ)*randn;  
        Xparticles(i,k)=Xpf(i,k-1)+0.025*sin(2*pi*50*k+pi)-0.025*sin(2*pi*50*(k-1)+pi) + net;
    end
     
   

你可能感兴趣的:(有关粒子滤波的matlab程序)