非线性非高斯模型的改进粒子滤波算法(Matlab代码实现)

欢迎来到本博客❤️❤️

博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

本文目录如下:

目录

1 概述

2 运行结果

3 Matlab代码实现

4 参考文献


1 概述

由于红外、被动声纳等被动传感器具有隐蔽性好、抗干扰性强等特点,因此在现代战争中纯方位跟踪有着广泛的应用前景,吸引了许多学者进行研究。但是,纯方位跟踪又是跟踪问题的一个难点,主要是因为同主动跟踪问题相比,纯方位跟踪具有不可观测性,滤波非线性等特点。目前,针对纯方位跟踪研究多采用局部线性化的近似方法。扩展卡尔曼滤波( EKF) 是比较普遍适用的算法,此算法仅利用非线性函数 Taylor 展开的一阶项,只适用于弱非线性系统,在缺少距

离量测信息的条件下容易引起滤波的不稳定,甚至发散; 对于强非线性系统,不敏卡尔曼滤波( UKF) 有更 好的滤波效果,但是 UKF 和 EKF 都是在基于模型线性化和高斯假设的条件下,不适用于非高斯分布的模型。在处理非线性非高斯问题时,一种基于贝叶斯原理的序贯蒙特卡罗粒子滤波器表现出明显的优势[4-5]。在 用粒子滤波进行被动传感器目标跟踪时,其跟踪精度

主要取决于两个方面[5]: 一是采样得到的粒子分布是 否合理,能不能尽可能接近真实状态的后验概率分布。对这方面的研究主要通过选择好的重要性密度函数和在递推过程中克服权值退化和样本贫化问题Payne、Marron 等学者相继利用 EKF 和 UKF 产生建议分布对传统粒子滤波进行改进[6-7]。但是,在非高斯噪声或者过程噪声较大的情况下容易出现滤波发散; 文献[8]提出一种基于 EM 的高斯和粒子滤波算法,该算法通过 EM 产生量测更新过程中的加权粒子集来重新获得

后验状态密度,改善了粒子枯竭问题。但由于 EM 算法假定混合成分数为已知、迭代的结果需要依赖初始值、可能收敛到局部最大点或参数空间的边界,导致滤波过程后验状态密度估计误差增大,影响滤波精度。二是粒子滤波权值计算准确与否。粒子权值的大小代表状态在该粒子位置可能性的大小。当观测噪声突然增大时,粒子权值将会产生较大偏差。

2 运行结果

 

 部分代码:

 %重要性权值计算
        for i=1:N
            zPred_pf(:,t,i)=feval('hfun',XparticlePred_pf(:,t,i),x0,y0);
            weight(t,i)=(1-eta)*inv(sqrt(2*pi*det(R1)))*exp(-.5*(Z(:,t)...
                -zPred_pf(:,t,i))'*inv(R1)*(Z(:,t)-zPred_pf(:,t,i)))...
                +eta*inv(sqrt(2*pi*det(R2)))*exp(-.5*(Z(:,t)-...
                zPred_pf(:,t,i))'*inv(R2)*(Z(:,t)-zPred_pf(:,t,i)))...
                + 1e-99; %权值计算,为避免权值为0,用1e-99
        end
        weight(t,:)=weight(t,:)./sum(weight(t,:));%归一化权值
        outIndex = randomR(1:N,weight(t,:)');     %随机采样
        Xparticle_pf(:,t,:) = XparticlePred_pf(:,t,outIndex);%获取新采样值
        %状态估计
        mx=mean(Xparticle_pf(1,t,:));
        my=mean(Xparticle_pf(3,t,:));
        mvx=mean(Xparticle_pf(2,t,:));
        mvy=mean(Xparticle_pf(4,t,:));
        Xmean_pf(j,:,t)=[mx,mvx,my,mvy]';

3 Matlab代码实现

4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]周航,冯新喜,王蓉.非线性非高斯模型的改进粒子滤波算法[J].信号处理,2012,28(09):1327-1334.

你可能感兴趣的:(信号处理,算法,matlab,开发语言)