matlab 滤波_MATLAB之简单卡尔曼滤波
卡尔曼滤波在控制中是一种常用的且非常有效的算法,前段时间在学习使用之后加深了对其的认识,滤波后的数据着实令我大吃一惊,今天我用MATLAB进行了一个简单的仿真,分享给大家一起来学习。
在这节教程中还包含了一些文件数据的读写操作,可以一并学习。
首先我们新建一个表格,在表格中定义实际值和测量值。
这里我做了50次的数据,其中DATE为真实值,Z为测量值,HAT为将要保存的估计值。
接下来打开MATLAB,我们先规定一个测量误差,我这里假设为3,当然前面表格中填写的测量值也要满足这个结果。
MEAK就是我规定的测量误差。
接下来我们假设一个我们认为的估计误差MEAK,我这里假设为5,再估计一个估计值,我这里估计为40.
接下来我们导入表格中的测量数据。
这里使用xlsread这个函数,其中第一个参数为表格文件的名称,第二个数据为要使用的数据范围,将这些数据存储到数组Z中。
下面我们需要知道一些公式:
系数K(i) = ESTK(i) /ESTK(i-1)+MEAK(i)
估计值HAT(i) = HAT(i-1) + K(i)*(Z(i)-HAT(i-1))
估计误差ESTK(i) = (1-K(i))*ESTK(i-1)
因为第一个数据是我们自己估计的,从第二个数据开始需要带入公式去计算,所以需要循环使用公式49次:
这里同时注意for语句的使用。
到这里我们已经将50组数据的估计值计算出来了,在下面的命令行窗口中可以观察到相应数据。
我们可以将这些数据写到刚才的表格中:
因为在MATLAB我们定义的数组为行向量,我们要写道表格的一列中去,所以我们需要转置一下,将其变为行向量,HAT‘即为转置后的结果。
我们查看一下表格:
成功写入指定位置。
为了更加直观的看出卡尔曼滤波的效果,我们来将其图像画出来,先来看看测量值的图像:
可见测量值是非常不规则,浮动比较大的。
下面我们看一下估计值:
可见虽然我们一开始给的估计值误差比较大,为百分之二十,但是之后的数据在逐渐逼近准确值50.
我们将图像放到一起来看一下:
在画完第一张图后使用hold on命令,可以使下一张图显示在一起,结束后使用hold off即可开始新的绘制。
可见从第7个数据开始,数据就已经接近了真实值,其速度是非常快的,从这张图像中可以非常直观的看出卡尔曼滤波的效果。而且一次的数据只需要前一次的数据进行计算,可见使用卡尔曼滤波进行数据处理是非常方便准确的。
下面附上整个代码:
MEAK = 3ESTK(1) = 5HAT(1) = 40Z = xlsread('KEM.xlsx','B2:B51')
for i=1:49 K(i+1) = ESTK(i)/(ESTK(i)+MEAK) HAT(i+1) = HAT(i) + K(i+1)*(Z(i+1)-HAT(i)) ESTK(i+1) = (1-K(i+1))*ESTK(i)end
xlswrite('KEM.xlsx',HAT','C2:C51')
figure(1)plot(Z)hold onplot(HAT)hold onplot(S)hold onplot([0,20],[50,50])hold offgrid on
##以上就是本节的全部内容,后续内容会逐渐上传,相关源码也会统一上传,也可以到公众号私聊我要。
##本节内容已上传博客,请查看。
https://blog.csdn.net/weixin_44936771/article/details/109407602
##不足之处请及时指出,相互学习
##不懂得小伙伴可以公众号私信我,看到后会回复的,欢迎交流学习!
长按图片关注
点点“在看”
matlab 滤波_MATLAB之简单卡尔曼滤波相关推荐
- 从贝叶斯滤波理论到容积卡尔曼滤波算法(CKF)详细推导及编程实现常转弯率模型估计。(matlab)
容积卡尔曼滤波(CKF)是由加拿大学者Arasaratnam和Haykin在2009年提出的.该算法的核心思想是针对非线性高斯系统,通过三阶球面径向容积准则来近似状态的后验均值和协方差,以保证在理论上 ...
- matlab 2009a使用教程,实验一 安装MATLAB R2009a软件及其简单操作
实验一安装MATLAB R2009a软件及其简单操作 一.实验目的 1.掌握MATLAB R2009a软件的安装. 2.熟悉启动和退出matlab的方法. 3.熟悉matlab命令窗口的组成. 4.掌 ...
- 2020-12-18 Matlab LQR 推导及简单应用
Matlab LQR 推导及简单应用 本文主要介绍LQR的直观推导,说明LQR目标函数J选择的直观含义以及简单介绍矩阵Q,R的选取,最后总结LQR控制器的设计步奏,并将其应用在一个简单的倒立摆例子上. ...
- MATLAB 数字图像处理---车牌简单识别【亲测有效】
文章内容:利用 MATLAB 对图像进行简单处理,包括图像的模糊.锐化.和直方图均衡化:对图像进行边缘检测:并对利用 MATLAB 对图像中的数字提取识别. 目录 1 MATLAB 对图像进行简单处理 ...
- matlab程序 如何使用,如何使用MATLAB创建一个最简单的程序
<如何使用MATLAB创建一个最简单的程序>由会员分享,可在线阅读,更多相关<如何使用MATLAB创建一个最简单的程序(4页珍藏版)>请在人人文库网上搜索. 1.如何使用MAT ...
- matlab实现的一个简单动画
matlab实现的一个简单动画 全部代码 clc;%清屏 ysy=figure('name','猪猪女孩');%标题 axis([0 80 0 80]); hold on; axis off; set ...
- matlab滤波实验,卡尔曼滤波实验及matlab实现
<卡尔曼滤波实验及matlab实现>由会员分享,可在线阅读,更多相关<卡尔曼滤波实验及matlab实现(8页珍藏版)>请在人人文库网上搜索. 1.实验一 卡尔曼滤波一. 实验目 ...
- matlab肌电信号平滑滤波_MATLAB图像处理:43:用高斯平滑滤波器处理图像
本示例说明了如何使用imgaussfilt来对图像应用不同的高斯平滑滤波器.高斯平滑滤波器通常用于降低噪声. 将图像读入工作区. I = imread('cameraman.tif'); 使用各向同性 ...
- matlab调和均值滤波_matlab均值滤波(原创).doc
matlab均值滤波(原创) clear all;close all;P=input('input picture data:');d=size(P);if(d(3)>1) P=rgb2gray ...
最新文章
- linux mysql 客户端编码设置_mac和linux下mysql字符集设置问题
- 优化案例(part4)--A novel consensus learning approach to incomplete multi-view clustering
- js多层对象数组 合并_13个你必须知道的JS数组技巧
- Linux 抓包工具:tcpdump
- 我的docker随笔5:docker-compose的安装与使用
- python之show、hide、slidedonw、slideup方法实例
- 中国科技统计年鉴Excel版本(1991-2021年)
- 科比退役原因-数据分析
- oracle 本地数据库卸载,完美卸载Oracle数据库
- chrome浏览器 下载网页视频的方法
- 学习编程从哪里开始比较好呢?有什么推荐?
- 码流格式: Annex-B, AVCC(H.264)与HVCC(H.265), extradata详解
- W99、阿里大学征服路 - W系列总纲
- css3上箭头怎么写,纯css作箭头
- 知识付费对接微信公众号订阅消息
- table自定义表格样式
- iphon13是双卡双待吗 苹果13是5g吗
- 服务器容器化-docker(全)
- 联合办公空间该如何继续发展?
- python timedelta() 和relativedelta()的区别
热门文章
- junit 内部类测试_Springboot 使用单元测试
- php memcached get,PHP Memcached操作类
- 阅读器xodo_佐道Xodo——手机最佳pdf阅读器
- decode函数吗 jsp_JSP中js传递和解析URL参数以及中文转码和解码问题
- springboot redis 断线重连_Redis的主从复制是如何做的?复制过程中也会产生各种问题?...
- java常用类的方法,java常用类的使用方法
- python自增_关于 python 的自增运算
- 本地操作HDFS报错:java.net.ConnectException: Call From KevinWong/192.168.16.1 to hadoop000:9000
- mybatis 处理参数ListString[]
- 还在搜百度图片?太LOW了!