欢迎来到天天文库
浏览记录
ID:41574768
大小:69.81 KB
页数:4页
时间:2019-08-28
《卡尔曼滤波算法的简单应用与仿真实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、卡尔曼滤波算法的简单应用与仿真实现卡尔曼滤波算法是一个最优化自回归数据处理算法。对于解决人部分问题,它是最优,效率最高其至是最有用的。它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合,军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如人脸识別,图像分割,图像边缘检测等等。本文首先给出卡尔曼滤波算法的一些必要的理论基础,然后运用卡尔曼滤波算法原理对一个最简单的状态估计问题(室内温度估计)进行仿真实现,值得说明的是,在MATLAB里,卡尔曼滤波算法有专门的函数可以调用,但本文没有直接调用卡尔曼函数,而是
2、根据卡尔曼滤波原理(即递推公式)对这个算法进行编程实现,冃的在于理解卡尔曼滤波算法的实质。1.理论介绍卡尔曼滤波是用前一个状态的估计值和最近一个观测值来估计状态变量的当前值,并以状态变量的估计值的形式给出。卡尔曼滤波具有以下的特点:'(1)算法是递推的,适用于多维随机过程的估计,离散型卡尔曼算法适用于计算机处理。(2)用递推法计算,不需要知道全部过去的值,用状态方程描述状态变量的动态变化规律,因此卡尔曼滤波适用于非平稳过程。(3)卡尔曼滤波采取的误差准则是估计误差的均方值最小。Kalman滤波公式如下:^k=Akxk_i+Hk{yk-C
3、kAkxk_^Hk=PkC;(CkPkC;+Rypk=Akpk-Ak+Qk-PkJ-HkCJP;其中,兔为k时刻状态变量的估计值,乞为滤波增益矩阵,力表示状态变量之间的增益矩阵,例状态变量与输出信号之间的增益矩阵。灿观测值。用为k时刻未经校正的状态变量的估计误差的均方值,即预测误差矩阵,人为k时刻状态变量的估计误差的均方值,即滤波误差矩阵,R为过程噪声矩阵,Q为测量噪声矩阵。2・仿真实现假设我们要研究的对象是一个房间的温度。根据经验判断,这个房间的温度是恒定的,假设你对你的经验不是100%的相信,可能会有上下几度的偏差(即过程噪声)
4、。我们把这些偏差看成是高斯白噪声,也就是这些偏差跟前后时间是没有关系的而且服从高斯分布。另外,我们在房间里放一个温度计,但是这个温度计也不是完全准确的,测量值与实际值之间也会有偏差(即测量噪声)。我们也把这些偏差看成是高斯白噪声。下面我们要用这两个值(根据经验判断的值即前一时刻的状态值与温度计测量值即现时刻的测量值)并结合他们各自的噪声来估算出房间的实际温度值。假设房间的温度是25摄氏度,即初始状态值x(1)为25。仿真程序如下:%UseKalmanclearticN=50;a=1;c=1;x(1)=25;QI=wgn(1,3);Q2=
5、wgn(1,NZ3);fork=2:N;x(k)=a*x(k-1)+QI(k-1);endfork=1:N;Y(k)=254-Q2(k);endP(l)=1;s(1)=0;fort=2:N;%Rww=cov(QI(1:t));%Rvv=cov(Q2(1:t));%Rww=var(QI(1:t));%Rvv=var(Q2(1:t));Rww=10A(-5);Rvv=0・01;Sper(t)=a*s(t-1);pl(t)=4•人2*p(t-1)+Rww;b(t)=c*pl(t)/(c.A2*pl(t)+Rvv);s(t)=a*Sper(t)
6、+b(t)*(Y(t)-a*c*Sper(t));P(t)=pl(t)-c*b(t)*pl(t);endt=1:N;plot(tzs,*r*,t,Y,'g'zt,x(l),*b*);legend(1kalman',*observation'r*truth');toe3.结果分析30kalmanobseastiontruth25201510°o101520253035404550由上图可以得出两个结论:1•卡尔曼滤波的输出(红色曲线所示)在25上下波动,且波动幅度远远小于观测值(绿色曲线所示)的波动幅度,说明卡尔曼滤波算法能很好的估计当前
7、状态值。1.随着时间的推移,卡尔曼滤波的输出越来越接近25,说明随着递推次数的增加,卡尔曼滤波的输出会越来越接近真实的状态值。
此文档下载收益归作者所有