各种Kalman滤波的比较程序——C++/MFC版
一个基于MFC的Kalman滤波比较程序,简化版本。包含EKF,CKF,UKF,ICKF,FCKF等Kalman滤波算法,对学习和了解Kalman滤波算法有很大帮助,对研究Kalman滤波、数据融合、图像处理、雷达算法等领域的研究生、学者也有一定的借鉴意义。 由于该程序是一个简化的版本,可能有错,请勿直接拿到项目中直接使用!不得用于任何商业用途,使用本程序时,说明出处即可自由使用!
一个基于MFC的Kalman滤波比较程序,简化版本。包含EKF,CKF,UKF,ICKF,FCKF等Kalman滤波算法,对学习和了解Kalman滤波算法有很大帮助,对研究Kalman滤波、数据融合、图像处理、雷达算法等领域的研究生、学者也有一定的借鉴意义。 由于该程序是一个简化的版本,可能有错,请勿直接拿到项目中直接使用!不得用于任何商业用途,使用本程序时,说明出处即可自由使用!
以陀螺仪的混沌运动为例,设计了一个计算Lyapunov指数及Lyapunov维数的计算工具,对研究振动理学、混沌学等,有一定的参考意义,该程序可以方便的进行扩展至其他的动力学模型。参考文献: [1] 张鑫春. INS/GNSS深组合导航系统的非线性分析[D]. 成都: 电子科技大学, 2014
收到一些国内外朋友的来信,咨询关于容积卡尔曼滤波的问题(CKF),大家比较疑惑的应该就是generator或G-orbit的概念。考虑到工作以后,重心必然转移,不可能再像现在这样详细的回答所有人的问题,更不可能再帮大家改论文、写(或改)代码了,请各位谅解!在此,上传一个CKF和五阶CKF用于目标跟踪的示例代码,代码中包含详细的注释,希望对大家以后的学习和研究有所帮助! 此代码利用C++对五阶CKF的第二G-轨迹进行了封装(Perms.exe),能理解最好,如果无法理解,也无须深究其具体构造方法!可执行文件底层是用字符串+递归算法实现的,理论上可以应用于任意维模型。但考虑到递归算法可能存在的栈溢出,重复压栈出栈带来的时间消耗等问题,我们利用矩阵的稀疏性和群的完全对称性,并通过分次调用,来尽可能减少栈的深度,提高计算速度。 容积点一次生成后,可以一直使用,通过对50维G-轨迹的生成速度(Core T6600@2.2GHz)进行测试,包含数据读写在内的速度约为1.5秒,速度尚可。而目前为止,本人尚未遇到达到甚至超过50维的系统,因此,暂时不作算法层面的优化。 注意:Perms.exe可以用于任意维模型,将可执行文件复制至工作目录下,调用时选择N/n,并输入你的模型维数,即可生成所需的第二G-轨迹。如果无法理解相关的概念,请参考示例代码,并记住如何使用即可~~~ 相关理论基础及所用模型,请参考以下文献: References (you may cite one of the articles in your paper): [1] X. C. Zhang, C. J. Guo, "Cubature Kalman filters: Derivation and extension," Chinses Physics B, vol.22, no.12, 128401, DOI: 10.1088/1674-1056/22/12/128401 [2] X. C. Zhang, Y. L. Teng, "A new derivation of the cubature Kalman filters," Asian Journal of Control, DOI: 10.1002/asjc.926 [3] X. C. Zhang, "Cubature information filters using high-degree and embedded cubature rules," Circuits, Systems, and Signal Processing,vol.33, no.6,pp.1799-1818,DOI: 10.1007/s00034-013-9730-0
帮研究生同学写的一个数制转换代码,将二进制数据转换为十进制数,需转换的数据格式为: 1.每行数据的第一个数为任意数制,仅作为标识,可能为正,也可能为负,无需转换,直接去除; 2.每行余下的数据为二进制数据,并以'b'结尾,每个数的第一位为符号位,若为'1'则为负,否则为正; 由于时间比较仓促,所以写的比较繁琐,基本上是逐位转换。代码也比较有针对性,但是只需稍作变更即可用于其它数制之间的转换。
一个BOT的四维模型,内有容积卡尔曼滤波算法(CKF)和本人所提的嵌入式容积卡尔曼滤波(ECKF)算法的比较
之前一直说要上传多维CKF滤波的例子,一直没时间,这次上传的是一个多维函数,在你的仿真中直接调用运行即可,程序都是自己一个一个敲出来的,并且经过测试的。
这是一个自己写的非线性滤波算法的比较程序,包含EKF,三阶CKF,五阶CKF,ICKF,UKF算法,这次只上传了经过编译的可执行程序,代码会在毕业之后,或者找完工作之后上传,如果发现问题,可与我联系!
容积卡尔曼滤波(Cubature Kalman filtering)的Matlab例子,可以正常运行,还有用于多维的例子,以及均方根容积卡尔曼滤波的程序将在以后上传。。。
老外写的《数字信号处理的FPGA实现(第3版)》,内容很多,知识点丰富,适合与作信号处理硬件实现的人阅读,是一本很好的参考书。