收到一些国内外朋友的来信,咨询关于容积卡尔曼滤波的问题(CKF),大家比较疑惑的应该就是generator或G-orbit的概念。
考虑到工作以后,重心必然转移,不可能再像现在这样详细的回答所有人的问题,更不可能再帮大家改论文、写(或改)代码了,请各位谅解!在此,上传一个CKF和五阶CKF用于目标跟踪的示例代码,代码中包含详细的注释,希望对大家以后的学习和研究有所帮助!此代码利用C++对五阶CKF的第二G-轨迹进行了封装(Perms.exe),能理解最好,如果无法理解,也无须深究其具体构造方法!可执行文件底层是用字符串+递归算法实现的,理论上可以应用于任意维模型。
但考虑到递归算法可能存在的栈溢出,重复压栈出栈带来的时间消耗等问题,我们利用矩阵的稀疏性和群的完全对称性,并通过分次调用,来尽可能减少栈的深度,提高计算速度。
容积点一次生成后,可以一直使用,通过对50维G-轨迹的生成速度(CoreT6600@2.2GHz)进行测试,包含数据读写在内的速度约为1.5秒,速度尚可。
而目前为止,本人尚未遇到达到甚至超过50维的系统,因此,暂时不作算法层面的优化。
注意:Perms.exe可以用于任意维模型,将可执行文件复制至工作目录下,调用时选择N/n,并输入你的模型维数,即可生成所需的第二G-轨迹。
如果无法理解相关的概念,请参考示例代码,并记住如何使用即可~~~相关理论基础及所用模型,请参考以下文献:References(youmayciteoneofthearticlesinyourpaper):[1]X.C.Zhang,C.J.Guo,"CubatureKalmanfilters:Derivationandextension,"ChinsesPhysicsB,vol.22,no.12,128401,DOI:10.1088/1674-1056/22/12/128401[2]X.C.Zhang,Y.L.Teng,"AnewderivationofthecubatureKalmanfilters,"AsianJournalofControl,DOI:10.1002/asjc.926[3]X.C.Zhang,"Cubatureinformationfiltersusinghigh-degreeandembeddedcubaturerules,"Circuits,Systems,andSignalProcessing,vol.33,no.6,pp.1799-1818,DOI:10.1007/s00034-013-9730-0
1