【逐行注释】MATLAB代码,一维情况的EKF滤波,代码与详细注释|附下载链接

介绍
这是一个状态量为一维的MATLAB下的滤波程序,使用的滤波方法是EKF(扩展卡尔曼滤波),滤波后,显示滤波值的曲线、滤波误差曲线、滤波误差的最大值、平均值、标准差的输出。
模型是非线性的(状态方程和观测方程都是非线性的),我将模型设计得尽可能复杂一些,拿到手以后可以从难往简单的方向改,更容易上手。
运行结果
滤波前后的状态、观测量的曲线如下图:

滤波前后的误差对比曲线:
- KF为滤波后
- without KF是滤波前

第三幅图是滤波前后的误差CDF图像对比:

关于CDF的介绍
CDF图像介绍
CDF图像是指累积分布函数图像,它是一种用来描述数据集的统计分布情况的图像表示方法。CDF图像用于展示数据集中各个数值的累积分布情况,即对于每个数值,CDF图像显示了小于或等于该数值的数据所占整个数据集的百分比。
总之,CDF图像是一种直观、简洁的图像表示方法,在数据分析、统计学和概率论等领域有着广泛的应用。
误差统计特性输出:

部分代码展示

完整代码下载链接
https://download.csdn.net/download/callmeup/89677357
各模块含义
程序分成初始化、模型建立、EKF滤波、结果展示这四个模块:
- 初始化部分如上图,定义了滤波的P/Q/R等值、给滤波中需要用到的变量分配内存空间。
- 模型建立部分通过for循环和迭代,完成真值、观测值、滤波前的状态值的生成
- EKF滤波为滤波主题
- 结果展示为绘图和统计特性计算与输出的部分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
如有需要,可私信或通过下方的微信联系我。
