EKF-PF 融合非线性状态估计算法
项目介绍
本项目实现了一种结合扩展卡尔曼滤波(EKF)与粒子滤波(PF)的混合非线性状态估计算法。该算法旨在解决传统滤波方法在处理强非线性、非高斯系统时的局限性。通过EKF进行初步状态估计,并在其基础上进行粒子采样与重采样,有效提高了状态估计的精度与鲁棒性,适用于复杂的非线性系统状态估计场景。
功能特性
- 非线性系统状态预测与更新:基于系统模型实现状态的时间更新与观测更新。
- 重要性采样与粒子权重计算:利用EKF估计结果指导粒子采样,并计算各粒子权重。
- 自适应重采样机制:根据粒子权重退化程度自动触发重采样,保持粒子多样性。
- 实时状态估计与误差分析:输出每个时间步的最优状态估计及相应的不确定性度量与性能指标。
使用方法
- 准备输入参数:定义非线性系统的状态方程与观测方程(函数句柄),设置初始状态向量、观测数据时间序列、过程噪声与观测噪声的协方差矩阵、粒子数量与重采样阈值等参数,并指定采样时间间隔与总时长。
- 运行算法:调用主函数,算法将自动执行EKF-PF融合估计流程。
- 获取输出结果:算法返回状态估计值、估计协方差、粒子演化历史、粒子权重分布以及均方根误差等性能评估指标。
系统要求
- MATLAB R2018a 或更高版本。
- 具备基本的矩阵运算与随机数生成功能,无需额外工具箱。
文件说明
主程序文件集成了算法的核心流程,负责初始化系统参数与滤波器配置,依次执行时间传播、测量更新、重要性采样、权重计算与归一化、重采样判断与执行等步骤,并最终输出状态估计结果及相关性能数据。