【数据融合】EKF雷达与红外数据融合【含Matlab源码 3764期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
在这里插入图片描述
🔊博主简介:985研究生,Matlab领域科研开发者;

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

🏆代码获取方式:
优快云 Matlab武动乾坤—代码获取方式

更多Matlab信号处理仿真内容点击👇
Matlab信号处理(进阶版)

⛳️关注优快云 Matlab武动乾坤,更多资源等你来!!

⛄一、 卡尔曼滤波kalman信息融合

1 kalman原理
卡尔曼滤波是一种递推式滤波方法,不须保存过去的历史信息,新数据结合前一刻已求得的估计值及系统本身的状态方程按一定方式求得新的估计值。

1.1 线性卡尔曼
假设线性系统状态是k,卡尔曼原理可用以下五个公式表达:
X(k|k-1)=A X(k-1|k-1)+B U(k) ………… (1)
P(k|k-1)=A P(k-1|k-1) A’+Q ……… (2)
X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)
Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……… (4)
P(k|k)=(I-Kg(k) H)P(k|k-1) ……… (5)
式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量;式 (2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的 covariance,A’表示A的转置矩阵,Q是系统过程的covariance;现在状态(k)的最优化估算值为X(k|k);Kg为卡尔曼增益(Kalman Gain)。

1.2 扩展卡尔曼
实际系统总是存在不同程度的非线性,对于非线性系统滤波问题,常用的处理方法是利用线性化技巧将其转化为一个近似的线性滤波问题,这就是扩展Kalman 滤波方法(Extended Kalman Filter,EKF )思路。扩展Kalman 滤波建立在线性Kalman 滤波的基础上,其核心是对一般的非线性系统将滤波值非线性函数f()和h()展开成Taylor级数并略去二阶及以上项,得到一个近似的线性化模型,然后应用Kalman 滤波完成对目标的滤波估计处理。

1.3、无迹卡尔曼
扩展Kalman滤波是对非线性的系统方程或者观测方程进行泰勒展开并保留其一阶近似项,不可避免地引入了线性化误差。如果线性化假设不成立,采用这算法则会导致滤波器性能下降以至于造成发散。无迹Kalman 滤波(Unscented Kalman Filter,UKF )摒弃了对非线性函数进行线性化的传统做法,采用Kalman 线性滤波框架,对于预测方程,使用无迹变换(Unscented Transform, UT) 来处理均值和协方差的非线性传递问题。

2 数据融合(信息融合)
将经过集成处理的多传感器信息进行合成,形成一种对外部环境或被测对象某一特征的表达方式称为信息融合。常见由以下几种信息融合方法。
(1)综合平均法,即把各传感器数据求平均,乘上权重系数;
(2)贝叶斯估计法,通过先验信息和样本信息得到后验分布,再对目标进行预测;
(3)D-S法,采用概率区间和不确定区间判定多证据体下假设的似然函数进行推理;
(4)神经网络法,以测量目标的各种参数集为神经网络的输入,输出推荐的目标特征或权重;
(5)kalman法、专家系统法等。。。

⛄二、部分源代码

clear all;
close all;

%参数初始化
MCruns=50;%MC仿真次数
T=0.1;%采样周期
%状态转移矩阵
F=[1 T T^2/2 0 0 0 0 0 0;0 1 T 0 0 0 0 0 0;0 0 1 0 0 0 0 0 0;0 0 0 1 T T^2/2 0 0 0;0 0 0 0 1 T 0 0 0;0 0 0 0 0 1 0 0 0;0 0 0 0 0 0 1 T T^2/2;0 0 0 0 0 0 0 1 T;0 0 0 0 0 0 0 0 1];
%过程噪声增益矩阵
G=[T^3/6 0 0;T^2/2 0 0;T 0 0;0 T^3/6 0;0 T^2/2 0;0 T 0;0 0 T^3/6;0 0 T^2/2;0 0 T];
q1=10;%过程噪声方差
q2=15;
Q1=eye(3)*q1;
Q2=eye(3)*q2;
%状态向量初值
X1(1,:)=[8000,200,5,5000,400,1,9000,250,10];%目标1
X2(1,:)=[100,120,0.5,-6000,-300,0.5,5000,-100,15];%目标2
N=500;%仿真中采样长度
%用轨迹产生子函数模拟两个目标的真实轨迹
traj1=gen3trj(F,G,q1,X1,T,N);
traj2=gen3trj(F,G,q2,X2,T,N);
%雷达与红外传感器的量测误差设定
IR=[0.0001 0;0 0001];%IR为0.0001rad
R=[0.01 0 0;0 0.01 0;0 0 100];%radar为角度误差0.01rad,距离误差100m

for i=1:MCruns
%调用融合函数,计算跟踪轨迹
%目标1
[tmeas1,measIR1,measR1]=gen_meas(IR,R,traj1,T,i*(i+10));
Xt1=traj1(1,:);Xg1=0.9Xt1’;P1=diag((Xt1’-Xg1).^2);%设定初始值,此处初始x初始估计值设为0.9Xt
[X1mf,P1mf,standard1varmf]=mf(F,G,Q1,IR,R,Xg1,P1,measIR1,measR1,traj1);%量测融合,得到状态向量,标准差
[X1svf,P1svf,standard1varsvf]=svf(F,G,Q1,IR,R,Xg1,P1,measIR1,measR1,traj1);%状态向量融合…
%目标2
[tmeas2,measIR2,measR2]=gen_meas(IR,R,traj2,T,i*(i+10));
Xt2=traj2(1,:);Xg2=0.9*Xt2’;P2=diag((Xt2’-Xg2).^2);
[X2mf,P2mf,standard2varmf]=mf(F,G,Q1,IR,R,Xg2,P2,measIR2,measR2,traj2);
[X2svf,P2svf,standard2varsvf]=svf(F,G,Q1,IR,R,Xg2,P2,measIR2,measR2,traj2);

%误差计算,为绘图做准备
%量测融合/状态向量融合“位置误差绝对值=实际值-估计值”
aberror1mf_x(i,:)=abs(traj1(:,1)-X1mf(:,1));aberror1mf_y(i,:)=abs(traj1(:,4)-X1mf(:,4));aberror1mf_z(i,:)=abs(traj1(:,7)-X1mf(:,7));
aberror1svf_x(i,:)=abs(traj1(:,1)-X1svf(:,1));aberror1svf_y(i,:)=abs(traj1(:,4)-X1svf(:,4));aberror1svf_z(i,:)=abs(traj1(:,7)-X1svf(:,7));
aberror2mf_x(i,:)=abs(traj2(:,1)-X2mf(:,1));aberror2mf_y(i,:)=abs(traj2(:,4)-X2mf(:,4));aberror2mf_z(i,:)=abs(traj2(:,7)-X2mf(:,7));
aberror2svf_x(i,:)=abs(traj2(:,1)-X2svf(:,1));aberror2svf_y(i,:)=abs(traj2(:,4)-X2svf(:,4));aberror2svf_z(i,:)=abs(traj2(:,7)-X2svf(:,7));
%融合位置标准差
standard1varsvf.P(i,:)=standard1varsvf.P;
standard2varsvf.P(i,:)=standard2varsvf.P;
standard1varmf.P(i,:)=standard1varmf.P;
standard2varmf.P(i,:)=standard2varmf.P;

%位置误差的方差和
Varmf1(i,:)=aberror1mf_x(i,:).^2+aberror1mf_y(i,:).^2+aberror1mf_z(i,:).^2;
Varmf2(i,:)=aberror2mf_x(i,:).^2+aberror2mf_y(i,:).^2+aberror2mf_z(i,:).^2;
Varsvf1(i,:)=aberror1svf_x(i,:).^2+aberror1svf_y(i,:).^2+aberror1svf_z(i,:).^2;
Varsvf2(i,:)=aberror2svf_x(i,:).^2+aberror2svf_y(i,:).^2+aberror2svf_z(i,:).^2;

end

% 结果分析与绘图
% 图1:通过量测融合进行轨迹显示
figure(1);
subplot(211);plot3(traj1(:,1),traj1(:,4),traj1(:,7),‘b’,X1mf(:,1),X1mf(:,4),X1mf(:,7),‘r’,traj2(:,1),traj2(:,4),traj2(:,7),‘y’,X2mf(:,1),X2mf(:,4),X2mf(:,7),‘g’);
grid on
xlabel(‘x’);ylabel(‘y’);zlabel(‘z’)
title(‘量测融合-两个目标的模拟真实轨迹与跟踪’)
subplot(212);plot3(traj1(:,1),traj1(:,4),traj1(:,7),‘b’,X1svf(:,1),X1svf(:,4),X1svf(:,7),‘r’,traj2(:,1),traj2(:,4),traj2(:,7),‘y’,X2svf(:,1),X2svf(:,4),X2svf(:,7),‘g’);
grid on
xlabel(‘x’);ylabel(‘y’);zlabel(‘z’)
title(‘状态向量融合-两个目标的模拟真实轨迹与跟踪’)

%图2,3:传感器各个量测值与真值对比图
t=(0:N)*T;%绘图时长T,1T,2T…NT
%目标1
figure(2)
subplot(321);plot(t(1:N),measIR1(1:N,1),‘b’);hold; plot(t(1:N),tmeas1(1:N,1),‘r’);ylabel(‘方位角/rad’);title(‘目标1量测与真值对比’)
subplot(323);plot(t(1:N),measIR1(1:N,2),‘b’);hold; plot(t(1:N),tmeas1(1:N,2),‘r’);ylabel(‘俯仰角/rad’);
subplot(322);plot(t(1:N),measR1(1:N,1),‘b’);hold; plot(t(1:N),tmeas1(1:N,1),‘r’);ylabel(‘方位角/rad’);
subplot(324);plot(t(1:N),measR1(1:N,2),‘b’);hold; plot(t(1:N),tmeas1(1:N,2),‘r’); ylabel(‘俯仰角/rad’);
subplot(326);plot(t(1:N),measR1(1:N,3),‘b’);hold; plot(t(1:N),tmeas1(1:N,3),‘r’);ylabel(‘径向距离/m’);
%目标2
figure(3)
subplot(321);plot(t(1:N),measIR2(1:N,1),‘y’);hold; plot(t(1:N),tmeas2(1:N,1),‘g’);ylabel(‘方位角/rad’);title(‘目标2量测与真值对比’)
subplot(323);plot(t(1:N),measIR2(1:N,2),‘y’);hold; plot(t(1:N),tmeas2(1:N,2),‘g’);ylabel(‘俯仰角/rad’);
subplot(322);plot(t(1:N),measR2(1:N,1),‘y’);hold; plot(t(1:N),tmeas2(1:N,1),‘g’);ylabel(‘方位角/rad’);
subplot(324);plot(t(1:N),measR2(1:N,2),‘y’);hold; plot(t(1:N),tmeas2(1:N,2),‘g’); ylabel(‘俯仰角/rad’);
subplot(326);plot(t(1:N),measR2(1:N,3),‘y’);hold; plot(t(1:N),tmeas2(1:N,3),‘g’);ylabel(‘径向距离/m’);

%图4:
figure(4)
%目标1,2融合值与真值的绝对误差
%A
subplot(321),hold;plot(t,mean(aberror1mf_x)),‘b’;plot(t,mean(aberror1svf_x),‘r’);
subplot(323),hold;plot(t,mean(aberror1mf_y)),‘b’;plot(t,mean(aberror1svf_y),‘r’);
subplot(325),hold;plot(t,mean(aberror1mf_z)),‘b’;plot(t,mean(aberror1svf_z),‘r’);
%B
subplot(322),hold;plot(t,mean(aberror2mf_x)),‘y’;plot(t,mean(aberror2svf_x),‘g’);
subplot(324),hold;plot(t,mean(aberror2mf_y)),‘y’;plot(t,mean(aberror2svf_y),‘g’);
subplot(326),hold;plot(t,mean(aberror2mf_z)),‘y’;plot(t,mean(aberror2svf_z),‘g’);

%图5:
%目标1,2融合值的位置(径向距离)标准差
figure(5)
subplot(211),hold;plot(t,mean(standard1varmf.P),‘b’);plot(t,mean(standard1varsvf.P),‘r’);title(‘目标1位置融合值标准差’)
subplot(212),hold;plot(t,mean(standard2varmf.P),‘y’);plot(t,mean(standard2varsvf.P),‘g’);title(‘目标2位置融合值标准差’)

%图6,目标1,2融合值与真值的三方向误差方差之和
figure(6)
subplot(211),hold;plot(t,mean(Varmf1),‘b’);plot(t,mean(Varsvf1),‘r’);title(‘目标1误差方差之和’)
subplot(212),hold;plot(t,mean(Varmf2),‘y’);plot(t,mean(Varsvf2),‘g’);title(‘目标2误差方差之和’)

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]陈寅,林良明,颜国正.D-S证据推理在信息融合应用中的存在问题及改进[J].系统工程与电子技术. 2000,(11)

[2]邓肯·麦克尼尔.多传感器数据融合:基于卡尔曼滤波和神经网络的方法[M].机械工业出版社, 2005

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值