1 / 23
文档名称:

基于Kalman滤波的信息融合算法设计_控制系统仿真课程设计.docx

格式:docx   页数:23
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于Kalman滤波的信息融合算法设计_控制系统仿真课程设计.docx

上传人:追风少年 2013/9/5 文件大小:0 KB

下载得到文件列表

基于Kalman滤波的信息融合算法设计_控制系统仿真课程设计.docx

文档介绍

文档介绍:控制系统仿真课程设计
题目
控制系统仿真课程设计
学院
专业
班级
学号
学生姓名
指导教师
完成日期
控制系统仿真课程设计
一、题目
基于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滤波估计仿真程序编写;
%
%produce system
clear;
A=1;
P0=100;
X0=10;
C=1;
Q=;
R=10;
%real states and measure states
for k=1:150
W(k)=sqrt(Q)*randn(1,1);
V(k)=sqrt(R)*randn(1,1);
if k==1
X(k)=A*X0+W(k);
Z(k)=C*X(k)+V(k);
else
X(k)=A*X(k-1)+W(k);
Z(k)=C*X(k)+V(k);
end
end
%predict states and estimate states
for k=1:150
if k==1
X_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);
else
X_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);
end
end
%create figure
figure
t=1:150;
plot(t,Z(1,t),'-og')
hold on
plot(t,X_gj(1,t),'r')
hold on
plot(t,X(