《数学实验》综合实验报告实验名称综合实验(Kalman滤波)2016年 5月一、【实验目的】明白滤波计算流程能够调用相关函数进行数据处理使用循环函数和二维曲线画图有效的构建仿真模型,产生模拟数据二、【实验原理分析】卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。
对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。
它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。
近来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
设系统可用一个线性随机微分方程来描述:X(k)=A X(k-1)+B U(k)+W(k)再加上系统的测量值:Z(k)=H X(k)+V(k)上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。
A和B是系统参数,对于多模型系统,他们为矩阵。
Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。
W(k)和V(k)分别表示过程和测量的噪声。
他们被假设成高斯白噪声,他们的协方差分别是Q,R(这里假设他们不随系统状态变化而变化)。
对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。
首先要利用系统的过程模型,来预测下一状态的系统。
假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1)=A X(k-1|k-1)+B U(k) (1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的协方差还没更新。
我们用P表示协方差:P(k|k-1)=A P(k-1|k-1) A'+Q (2)式(2)中,P(k|k-1)是X(k|k-1)对应的协方差,P(k-1|k-1)是X(k-1|k-1)对应的协方差,A'表示A的转置矩阵,Q是系统过程的协方差。
式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。
现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。
结合预测值和测量值,我们 2可以得到现在状态(k)的最优化估算值X(k|k):X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) (3)其中Kg为卡尔曼增益(Kalman Gain):Kg(k)= P(k|k-1) H' / (H P(k|k-1) H' + R) (4)到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。
但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的协方差:P(k|k)=(I-Kg(k) H)P(k|k-1) (5)其中I 为1的矩阵,对于单模型单测量,I=1。
当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。
这样,算法就可以自回归的运算下去。
、MATLAB中已经给出了滤波函数,以下为直接调用方法:设线性系统为其调用格式为[ kest, L, P]=kalman (sys, Qn, Rn, Nn)[ kest, L, P]=kalman(sys, Qn, Rn, Nn, sensors, known)[kest,L,P,M,Z]=kalman(sys,Qn,Rn,Nn)最后一种调用格式只限于离散系统。
三、【实验内容及数据来源】已知离散系统表示状态量x的第二个分量。
e与v是互不相关的高斯白第一式为系统方程,第二式为观测方程,噪声。
的真值,由此系统方程构造出k=1,2,…30的数据,构造时加上系统噪声干扰,再由假设观测方程构造出观测数据并加观测噪声干扰,并以此作为仿真数据。
用Kalman滤波对仿真数据进行滤波处理,并与真实结果比较。
3【实验程序】四、%%%%%%%系统描述%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x[n+1]=Ax[n]+Bu[n]+Gw[n]% y[n]=Cx[n]+Du[n]+Hw[n]+v[n] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%状态转移矩阵%A=[0.49 0.298 0.4120.401 -0.391 0.391-0.992 0.401 0.296];矩阵% B B=zeros(3,3);矩阵% G G=eye(3,3);向量% C矩阵 C=[0 1 0];D=[0 0 0];H=zeros(1,3);状态向量初值(真值)%x(:,1)=[10.9 8.481 -4.3]';状态向量初始估计值%guji=[20.1 21.3 20.7]';% 进入循环 for i=2:30正态分布数据产生 %c w=randn(3,1);v=randn(1,1);4%真实数据x(:,i)=A*x(:,i-1);%人为制造系统误差x1(:,i)=x(:,i)+w;Qn=eye(2,2);Rn=1;Nn=0;%人为制造观测数据的误差z0(:,i)=C*x1(:,i)+v;%建立Kalman的系统参数sys=ss(A,[B,G],C,[D,H],-1);[kest,L,P,M,Z]=kalman(sys,Qn,Rn,Nn);%得到估计数据guji(:,i)=A*guji(:,i-1)+L*(z0(:,i)-C*A*guji(:,i-1)); endsubplot(2,2,1)% 做出真值曲线 x1plot(x(1,:))hold on% 做出在噪声污染情况下的滤波估计值曲线 x1plot(guji(1,:),':m')hold offlegend('real of x1','estimate of x1')gridsubplot(2,2,2)% 做出真值曲线 x2plot(x(2,:))hold on% 做出在噪声污染情况下的滤波估计值曲线 x2plot(guji(2,:),':m')5hold offlegend('real of x2','estimate of x2')gridsubplot(2,2,3:4)% 做出真值曲线 x2plot(x(3,:))hold on% 做出在噪声污染情况下的滤波估计值曲线 x3plot(guji(3,:),':m')hold offlegend('real of x1','estimate of x1')grid五、【实验结果】为了阐述kalman滤波的基本计算思路,在试验中选择了最简单的一种系统模型,线性定常动力系统。
在实际应用中很多时候面对的都是非线性而且时变系统,这有时候性质要复杂一些。
最后的结果信息我们反映在图9.2中,这只是结果的直观反应,更多的时候需要的是计算结果。
表9.1中给出了真实的运动轨迹。
6Kalman滤波处理的与真实值的比较1.1 图真实的运动状态数1.17,可以看出在序列靠后的地方真实1.21.1与表表1.2给出了三个分量的滤波处理结果。
如果对比表8【实验心得】六、中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。
它可以提供了一组绘制MATLAB内部还包含丰富的数学函数TLAB二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。
MA 和数据类型,使用方便且功能非常强大。
的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计本学期通过对MA TLAB的实用方法。
通过老师的讲解与自己上机的操作,使我在短时算及符号运算的学习,初步掌握了MA TLAB,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计间内学会使用MATLAB 简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。
是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可MATLAB 以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。
——郑蕊作为一门编程语言,其简易程度超过了大多数的计算机高级语言,作为一名计算机专业的学MATLAB生,我深深感受到了这门语言的简洁与方便,语法和自然语言更为贴近,简便易学,功能强大,能够用其所以感觉作为我们的计算的工具,MATLAB而且我们的数值计算就是用进行绝大多少的数学计算与绘图。
等多种主流编程语言程序运行,兼容性很好。
用它进行java这门课程多我的帮助很大,而且可以将其接入数值分析计算,大大的方便了我们的任务的进行。
的许多基础入门知识,我以后继续学习熟练使总之,通过这学期为数不多的学习,我掌握了MA TLAB用它进行问题分析解决打下了良好的基础。
俗话说,万事开头难,感谢这门课称帮助我踏入数学问题分析计算的新高度。
——周其飞这门课时,我的内心是疑惑的,数学,还能有什么实验?在进入课堂之后才感”“数学实验刚开始看到受到这门课深重的意义。
与数学实验有了一个全新的认识,其次是对matlabmatlab通过实验使我学习掌握了许多知识。
首先是对的处理能力有了一个更高的飞跃尤的更多操作和命令的使用有了更好的掌握,最重要的事对matlabmatlab 其是对相关函数的使用及相关问题的处理。
9matlabmatlab功能强大而又简单容易上手,通过短短几周的学习我们便掌握了它的基本操作及命令。
利用的绘图功能更是将原本抽进行矩阵和数组的运算使得原本复杂的矩阵运算化身为几行代码,而利用matlab在求导、积分方面也颇有功用。
数学matlab象的复杂函数图像显现出来并自主加以修饰,让人一目了然。
软件处理数学问题,将我matlab本身是一门科学,其目的不是在于计算,而在于深入的探索与发现。
利用带给我的影响远不止于此,matlab们从枯燥复杂的计算工作中解放出来,大大提高了我们实验研究的效率。
将成为一个必备的工具。
在接下来的学习中的每一门课,matlab ——赵冠晨【参考文献】:(1)《Optimal State Estimation》,作者:Dan Simon(2) 《卡尔曼滤波与组合导航原理》,作者:秦永元(3) 《数值计算方法》,主编:颜兵兵10。