matlab_对卡尔曼滤波的仿真实现

matlab_对卡尔曼滤波的仿真实现

ID:12683879

大小:93.50 KB

页数:7页

时间:2018-07-18

matlab_对卡尔曼滤波的仿真实现_第1页
matlab_对卡尔曼滤波的仿真实现_第2页
matlab_对卡尔曼滤波的仿真实现_第3页
matlab_对卡尔曼滤波的仿真实现_第4页
matlab_对卡尔曼滤波的仿真实现_第5页
资源描述:

《matlab_对卡尔曼滤波的仿真实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机实习报告MATLAB对卡尔曼滤波的仿真实现MATLAB对卡尔曼滤波的仿真实现实验目的基于卡尔曼滤波原理,利用matlab针对以下模型编制代码进行仿真1:仿真100次,每次50步。从100次仿真中任选一次,将其对应的状态真值和滤波结果曲线绘制在同一副图上,绘制时选用不同的线型,颜色并进行标注。2:用均方根误差评价算法的精度,均方根误差定义为M为仿真次数,k为离散时间点的索引值,为第j次仿真时第K拍的真值。请绘制出RMSE(k)随k变化的曲线。程序设计程序代码如下:A=zeros(50,100);B=zeros(50,100);C=zeros(50,100);x=0;fori=1:1:

2、100fork=1:1:50x=0.5*x+25*x/(1+x^2)+8*cos(1.2*(i-1))+randn;A(k,i)=x;endendxk=0;P=1;fori=1:1:100fork=1:1:50xkk=0.5*xk+25*x/(1+xk^2)+8*cos(1.2*(k-1));F=1/2+25/(1+xk^2)-50*xk^2/(1+xk^2)^2;P=1+F*P*F;H=xk/10;S=H*P*H+10;K=P*H/S;xk=xkk+K*(xk^2/20+sqrt(10)*randn-xkk^2/20-sqrt(10)*randn);Pk=P-K*S*K;B(k,i)=

3、xk;C(k,i)=Pk;endendD=A-B;Q=zeros(50,1);fork=1:1:50E=D(k,:);sum=0;forj=1:1:100sum=sum+E(j)^2;endRMSE=sqrt(sum/100);Q(k)=RMSE;endm=round(rand*100);subplot(1,2,1);plot(A(:,m),'rx-');holdonplot(B(:,m),'b*:');legend('真值','滤波');title('第一次仿真');subplot(1,2,2);plot(Q);title('RMSE随k变化曲线');输出结果截屏显示为:程序运行中观测

4、截屏程序运行中经过卡尔曼递推后估计值截屏程序运行中经过卡尔曼滤波后观测值与递推估计值比较截屏实验总结1.实验中遇到的问题(1).最初编写代码时将整个过程分为三步,第一步,对模型进行仿真,第二步,编写代码进行卡尔曼递推,第三步,对卡尔曼滤波后观测值与递推估计值比较。前两步由于未将变量和矩阵统一,导致第三步是变量混乱,导致工作量变大,并且经常出错。(2).由于matlab编程实践经验不足和对卡尔曼滤波原理不了解,在编程过程中遇到了很多问题,比如不清楚公式中变量的含义,不能掌握题目的要求,在第三步进行比较是不理解其含义等。(3).实验结果有缺陷,但是没有科学有效的方法进行检查2.实验心得这是在

5、学习matlab课程后第一次着手解决一个实际问题,在这次实习过程中,我发现自己虽然学习过课程但并没有深刻理解这个软件语言的使用方法,所以在遇到问题时不能及时反映出解决办法,需要与同学讨论才能找到思路,并且由于编程经验不足,在编程过程中也犯了很多低级错误,比如在分步编写代码是没有统一变量导致后期花了很多时间在改变变量名称上,而且极易出错。通过这次实习,我深深的体会到了编程解决问题的方便,快捷和它的重要性和必要性,在以后的学习生活中,我会加强在这方面的能力,为以后的学习工作打好基础。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。