资源描述:
《卡尔曼滤波实验及matlab实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一卡尔曼滤波一、实验目的1、了解卡尔曼滤波的准则和信号模型,以及卡尔曼滤波的应用。2、熟练掌握卡尔曼滤波的递推过程,提高对信号进行处理的能力。3、分析讨论实际状态值和估计值的误差。二、实验原理1、卡尔曼滤波简介卡尔曼滤波是解决以均方误差最小为准则的最佳线性滤波问题,它根据前一个估计值和最近一个观察数据来估计信号的当前值。它是用状态方程和递推方法进行估计的,而它的解是以估计值(常常是状态变量的估计值)的形式给出其信号模型是从状态方程和量测方程得到的。卡尔曼过滤中信号和噪声是用状态方程和测量方程来表示的。因此设计卡尔
2、曼滤波器要求已知状态方程和测量方程。它不需要知道全部过去的数据,采用递推的方法计算,它既可以用于平稳和不平稳的随机过程,同时也可以应用解决非时变和时变系统,因而它比维纳过滤有更广泛的应用。2、卡尔曼滤波的递推公式………(1)………(2)………(3)………(4)3、递推过程的实现如果初始状态的统计特性及已知,并令又将代入式(3)可求得,将代入式(2)可求得,将此代入式(1)可求得在最小均方误差条件下的,同时将代入式(4)又可求得;由又可求,由又可求得,由又可求得,同时由与又可求得……;以此类推,这种递推计算方法用计算机
3、计算十分方便。三、实验器材1、计算机一台2、MATLAB软件一套四、实验内容一个系统模型为同时有下列条件:(1)初始条件已知且有。(2)是一个标量零均值白高斯序列,且自相关函数已知为。另外,我们有下列观测模型,即且有下列条件:(3)和是独立的零均值白高斯序列,且有(4)对于所有的j和k,与观测噪声过程和是不相关的,即我们希望得到由观测矢量,即估计状态矢量的卡尔曼滤波器的公式表示形式,并求解以下问题:(a)求出卡尔曼增益矩阵,并得出最优估计和观测矢量之间的递归关系。(b)通过一个标量框图(不是矢量框图)表示出状态矢量中
4、元素和估计值的计算过程。(c)用模拟数据确定状态矢量的估计值并画出当k=0,1,…,10时和的图。(a)通常,状态矢量的真实值是得不到得。但为了用作图来说明问题,表P8.1和P8.2给出来状态矢量元素得值。对于k=0,1,…,10,在同一幅图中画出真实值和在(c)中确定的的估计值。对重复这样过程。当k从1变到10时,对每一个元素i=1,2,计算并画出各自的误差图,即。(b)当k从1变到10时,通过用卡尔曼滤波器的状态误差协方差矩阵画出和,而,。(c)讨论一下(d)中你计算的误差与(e)中方差之间的关系。五、实验结果分
5、析(a)卡尔曼增益矩阵:估计值与观测值之间的递归关系为:(b)状态矢量估计值的计算框图:++(c)和的图:(d)真实值与估计值的比较图:各自的误差图:(e)通过用卡尔曼滤波器的状态误差协方差矩阵画出的和:(f)分析:(e)中的方差是(d)中的误差平方后取均值,是均方误差。误差直接由真实值减去估计值,有正有负,而均方误差没有这个缺陷,更能综合的表示滤波的效果。附程序:%卡尔曼滤波实验程序clc;y1=[3.,3.,7.,9.,11.,15.,22.,28.,30.,38.];%观测值y1(k)y2=[2.,0.,3.,
6、2.,2.,6.,5.,3.,5.,4.];%观测值y2(k)p0=[1,0;0,1];p=p0;%均方误差阵赋初值Ak=[1,1;0,1];%转移矩阵Qk=[1,0;0,1];%系统噪声矩阵Ck=[1,0;0,1];%量测矩阵Rk=[1,0;0,2];%测量噪声矩阵x0=[0,0]';xk=x0;%状态矩阵赋初值fork=1:10Pk=Ak*p*Ak'+Qk;%滤波方程3Hk=Pk*Ck'*inv(Ck*Pk*Ck'+Rk);%滤波方程2yk=[y1(k);y2(k)];%观测值xk=Ak*xk+Hk*(yk-Ck
7、*Ak*xk);%滤波方程1x1(k)=xk(1);x2(k)=xk(2);%记录估计值p=(eye(2)-Hk*Ck)*Pk;%滤波方程4pk(:,k)=[p(1,1),p(2,2)]';%记录状态误差协方差矩阵endfigure%画图表示状态矢量的估计值subplot(2,1,1)i=1:10;plot(i,x1(i),'k')h=legend('x1(k)的估计值')set(h,'interpreter','none')subplot(2,1,2)i=1:10;plot(i,x2(i),'k')h=legend
8、('x2(k)的估计值')set(h,'interpreter','none')X1=[0,1.,3.,5.,9.,12.,16.,21.,25.,31.,36.];%由模拟得到的实际状态值X1(k)X2=[0,1.,1.,2.,3.,3.,4.,4.,4.,5.,5.];%由模拟得到的实际状态值X2(k)figure%在同一幅图中画出状态矢量