卡尔曼滤波在控制中是一种常用的且非常有效的算法,前段时间在学习使用之后加深了对其的认识,滤波后的数据着实令我大吃一惊,今天我用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之简单卡尔曼滤波相关推荐

  1. 从贝叶斯滤波理论到容积卡尔曼滤波算法(CKF)详细推导及编程实现常转弯率模型估计。(matlab)

    容积卡尔曼滤波(CKF)是由加拿大学者Arasaratnam和Haykin在2009年提出的.该算法的核心思想是针对非线性高斯系统,通过三阶球面径向容积准则来近似状态的后验均值和协方差,以保证在理论上 ...

  2. matlab 2009a使用教程,实验一 安装MATLAB R2009a软件及其简单操作

    实验一安装MATLAB R2009a软件及其简单操作 一.实验目的 1.掌握MATLAB R2009a软件的安装. 2.熟悉启动和退出matlab的方法. 3.熟悉matlab命令窗口的组成. 4.掌 ...

  3. 2020-12-18 Matlab LQR 推导及简单应用

    Matlab LQR 推导及简单应用 本文主要介绍LQR的直观推导,说明LQR目标函数J选择的直观含义以及简单介绍矩阵Q,R的选取,最后总结LQR控制器的设计步奏,并将其应用在一个简单的倒立摆例子上. ...

  4. MATLAB 数字图像处理---车牌简单识别【亲测有效】

    文章内容:利用 MATLAB 对图像进行简单处理,包括图像的模糊.锐化.和直方图均衡化:对图像进行边缘检测:并对利用 MATLAB 对图像中的数字提取识别. 目录 1 MATLAB 对图像进行简单处理 ...

  5. matlab程序 如何使用,如何使用MATLAB创建一个最简单的程序

    <如何使用MATLAB创建一个最简单的程序>由会员分享,可在线阅读,更多相关<如何使用MATLAB创建一个最简单的程序(4页珍藏版)>请在人人文库网上搜索. 1.如何使用MAT ...

  6. matlab实现的一个简单动画

    matlab实现的一个简单动画 全部代码 clc;%清屏 ysy=figure('name','猪猪女孩');%标题 axis([0 80 0 80]); hold on; axis off; set ...

  7. matlab滤波实验,卡尔曼滤波实验及matlab实现

    <卡尔曼滤波实验及matlab实现>由会员分享,可在线阅读,更多相关<卡尔曼滤波实验及matlab实现(8页珍藏版)>请在人人文库网上搜索. 1.实验一 卡尔曼滤波一. 实验目 ...

  8. matlab肌电信号平滑滤波_MATLAB图像处理:43:用高斯平滑滤波器处理图像

    本示例说明了如何使用imgaussfilt来对图像应用不同的高斯平滑滤波器.高斯平滑滤波器通常用于降低噪声. 将图像读入工作区. I = imread('cameraman.tif'); 使用各向同性 ...

  9. matlab调和均值滤波_matlab均值滤波(原创).doc

    matlab均值滤波(原创) clear all;close all;P=input('input picture data:');d=size(P);if(d(3)>1) P=rgb2gray ...

最新文章

  1. linux mysql 客户端编码设置_mac和linux下mysql字符集设置问题
  2. 优化案例(part4)--A novel consensus learning approach to incomplete multi-view clustering
  3. js多层对象数组 合并_13个你必须知道的JS数组技巧
  4. Linux 抓包工具:tcpdump
  5. 我的docker随笔5:docker-compose的安装与使用
  6. python之show、hide、slidedonw、slideup方法实例
  7. 中国科技统计年鉴Excel版本(1991-2021年)
  8. 科比退役原因-数据分析
  9. oracle 本地数据库卸载,完美卸载Oracle数据库
  10. chrome浏览器 下载网页视频的方法
  11. 学习编程从哪里开始比较好呢?有什么推荐?
  12. 码流格式: Annex-B, AVCC(H.264)与HVCC(H.265), extradata详解
  13. W99、阿里大学征服路 - W系列总纲
  14. css3上箭头怎么写,纯css作箭头
  15. 知识付费对接微信公众号订阅消息
  16. table自定义表格样式
  17. iphon13是双卡双待吗 苹果13是5g吗
  18. 服务器容器化-docker(全)
  19. 联合办公空间该如何继续发展?
  20. python timedelta() 和relativedelta()的区别

热门文章

  1. junit 内部类测试_Springboot 使用单元测试
  2. php memcached get,PHP Memcached操作类
  3. 阅读器xodo_佐道Xodo——手机最佳pdf阅读器
  4. decode函数吗 jsp_JSP中js传递和解析URL参数以及中文转码和解码问题
  5. springboot redis 断线重连_Redis的主从复制是如何做的?复制过程中也会产生各种问题?...
  6. java常用类的方法,java常用类的使用方法
  7. python自增_关于 python 的自增运算
  8. 本地操作HDFS报错:java.net.ConnectException: Call From KevinWong/192.168.16.1 to hadoop000:9000
  9. mybatis 处理参数ListString[]
  10. 还在搜百度图片?太LOW了!