基于kalman滤波的信息融合算法设计控制系统仿真【课程设计】.doc
上传人:天马****23 上传时间:2024-09-13 格式:DOC 页数:26 大小:288KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于kalman滤波的信息融合算法设计控制系统仿真【课程设计】.doc

基于kalman滤波的信息融合算法设计控制系统仿真【课程设计】.doc

预览

免费试读已结束,剩余 16 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

控制系统仿真课程设计题目控制系统仿真课程设计学院专业班级学号学生姓名指导教师完成日期控制系统仿真课程设计一、题目基于Kalman滤波的信息融合算法设计1)学习并掌握线性系统Kalman滤波的基本原理和基本公式;2)学习并掌握一种常用的融合算法;3)学习并利用Matlab软件实现基本的Kalman滤波和信息融合算法的仿真。二、主要要求1)具备基本的概率与数理统计知识;2)熟悉并掌握基本的Matlab软件编写能力;3)学习并掌握正交投影定理和矩阵求逆定理;4)了解Kalman滤波的功能、来源和基本原理;5)掌握Kalman滤波的推导过程和基本运行公式;6)了解信息融合的基本概念和方法;7)掌握一种典型的多传感器信息融合算法:分布式局部估计值加权融合。三、主要内容一)线性系统的Kalman滤波考虑如下一类单传感器线性动态估计系统(1)(2)其中,是离散的时间变量;是系统的状态向量,是系统的状态转移矩阵;是状态的观测向量,是相应的观测矩阵;和是零均值的高斯白噪声过程,且满足如下条件:,(3)初始状态为一随机向量,且满足(4)那么,线性系统的Kalman滤波基本公式如下:计算状态的一步预测值(5)计算一步预测误差协方差阵(6)计算增益阵(7)计算状态估计值(8)和估计误差协方差阵(9)其中和为时刻的状态估计以及相应的估计误差协方差阵。那么,Kalman滤波仿真程序执行方案如下:确定初始状态、初始状态估计和相应的协方差矩阵;给定状态转移矩阵、过程噪声方差、测量矩阵和测量噪声方差(这些量均可认为是常量)产生仿真信号数据从开始循环(L为给定的仿真时刻长度)当时a1)利用和随机函数产生一个高斯白噪声;a2)根据式(1)有;a3)利用和随机函数产生一个高斯白噪声;a4)根据式(2)有。当时b1)利用和随机函数产生一个高斯白噪声;b2)根据式(1)有;b3)利用和随机函数产生一个高斯白噪声;b4)根据式(2)有。开始Kalman滤波估计从开始循环(L为给定的仿真时刻长度)当时a1)根据式(5)和式(6)有,a2)利用式(7)-(9)计算估计和相应的估计误差协方差矩阵。当时b1)根据式(5)和式(6)计算和;b2)利用式(7)-(9)计算估计和相应的估计误差协方差矩阵。问题:给定相应参数(也鼓励采用其他参数),进行Kalman滤波估计算法程序的编写,并进行绘图和分析标量情形:,,,,,,(1)请利用Matlab软件进行Kalman滤波估计仿真程序编写;%mykf.m%producesystemclear;A=1;P0=100;X0=10;C=1;Q=0.1;R=10;%realstatesandmeasurestatesfork=1:150W(k)=sqrt(Q)*randn(1,1);V(k)=sqrt(R)*randn(1,1);ifk==1X(k)=A*X0+W(k);Z(k)=C*X(k)+V(k);elseX(k)=A*X(k-1)+W(k);Z(k)=C*X(k)+V(k);endend%predictstatesandestimatestatesfork=1:150ifk==1X_yc(k)=A*X0;Z_yc(k)=C*X_yc(k);P_yc(k)=A*P0*A'+Q;K(k)=P_yc(k)*C'/(C*P_yc(k)*C'+R);X_gj(k)=X_yc(k)+K(k)*(Z(k)-Z_yc(k));P_gj(k)=(eye(1)-K(k)*C)*P_yc(k);elseX_yc(k)=A*X(k-1);Z_yc(k)=C*X_yc(k);P_yc(k)=A*P_yc(k-1)*A'+Q;K(k)=P_yc(k)*C'/(C*P_yc(k)*C'+R);X_gj(k)=X_yc(k)+K(k)*(Z(k)-Z_yc(k));P_gj(k)=(eye(1)-K(k)*C)*P_yc(k);endend%createfigurefiguret=1:150;plot(t,Z(1,t),'-og')holdonplot(t,X_gj(1,t),'r')holdonplot(t,X(1,t),'b')holdofflegend('观测','估计','状态')xlabel('仿真次数')ylabel('数值')figureplot(abs(Z-X),'-og');holdonplot(abs(X_gj-X));holdofflegend('预测与真实之差','估计与真实之差'