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