




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
控制系统仿真课程设计(2011级)题目控制系统仿真课程设计学院专业班级学号学生姓名指导教师完成日期2014年6月25日控制系统仿真课程设计一、题目基于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滤波仿真程序执行方案如下:i) 确定初始状态、初始状态估计和相应的协方差矩阵;给定状态转移矩阵、过程噪声方差、测量矩阵和测量噪声方差(这些量均可认为是常量)ii) 产生仿真信号数据从开始循环(L为给定的仿真时刻长度)a) 当时a1) 利用和随机函数产生一个高斯白噪声;a2) 根据式(1)有;a3) 利用和随机函数产生一个高斯白噪声;a4) 根据式(2)有。b) 当时b1) 利用和随机函数产生一个高斯白噪声;b2) 根据式(1)有;b3) 利用和随机函数产生一个高斯白噪声;b4) 根据式(2)有。iii) 开始Kalman滤波估计从开始循环(L为给定的仿真时刻长度)a) 当时a1) 根据式(5)和式(6)有, a2) 利用式(7)-(9)计算估计和相应的估计误差协方差矩阵。b) 当时b1) 根据式(5)和式(6)计算和;b2) 利用式(7)-(9)计算估计和相应的估计误差协方差矩阵。问题:给定相应参数(也鼓励采用其他参数),进行Kalman滤波估计算法程序的编写,并进行绘图和分析1) 标量情形:,(1)请利用Matlab软件进行Kalman滤波估计仿真程序编写;%初始化clear;A=1;P0=100;X0=10;X0_est=1;H=1;Q=0.1;R=8;%产生仿真信号和数据for k=1:100 W(k)=sqrt(Q)*randn(1); %产生高斯白噪声W V(k)=sqrt(R)*randn(1); %产生高斯白噪声V if k=1 X(k)=A*X0+W(k); Z(k)=H*X(k)+V(k); else X(k)=A*X(k-1)+W(k); %状态值 Z(k)=H*X(k)+V(k); %观测向量 endend%Kalman滤波for k=1:100 if k=1 X_yc(k)=A*X0_est; P_yc(k)=A*P0*A+Q else X_yc(k)=A*X(k-1); %状态预测值 P_yc(k)=A*P_gj(k-1)*A+Q; %协方差预测值 end K(k)=P_yc(k)*H*inv(H*P_yc(k)*H+R); %增益矩阵 X_gj(k)=X_yc(k)+K(k)*(Z(k)-H*X_yc(k); %状态估计值 P_gj(k)=(eye(1)-K(k)*H)*P_yc(k); %协方差估计值end%绘制状态估计与状态预测值的曲线图figure(1)hold onplot(X_gj,r);hold onplot(X_yc,-ob);hold onplot(X,-*g);legend(状态估计值,状态预测值,状态)title(状态估计与状态预测值的曲线图)xlabel(仿真次数)ylabel(数值)%绘制预测误差协方差和估计误差协方差曲线figure(2)hold onplot(P_gj,r);hold onplot(P_yc,-ob);legend(估计误差协方差,预测误差协方)title(估计误差协方差与预测误差协方的曲线图)xlabel(仿真次数)ylabel(数值)(2)绘出状态预测值和状态估计值的曲线图;(3)绘出预测误差协方差和估计误差协方差的曲线图;(4)对仿真结果进行分析。预测值和估计值都能够在一定程度上反应真实值,但是估计值比观测值更接近真实值。状态估计值:表明估计值是在预测值的基础上进行优化后得到结果,所以估计值更准确一些。2) 矢量情形:,(1)请利用Matlab软件进行Kalman滤波估计仿真程序编写;%程序初始值clear;A=1 1;0 1;P0=100 10;10 100;x0=1;0.1;X_0=10;1;H=1 0;0 1;Q=0.1 0;0 0.1;R=5 0;0 5;%产生仿真信号数据for k=1:50 W(:,k)=sqrt(Q)*randn(2,1); V(:,k)=sqrt(R)*randn(2,1); if k=1 X(:,k)=A*x0+W(:,k); Z(:,k)=H*X(:,k)+V(:,k); else X(:,k)=A*X(:,k-1)+W(:,k); Z(:,k)=H*X(:,k)+V(:,k); endend %Kalman滤波for k=1:50 if k=1 X_yc(:,k)=A*X_0; P_yc(:,:,k)=A*P0*A+Q; T_yc(k)=trace(P_yc(:,:,k); else X_yc(:,k)=A*X_gj(:,k-1); Z_yc(:,k)=H*X_yc(:,k); P_yc(:,:,k)=A*P_gj(:,:,k-1)*A+Q; T_yc(k)=trace(P_yc(:,:,k); end K(:,:,k)=P_yc(:,:,k)*H*inv(H*P_yc(:,:,k)*H+R); X_gj(:,k)=X_yc(:,k)+K(:,:,k)*(Z(:,k)-H*X_yc(:,k); P_gj(:,:,k)=(eye(2)-K(:,:,k)*H)*P_yc(:,:,k); T_gj(k)=trace(P_gj(:,:,k);end %绘制状态预测值和状态估计值分量一曲线figure(1) k=1:50;plot(k,X_gj(1,k),-or)hold onplot(k,X_yc(1,k),k)hold onplot(k,X(1,k),-*b)hold offlegend(分量一估计,分量一预测,分量状态)xlabel(仿真次数)ylabel(数值)%绘制状态预测值和状态估计值分量二曲线figure(2)plot(k,X_gj(2,k),-ok)hold onplot(k,X_yc(2,k),r)hold onplot(k,X(2,k),-*b)hold offlegend(分量二估计,分量二预测,分量二状态)xlabel(仿真次数)ylabel(数值)%绘制预测误差协方差阵迹和估计误差协方差迹的曲线figure(3)plot(k,T_gj(k),-ok,k,T_yc(k),r)legend(估计,预测)xlabel(仿真次数)ylabel(数值)(2)绘出状态预测值和状态估计值的曲线图(每个状态包括两个分量);图1.1图2.1(3)绘出预测误差协方差阵迹(Trace)和估计误差协方差阵迹的曲线图;图3.1(4)对仿真结果进行分析。分量的估计值比分量的观测值更接近真实值。整个时也是估计值更准确。针对矢量情形,自行选取三组不同的参数进行Kalman滤波的仿真,并进行相应仿真结果的比较分析。改变Q变大(Q=10)改变R增大(R=10)改变H变小(H=0.3)当R的值变小时,预测值的阵迹会变得下坠更快,预测值本身的震荡会减小,对真实值的偏离会变小。当Q的值增大时,估计值也会更加偏离真实值。当H变小时,预测值与真实值偏差变大,估计值与真实值的偏差也会变大。二)基于线性Kalman滤波信息融合算法考虑如下一类多传感器线性动态估计系统 (10), (11)其中,是离散的时间变量,为传感器的数目;是系统的状态向量,是系统的状态转移矩阵;是状态的观测向量,是相应的观测矩阵;和是零均值的高斯白噪声过程,且满足如下条件:, (12)初始状态为一随机向量,且满足 (13)那么,对于每一个传感器观测均可执行一)当中基于单个观测的Kalman滤波估计,可得到个局部估计和相应的估计误差协方差矩阵。从而,可利用分布式加权融合技术将上述个局部Kalman滤波估计进行融合,即: (14)此时,和为融合后的状态估计和相应的融合估计误差协方差矩阵。问题:给定相应参数(也鼓励采用其他参数),进行上述分布式融合算法的仿真给定如下参数:,(1)请利用Matlab软件进行分布式融合估计算法仿真程序编写;%初始化clear;clc;A=1 1;0 1;P0=100 10;10 100;x0=1;0.1;X_0=10;1;H=1 0;0 1;Q=0.1 0;0 0.1;R=4 0;0 4;%观测器一真实数据for k=1:50 W(:,k)=sqrt(Q)*randn(2,1); V1(:,k)=sqrt(R)*randn(2,1); if k=1 X1(:,k)=A*x0+W(:,k); Z1(:,k)=H*X1(:,k)+V1(:,k); else X1(:,k)=A*X1(:,k-1)+W(:,k); Z1(:,k)=H*X1(:,k)+V1(:,k); endend%预测数据和估计数据1for k=1:50 if k=1 X_yc1(:,k)=A*X_0; Z_yc1(:,k)=H*X_yc1(:,k); P_yc1(:,:,k)=A*P0*A+Q; T_yc1(k)=trace(P_yc1(:,:,k); else X_yc1(:,k)=A*X_gj1(:,k-1); Z_yc1(:,k)=H*X_yc1(:,k); P_yc1(:,:,k)=A*P_gj1(:,:,k-1)*A+Q; T_yc1(k)=trace(P_yc1(:,:,k); end K1(:,:,k)=P_yc1(:,:,k)*H/(H*P_yc1(:,:,k)*H+R); X_gj1(:,k)=X_yc1(:,k)+K1(:,:,k)*(Z1(:,k)-Z_yc1(:,k); P_gj1(:,:,k)=(eye(2)-K1(:,:,k)*H)*P_yc1(:,:,k); T_gj1(k)=trace(P_gj1(:,:,k);end%观测器2真实数据for k=1:50 V2(:,k)=sqrt(R)*randn(2,1); if k=1 X2(:,k)=A*x0+W(:,k); Z2(:,k)=H*X2(:,k)+V2(:,k); else X2(:,k)=A*X2(:,k-1)+W(:,k); Z2(:,k)=H*X2(:,k)+V2(:,k); endend %预测数据和估计数据2for k=1:50 if k=1 X_yc2(:,k)=A*X_0; Z_yc2(:,k)=H*X_yc2(:,k); P_yc2(:,:,k)=A*P0*A+Q; T_yc2(k)=trace(P_yc2(:,:,k); else X_yc2(:,k)=A*X_gj2(:,k-1); Z_yc2(:,k)=H*X_yc2(:,k); P_yc2(:,:,k)=A*P_gj2(:,:,k-1)*A+Q; T_yc2(k)=trace(P_yc2(:,:,k); end K2(:,:,k)=P_yc2(:,:,k)*H/(H*P_yc2(:,:,k)*H+R); X_gj2(:,k)=X_yc2(:,k)+K2(:,:,k)*(Z2(:,k)-Z_yc2(:,k); P_gj2(:,:,k)=(eye(2)-K2(:,:,k)*H)*P_yc2(:,:,k); T_gj2(k)=trace(P_gj2(:,:,k);end% 融合for k=1:50 P_rh(:,:,k)=inv(P_gj2(:,:,k)+inv(P_gj1(:,:,k); P_rhgj(:,:,k)=inv(P_rh(:,:,k); T_rhgj(k)=trace(P_rhgj(:,:,k); X_rhgj(:,k)=P_rhgj(:,:,k)*inv(P_gj2(:,:,k)*X_gj2(:,k)+P_rhgj(:,:,k)*inv(P_gj1(:,:,k)*X_gj1(:,k);end %绘制融合状态估计局部1局部2分量一曲线figure(1)t=1:50;plot(t,X_rhgj(1,t),-ok,t,X_gj1(1,t),-*r,t,X_gj2(1,t),-b)legend(融合状态分量一,局部1分量一,局部2分量一)xlabel(仿真次数)ylabel(数值)%绘制融合状态估计局部1局部2分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论