MATLAB-对卡尔曼滤波器的仿真实现_第1页
MATLAB-对卡尔曼滤波器的仿真实现_第2页
MATLAB-对卡尔曼滤波器的仿真实现_第3页
MATLAB-对卡尔曼滤波器的仿真实现_第4页
MATLAB-对卡尔曼滤波器的仿真实现_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXXXX学院电子信息系统仿真 课程设计 届 电子信息工程 专业 班级题 目 卡尔曼滤波器的设计与仿真 姓 名 学号 指导教师 职称 二1 年 月 日MATLAB 对卡尔曼滤波器的仿真实现课程设计目的:曼滤波器原理为理论基础,用MATLAB 进行卡尔曼滤波器仿真、对比卡尔曼滤波器的预测效果,对影响滤波其效果的各方面原因进行讨论和比较,按照理论模型进行仿真编程,清晰地表述了编程过程。关键词:数字信号处理;卡尔曼滤波器;MATLAB;仿真过程2. 卡尔曼滤波基本原理卡尔曼滤波过程实际上是获取维纳解的递推运算过程。从维纳解导出的卡尔曼滤波器实际上是卡尔曼滤波过程结束后达到稳态的情况,这时Kalman Filtering 的结果与Wiener我们总结出卡尔曼的五个核心方程: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)可以看出,滤波过程是以不断地“预测修正”的递推方式进行计算,先进行预测值计算,再根据观测值得到的新信息和kalman 增益(加权项),对预测值进行修正。由滤波值可以得到预测,又由预测可以得到滤波,其滤波和预测相互作用,并不要求存储任何观测数据,可以进行实时处理。3. 程序设计卡尔曼滤波器给出了一个应用状态变量概念的公式。而且,不同于其他的递归滤波器结构,它只需要记住一步的估计结果。考虑过程噪声和测量噪声两个随机变量的状态模型称为随机状态模型。用下面两个方程描述离散状态模型:1)过程方程: x(k +1) = Ax(k) + Bu(k) + w(k)其中,w(k)是由于过程模型的不确定性而产生的模型噪声,它可能是最难量化的参数。2)输出方程: y(k) = Cx(k) + v(k)其中,v(k)是测量噪声。3)过程状态估计状态估计分为两步,如图所示: 图(2)一个是两个采样周期之间的状态转移阶段,这个阶段叫做TU(Time Update)阶段:x (k | k 1) = Ax (k 1) + Bu(k 1);另一个是获得 y(k)的时刻过程状态更新阶段,这个阶段叫MU(Measurement Update)阶段4)噪声过程卡尔曼估计滤波器可以根据控制信号u(k)和测量输出( ) b y k ,来估计过程输出y(k)和状态变化x(k)。需要的先验知识包括噪声w(k)、v(k)的方差,以及如果不为零时它们的互相关性。过程描述如下图: 图(3)x = Ax + b(u + w)这个式子是有两个输入u(t)和w(t)的状态空间描述,可用ss 函数来计算。% Process state representationProcess=ss (Ad, Bd Bd), C, 0, Te, inputname,uw, outputname,y;w(t)和v(t)的方差分别为Q和R。N 为w(t)和v(t)的互相关矩阵。卡尔曼函数根据Q、R、N 和过程状态描述计算卡尔曼估计滤波器。在这个例子中,模型噪声和测量噪声不相关,即N = 0。% noisesn=100;w=0.1*randn(n,1);v=0.3*randn(n,1);Q=std(w).2;R=std(v).2;Wv=cov(v,w);N=wv(1,2);% kalman estimatorF_kalman,L,P,M=kalman(process,Q,R);模型描述+测量噪声+卡尔曼滤波器 系统结构框图图(4)建立包含测量噪声的一般模型的状态空间描述% State representation process + measurement noisea=Ad;b=Bd Bd 0;0;c=C C;d=0 0 0;0 0 1;process=ss (a,b,c,d,Te,inputname),u w v, outputname,y yb)然后把这个过程和卡尔曼滤波器联系起来,得到整个过程的状态空间函数 parallel 用来把卡尔曼滤波器和过程联系起来。然后,函数feedback 用来创建把过程输出b y 当作卡尔曼滤波器输入的反馈环节,最后由状态模型得到输出。% Parallel placing process + kalman filterSysp=parallel (process, F_kalman,1,1, , );% yv feedbackSyspb= feedback (sysp,1,4,2,1);% yv input cancellationSyspb=syspb (1 2 3 4 5, 1 2 3);4. 仿真结果:控制信号图(5)模拟噪声 图(6) 测量噪声 图(7)下面分别为有噪声过程和无噪声过程曲线:有噪声过程曲线图(8)无噪声过程曲线 图(9)5. 误差分析计算各个误差以及误差方差。% Errors variance calculation% Modeling noisePlot (t,yp-outputs (:,1);Title (Modeling noise);ec1=std (yp-outputs (:,1)% Modeling and measurement noisesPlot (t,yp-outputs (:,2);Title (Modeling and measurement noises);ec2=std (yp-outputs (:,2)%Filtered processPlot (t,yp-outputs (:,3);Title (Filtered process);ec3=std (yp-outputs (:,3)各个误差的图形如下:误差方差为:ec1=0.0637图(10)误差方差为:ec2=0.3204 图(11)误差方差为:ec3=0.0136图(12)估计输出信号的误差方差约为测量输出信号误差方差的 1/23,约为无测量噪声时输出信号误差方差的1/15。6. 结论卡尔曼滤波器是一种由卡尔曼提出的用于时变线性系统的递归滤波器。这个系统可用包含正交状态变量的微分方程模型来描述,这种滤波器是将过去的测量估计误差合并到新的测量误差中来估计将来的误差。我刚刚接触这个叫做卡尔曼滤波器的东东时,真正的体验是雾里看花,为什么是这样一种感觉?现在我想起庞加莱谈拓扑学说过的一段话:“拓扑学是一门科学,它不仅能使我们认识通常空间中几何图形的定性性质,在三维空间中,拓扑学是近乎直观的,反之,对于高于三维的空间,拓扑学就显得难以捉摸了,为了克服这一点,需要对这门科学的极端重要性确定坚定的信念,如果这种重要性尚未为人所认识,那实在是因为人们对此还没有仔细想过。”这段话我看来是刻划了一种认识事物的方法,很多时候会觉得有些道理真是莫名其妙,就是没有仔细想过,对没有仔细想过的东西下错误的结论事后自己都觉得脸红。本文分析了数字滤波器的设计方法,举出了基于MATLAB 软件的信号处理工具在数字滤波器设计中的应用。卡尔曼滤波由于其在求解时不需要贮存大量的观测数据,并且当得到新的观测数据时,可随时算得新的参数滤波值,便于实时地处理观测成果,因此,卡尔曼滤波被越来越多地应用于动态数据处理中,尤其是GPS 动态数据处理,惯性导航等。本文以MATLAB6.0 为例,介绍卡尔曼滤波器的设计方法,目的是为了熟悉卡尔曼滤波器算法及实现,用MATLAB 进行卡尔曼滤波器仿真、对比卡尔曼滤波器的预测效果。参考文献(1) 薛年喜 MATLAB在数字信号处理中的应用(第2版) 清华大学出版社 2008年一月(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论