书评:《卡尔曼滤波原理及应用——MATLAB仿真》

《卡尔曼滤波原理及应用——MATLAB仿真》(简称《卡》)、《粒子滤波原理及应用——MATLAB仿真》(简称《粒子》)与《目标定位跟踪原理及应用——MATLAB仿真》是由同一出版社——中国工信出版社、电子工业出版社、同一作者——黄小平、王岩编著出版,《粒子》一书的作者列表多了一位缪鹏程。作者应该是北航团队,但是详细信息无法查证,该研究团队从事的研究方向是目标跟踪、寻的制导控制系统。该系列丛书特别适用于本科高年级与硕士研究生,适合卡尔曼滤波器、粒子滤波器、目标跟踪与制导的入门学习。该系列丛书的理论内容描述精炼,配套的案例与代码详细,能够帮助入学者在短时间内理解并快速上手应用。
Kalman滤波的技术优点在于存储空间占用较少,因此经典卡尔曼滤波与扩展卡尔曼滤波算法是应用最为广泛,但是在特殊情况下状态方程参数不确定情况下的转换到自适应滤波器。Kalman滤波器算法在阿波罗登月系统中一战成名,与Wiener滤波器是应用最为稳定、最为广泛的两类滤波器算法,Kalman滤波器是一种基于时域状态空间方法的递推形式的控制算法。作者对各类算法的优缺点和应用描述的十分清晰。同时,文中也存在一些问题,但是瑕不掩瑜。后文将根据我个人对《卡》一书的理解,以笔记的形式进行归纳。
第一章绪论十分中肯的阐述了Kalman滤波器原理、发展趋势与应用。Kalman滤波器较为依靠系统的状态控制模型,适用于时间连续系统,广泛应用于导航制导、跟踪定位、通信与信号处理、气象预报、地质勘探、矿物开采、故障诊断/检测以及证券市场预测。
第二章MATLAB基础简述了数组运算、结构体与元胞数组操作、条件/循环/函数设计以及画图程序设计。
第三章线性Kalman滤波(LKF)也是经典的Kalman滤波器介绍,是将通过传感器观测值推算出状态变量的真实数值的算法,主要适用于高斯线性系统,即掺杂高斯噪声的线性控制系统,适用于平稳随机过程滤波,特别适用于非平稳或平稳马尔科夫序列或高斯-马尔科夫序列的滤波。Kalman滤波是以射影定理作为理论基础,根据系统状态空间方程采用递推式方式生成状态值。本章详细介绍了Kalman滤波专业名词定义以及算法特征,并以代码的形式重现了Kalman滤波在温度测量、自由落体运动目标跟踪、船舶GPS导航定位系统、石油地震勘探、基于视频的自由下落的皮球跟踪中的应用。同时,简单介绍Matlab视频处理算法。
第四章扩展Kalman滤波(EKF),该算法主要面向滤波误差及预测误差较少的非线性系统,采用Taylor级数并略去二阶及以上高阶项,优点是不必预先计算标称轨迹。EKF是基于线性卡尔曼滤波器算法、采用Jacobian矩阵得到卡尔曼滤波运算中的算子。采用代码的形式实现基于距离的目标跟踪、纯方位目标跟踪、三维寻的指导控制。
第五章无迹Kalman滤波(UKF)是面向非线性函数概率密度分布近似确定状态后验概率密度的算法,采用无迹变换(UT)来处理均值和协方差的非线性传递问题。阐述Sigma点生成以及UKF算法实现。采用代码实现了单观测站目标跟踪、匀加速度直线运动目标跟踪,对比UKF和EKF性能。
第六章介绍交互多模型Kalman滤波(IMM-KF)针对多模型系统的滤波器算法实现,并以多模式目标跟踪。
第七章Kalman滤波的Simulink仿真,Simulink环境仿真设置、数据设置、模块库简介、S函数应用,并以目标跟踪示例。
该书能够帮助入学者在7天之内充分了解卡尔曼滤波并能在MATLAB中实现运算。但该书理论部分不详实,不能够帮助读者充分理解概率模型中专业名词的物理意义,建议参考《卡尔曼滤波与组合导航原理(第3版)》中理论推导。对于噪声矩阵中元素的确定并不明确,观测误差与方差是需要通过标记试验测得无法在技术手册中找到。UKF、IMM-KF中部分参数与概率参数如何确定并没有给出详细的讲解,需要额外的参考文献[1, 2]指导,这些问题对于实际开发更为重要,需要根据实际模型进行判定。
文中的代码并不是最精简的风格,这反倒是可以帮助初学者更好的上手项目,前后对比代码可以帮助初学者更好的理解程序、更熟练的写出自己的程度。
但是该书理论部分没有仔细看,实际上是忍不住吐槽,里面有很多推导具有误导性。明显的问题如下:

  • 第三章公式(3.24)括号不完整 公式(3.25)(3.27)(3.28)离散时间参数错误,“t”应该替换为“k”

  • 例3.3.1的状态矩阵忽略了T =1这个条件,可以参考本书后面的问题,状态矩阵符号不一致。

  • 第五章P104:公式(5.2)存在问题,可参考参考文献。

  • 第六章源代码可能也有问题

    总而言之,该书可以帮助初学者在一周内快速上手,深入研究还需要多看文献,充分理解其物理意义。

[1] Julier S J, Uhlmann J K. Unscented filtering and nonlinear estimation[J]. Proceedings of the IEEE, 2004, 92(3): 401-422.
[2] Blom H A P, Bar-Shalom Y. The interacting multiple model algorithm for systems with Markovian switching coefficients[J]. IEEE transactions on Automatic Control, 1988, 33(8): 780-783.

Kalman滤波器初学者入门相关推荐

  1. Node初学者入门,一本全面的NodeJS教程,微小的web框架,能实现文件上传功能以及数据解析功能...

    Node初学者入门,一本全面的NodeJS教程 转载于:https://www.cnblogs.com/hfultrastrong/p/8036672.html

  2. 首发:适合初学者入门人工智能的路线及资料下载

    本文为AI入门提供了一个简易的学习路线,并提供了代码和数据集下载.(黄海广) 一.前言 AI以及机器学习入门,初学者遇到的问题非常多,但最大的问题就是: 资料太多!!!看不完!!!不知道如何取舍!!! ...

  3. 用python公众号开书城步骤_资源 | 开放Python书籍:一本短小精悍的初学者入门指南...

    资源 | 开放Python书籍:一本短小精悍的初学者入门指南 作者:机器之心 来源:机器之心 公众号 分享到: 03-25 选自GitHub机器之心整理 参与:思源 如何快速熟悉 Python 编程一 ...

  4. oracle打patch,Oracle初学者入门指南-How to get Oracle Patch?

    Oracle初学者入门指南-How to get Oracle Patch? 怎样获得/找到Oracle的Patch,这是一个朋友在Itpub上问到的问题.他还举了一个生动的例子: 比如我要使用ora ...

  5. c语言中数组名可以与其他变量名相同,C语言初学者入门讲座 第九讲 数组(1)...

    C语言初学者入门讲座 第九讲 数组(1) (2007-01-17 11:39:19) 数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为 ...

  6. OpenCV3学习(12.3) kalman滤波器

    卡尔曼滤波器: 卡尔曼滤波是一种递归的估计,即只要获知上一时刻状态的估计值以及当前状态的观测值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息.卡尔曼滤波器与大多数滤波器不同之处,在 ...

  7. Python适合初学者入门

    老袁最近发现,我身边有好多小伙伴最近老问我学习python怎么样,这期就出的相信点解析一下为什么初学者适合python,希望大家可以对python感兴趣程度大一些. Python适合初学者入门.Pyt ...

  8. JavaScript_牛客网_编程初学者入门训练(21-30题解)

    牛客网编程初学者入门训练题解JavaScript版本 编程初学者入门训练第21-30题解答(js) 22.你能活多少秒 25.计算体重指数 26.计算三角形的周长和面积 27.计算球体体积 28.大小 ...

  9. 初学者对PHP的总结,PHP_献给php初学者(入门学习经验谈),1.概要:学习任何语言都需要 - phpStudy...

    献给php初学者(入门学习经验谈) 1.概要:学习任何语言都需要 多看 多想 多写 多问!!写编程是一种熟能生巧的东西!因为知识就那么多,你看多了就会觉得怎么都一样. 程序员就是炒冷饭的,一遍又一遍. ...

最新文章

  1. The method setButton(int, CharSequence, Message) in the type AlertDialog is not applicable for the a
  2. 综述:激光雷达全景分割的传统点云聚类方法的技术总结
  3. Snackbar源码分析
  4. 人工智能实践:TensorFlow笔记学习(一)—— 人工智能概述
  5. JAVA实现二维数组中的查找(《剑指offer》)
  6. 调用函数,输出Fibonacci数列的m项至n项
  7. GalleryView
  8. 来自Yang Terry的关于SAP CRM One Order事件回调机制的分享
  9. Leetcode: LRU Cache
  10. 【算法分析与设计】实验 分治算法解决中位数问题
  11. python 数据格式转换_python常用数据格式转换
  12. Java爬虫Crawler
  13. Mybatis源码分析之Mapper文件解析
  14. 【Codeforces 1114C】Trailing Loves (or L'oeufs?)
  15. 怎么压缩图片大小,压缩图片大小的小妙招
  16. 有谁知道千千静听中的波形特效是怎么做的?
  17. 一步步做一个Google 网页
  18. c++编程规范和范例
  19. 微信模板消息发送成功但显示空白的问题
  20. “Adb connection Error:远程主机强迫关闭了一个现有的连接。”之我的解决方法。

热门文章

  1. [C/C++] 关于strncpy函数
  2. 微信小程序——与后端通信
  3. Revit二次开发5、外部事件(ExternalEvent)
  4. 阉割版BBBlack安装Debian
  5. 辞职了,领导都加多少留你?
  6. 圆球度: 圆度与球度
  7. 经验全公开!一个微信小号,如何靠30篇内容,从0做到8万用户?
  8. mysql 互斥_Mysql 中互斥锁的使用
  9. c语言 操作系统原理,操作系统原理 第2版
  10. zetro导入文献英文作者全部大写和等的问题