您现在的位置:首页 >> 数值仿真 >> 内容

基于IMM和UKF的机动目标跟踪matlab仿真

时间:2023/1/23 21:26:45 点击:

  核心提示:A282,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56YkpZs

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览






3.算法概述

      交互式多模型(Interacting Multiple Model,简称IMM)是一种算法,具有自适应的特点,能够有效地对各个模型的概率进行调整,尤其适用于对机动目标的定位跟踪。交互式多模型算法包含了多个滤波器(各自对应着相应的模计器,一个交互式作用器和一个估计混合器),多模型通过交互作用跟踪一个目标的机动运动,各模型之间的转移由马尔可夫概率转移矩阵确定,其中的元素Pij表示目标由第i个运动模型转移到第j个运动模型的概率。

    在Kalman滤波算法中用到了状态转移方程和观测方程,被估计量随时间变化,他是一种动态估计。在目标跟踪中,不必知道目标的运动模型就能够实时地修正状态参量(位置、速度等信息),有良好的适应性。但是当目标运动运动变得复杂时(比如加速、减速等),仅仅用kalman滤波得不到理想的效果。这时就需要用自适应算法。交互多模型(IMM)是一种软切换算法,现在在机动目标领域得到广泛应用。该算法主要通过两个或更多的模型来描述工作过程中可能的状态,最后通过有效的加权融合进行系统状态估计,能够很好的克服单模型估计误差大的问题。

4.部分源码

......................................................................

for k=1:501

    %第一步 模型条件重初始化

    %1。首先计算混合概率

    %计算c

    c_1=pai(1,1)*miu_CV+pai(2,1)*miu_CA;

    c_2=pai(1,2)*miu_CV+pai(2,2)*miu_CA;

    %计算miu_temp

    %2。进行混合估计

    %匀速运动模型

    X1=X11*miu11+X22*miu21;%

    P1=(P11+(X1-X1)*(X11-X1)')*miu11+(P22+(X22-X1)*(X22-X1)')*miu21;

    PP(:,:,k)=P1;

............................................................................

    si1(:,1)=X1;

    for ii=2:7

        si1(:,ii)=X1+((i+a)^(0.5))*A1(:,ii-1);

    end

    for ii=8:13

        si1(:,ii)=X1-((i+a)^(0.5))*A1(:,ii-7);

    end

    X1=Wm0*SI1(:,1);

    for ii=2:13

        X1=X1+Wm*SI1(:,ii);

    end

    

    Xk1=X1;

    

    Pk1=Wc0*(SI1(:,1)-X1)*((SI1(:,1)-X1)');

    for ii=2:13

        Pk1=Pk1+Wc*(SI1(:,ii)-X1)*((SI1(:,ii)-X1)');

    end

    Pk1=Pk1+Qk1; 

    

    %利用预测取样点预测测量取样点

     for ii=1:13

      zk1(:,ii)=FZ(SI1(:,ii));

     end

     

    %预测测量值

    Zk1=Wm0*zk1(:,1);

    for ii=2:13

        Zk1=Zk1+Wm*zk1(:,ii);

    end

    %%%%%%量测更新%%%%%%%

..............................................................................

    si2(:,1)=X2;

    for ii=2:7

        si2(:,ii)=X2+((i+a)^(0.5))*A2(:,ii-1);

    end

    for ii=8:13

        si2(:,ii)=X2-((i+a)^(0.5))*A2(:,ii-7);

    end

    %%%%%%时间更新%%%%%%%

    %利用状态方程传递取样点

  for ii=1:13

      SI2(:,ii)=FX2(si2(:,ii));

  end

%     %利用预测取样点,权值计算预测均值和协方差

    X2=Wm0*SI2(:,1);

    for ii=2:13

        X2=X2+Wm*SI2(:,ii);

    end

    

    Xk2=X2;

    

    Pk2=Wc0*(SI2(:,1)-X2)*((SI2(:,1)-X2)');

    for ii=2:13

        Pk2=Pk2+Wc*(SI2(:,ii)-X2)*((SI2(:,ii)-X2)');

    end

    Pk2=Pk2+Qk2; 

    

    %利用预测取样点预测测量取样点

     for ii=1:13

      zk2(:,ii)=FZ(SI2(:,ii));

     end

     

    %预测测量值

    Zk2=Wm0*zk2(:,1);

    for ii=2:13

        Zk2=Zk2+Wm*zk2(:,ii);

    end

   %计算UKF增益,更新状态向量和方差

    zk2=Z(:,k)-Zk2;

    K2=Pxz2*(inv(Pzz2));

    X2=X2+K2*(Z(:,k)-Zk2);

    P2=Pk2-K2*Pzz2*(K2)';

    Xe2(:,k)=X2;                                  

    %...........................................................................

    %第四步 估计融合  

    X=X1*miu_CV+X2*miu_CA;

end

A282

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168