文章目录

  • Part.I 问题&解决方案
    • Chap.I 解决方案
    • Chap.II 建模与分析
  • Part.II 简单实现

参考&引用
[1] 严老师捷联惯导课程视频:https://www.bilibili.com/video/BV177411K7sS/
[2] 【卡尔曼滤波】离散线性系统的卡尔曼滤波:https://blog.csdn.net/Gou_Hailong/article/details/123050594

Part.I 问题&解决方案

ps: 之前想做的 Kalman 滤波的实例今天终于有时间做了!

问题描述:某房间内温度受随机干扰影响,每小时用温度计测量一次温度,试对该房间温度作最佳估计(单位℃) ;假设:干扰 W∼N(0,0.42)W∼N(0,0.4^2)W∼N(0,0.42) ,温度计的量测误差 V∼N(0,0.32)V∼N(0,0.3^2)V∼N(0,0.32) 单位都是℃,假设 t1t_1t1​ 时刻房间的温度是 25±0 ℃,在 t2,t3t_2,t_3t2​,t3​ 时刻分别用温度计量测的温度为 25.2, 25.5 ℃,求 t2,t3t_2,t_3t2​,t3​ 时刻房间的真实温度。

Chap.I 解决方案

估计流程如下所示:

计算过程如下:

Chap.II 建模与分析

对上面的问题进行建模如下:
Xk=Xk−1+Wk−1X_k=X_{k-1}+W_{k-1}Xk​=Xk−1​+Wk−1​
Zk=Xk+VkZ_k=X_k+V_kZk​=Xk​+Vk​

  • 上面第一个式子的含义:这一时刻房间真实温度=上一时刻的房间温度+这段时间的干扰项
  • 上面第二个式子的含义:这一时刻的房间温度量测值=这一时刻房间的真实温度+量测误差(噪声)
  • 模型目的就是根据上一时刻房间的真实温度、干扰、这一时刻的量测值、量测噪声,求这一时刻的房间真实温度。

一些思考与讨论

  • 如果W=0,换言之干扰项为零,这个房间的温度是恒定不变的,但是房间温度的初值不知道,这就完全取决于量测噪声的影响了。这就类似于拿一个尺子,多次量测一个固定长度的桌子,最优解就是多次量测取均值,并且量测次数越多,最后得到的精度越高。
  • 如果V=0,换言之温度计足够精准,那么温度计的量测值就是房间的真实温度!这种情况下就不需要这套估计理论了。实际上,量测误差总会存在的,绝对精准的仪器是不存在的。

Part.II 简单实现

下面对上面的问题用python简单实现了一下:

import mathdef perdict(x1_1,W):''' Predict '''x=x1_1[0]+W[0]      # I'm not sure about thissigma=math.sqrt(x1_1[1]**2+W[1]**2)return [x,sigma]def estimate(x2_1,z):''' Estimate '''x=x2_1[0]*z[1]**2/(z[1]**2+x2_1[1]**2)+z[0]*x2_1[1]**2/(z[1]**2+x2_1[1]**2)sigma=math.sqrt(1/((1/x2_1[1])**2+(1/z[1])**2))return [x,sigma]def print_result(x2_1,x2_2):''' Print formatting '''str1="Predict: "+"%.2f" %x2_1[0]+'±'"%.2f" %x2_1[1]+'; 'str1+="Estimate: "+"%.2f" %x2_2[0]+'±'"%.2f" %x2_2[1]+' 'print(str1)def process(time,x1_1,w,z2):''' process for one epoch '''x2_1=perdict(x1_1,w)x2_2=estimate(x2_1,z2)print('t_{} '.format(time),end="")print_result(x2_1,x2_2)return x2_2x1_1=[25,0]
Sw=0.4
Sv=0.3
w=[0,Sw]
z2=[25.2,Sv]
z3=[25.5,Sv]
x2_2=process(2,x1_1,w,z2)
x3_3=process(3,x2_2,w,z3)

输出结果为:

t_2 Predict: 25.00±0.40; Estimate: 25.13±0.24
t_3 Predict: 25.13±0.47; Estimate: 25.39±0.25

【卡尔曼滤波】卡尔曼滤波简单实例相关推荐

  1. Matlab学习卡尔曼滤波的各种实例代码 KF,EKF,UKF,CKF

    Matlab学习卡尔曼滤波的各种实例代码 KF,EKF,UKF,CKF 本人硕士写的,有简单版本的纯m代码,也有进阶学习的Sfunction代码,以及simulink模型代码,代码附有详细的注释编号: ...

  2. matlab编程进行卡尔曼滤波的简单例子

    1.matlab编程进行卡尔曼滤波的简单例子 clear N=50; x(1)=0; %理论速度初值v(1)=0 ut=-270; %加速度值 F=1; %状态转移矩阵 B=0.01; %控制矩阵 步 ...

  3. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  4. js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称

    1,列举对象属性的名称 <script language="javascript"> var obj=new Object(); obj.a="您好,我是田洪 ...

  5. 关于webservice的异步调用简单实例

    于webservice的异步调用简单实例 无论在任何情况下,被调用方的代码无论是被异步调用还是同步调用的情况下,被调用方的代码都是一样的, 下面,我们就以异步调用一个webservice 为例作说明. ...

  6. (三)AJAX基本介绍和简单实例03

    (三)AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 前台显示界面: 选择所有客户之后: 选择其中一个客户---杜森: Demo03.html代码 <html> < ...

  7. protobuf和socket通信简单实例

    protobuf和socket通信简单实例   protobuf是 Google 公司内部的混合语言数据标准,可以用来定义通信的协议,由于其有序列化和反序列化的操作,减小了存储或通信的数据量,从而达到 ...

  8. 转载 jsonrpc环境搭建和简单实例

    jsonrpc环境搭建和简单实例 一.环境准备 下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq  访问密码 6a50 二.新建一个web工程,j ...

  9. spring之AOP的简单实例

    AOP:面向切面编程,就是把除去业务部分以外的东西单独模块化,比如打日志等,就像学生信息的增删改查,可以把输出日志单独模块化出来,通过切面对的方式进行编程. 在进行实例编写之前先进行一些专业术语的了解 ...

  10. Hibernate搭建开发环境+简单实例(二)

    2019独角兽企业重金招聘Python工程师标准>>> Hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hiber ...

最新文章

  1. Serializer序列化使用
  2. pandas使用query函数基于dataframe字符串数据列中字符串的长度筛选dataframe的数据行(specific column string length)
  3. php中的替换函数,php字符串中替换函数是什么
  4. Spring学习(三)--Spring的IOC
  5. Code Issues 2,637 Pull requests 0 Projects 1 Wiki Security Insights Settings 使用filter node快速找到XML f
  6. mysql 8.0 yum_CentOS8 安装 MySQL8.0(yum)
  7. OpenCV辅助对象(help objects)(1)_TermCriteria
  8. css ltimg gt只适应,css3动画,CSS3实战小技巧--使用CSS变量实现波浪动画
  9. OpenCV-Python实战(17)——人脸识别详解
  10. 全屏显示一个图片文件
  11. kitti数据集label解析和可视化教程
  12. 直方图均衡化 java,OpenCV Java 直方图均衡化
  13. 使用mapboxgl 实现特定的地图效果
  14. Echarts柱状图,实现不同系列,柱体之间的部分重叠效果
  15. 【APICloud系列|16】苹果开发者账号如何更改双重认证的手机号
  16. xp计算机无法关机,WinXP电脑无法关机的解决方法
  17. IMP遇到IMP-00009错误
  18. 蒲丰投针问题的matlab仿真
  19. 【web编程技术学习笔记】因特网与万维网简介
  20. 解决:coursera视频加载不出来无法观看

热门文章

  1. Windows CockroachDB入门上手
  2. Boke and Tsukkomi (一般图匹配+暴力)
  3. Java实现定时器的几种方法
  4. 全球及中国汽车驱动IC行业发展策略及投资可行性研究报告2022-2028年
  5. FFMPEG解码流程
  6. 【观察】西部数据持续创新存储架构,引领存储迈入精细化运营时代
  7. 视频会议室系统解决方案,4K图像/视频实时共享
  8. 搭建基于Suricata+Barnyard2+Base的IDS前端Snorby
  9. 卒哥创业说:致富的秘密就是干
  10. 5分钟了解Java 12 八大新特性