强跟踪滤波算法(STF)性能仿真与分析系统
项目介绍
本项目针对传统扩展卡尔曼滤波(EKF)在系统状态突变或模型参数不确定时收敛速度慢、容易发散的问题,实现并演示了基于残差正交性原理的强跟踪滤波器(STF)。该系统通过在状态预测协方差矩阵中引入实时调节的渐进衰减因子,使得滤波器能够自适应地调整状态预测权值。当系统发生机动或者状态突变时,衰减因子能够快速增大,从而强制提高当前观测值在状态估计中的权重。
该系统不仅实现了完整的强跟踪滤波闭环逻辑,还通过一个非线性观测环境下的目标跟踪案例,直观展示了STF在面对状态阶跃干扰时的抗鲁棒性和快速恢复能力。
功能特性
- 非线性动力学建模:系统采用恒速(CV)运动模型,并结合非线性观测方程,模拟真实的非线性跟踪场景。
- 状态突变模拟:在仿真过程中段(第50步)人工引入明显的状态跳变(位置与速度突变),用于检验滤波器的动态响应能力。
- 渐进衰减因子计算:基于残差协方差序列,通过计算推导矩阵和弱相关因子,实时计算自适应更新系数。
- 对比分析系统:同步运行标准扩展卡尔曼滤波(EKF)与强跟踪滤波(STF),通过误差指标和可视化曲线进行性能量化对比。
- 实时性能评价:自动统计并输出两种算法的均方根误差(RMSE)以及精度提升百分比。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 依赖工具箱:基础MATLAB组件。
使用方法
- 启动MATLAB软件。
- 将算法实现脚本放置于MATLAB工作路径下。
- 在命令行窗口直接运行该主程序。
- 程序将自动执行仿真,并在完成后弹出可视化性能分析窗口,同时在命令行输出具体的精度统计结果。
详细功能与实现逻辑
1. 仿真场景构建
系统设置采样时间为1秒,总仿真步数为100步。
- 过程描述:采用二阶状态向量(位置与速度),通过线性状态转移矩阵进行演化。
- 噪声模型:分别设定了白高斯过程噪声和测量噪声。
- 状态突变:在第50步,人为将目标的真实位置增加50单位,速度增加20单位,以此模拟目标突有机动。
- 非线性观测:观测方程定义为状态位置平方加1后的开方,增加了非线性的处理难度。
2. 标准扩展卡尔曼滤波(EKF)实现
作为基准算法,EKF执行标准的预测更新步骤:
- 预测阶段:计算状态预估值,并基于状态转移矩阵更新预测协方差。
- 雅可比矩阵:对非线性观测方程进行线性化,求取观测矩阵H。
- 更新阶段:计算卡尔曼增益,结合残差更新状态量与协方差矩阵。
3. 强跟踪滤波器(STF)核心逻辑
STF在EKF的基础上引入了残差正交化准则:
- 残差处理:计算实际观测值与预测观测值之差,并维护残差协方差序列。
- 衰减因子计算:
- 使用遗忘因子(0.95)更新残差序列协方差矩阵。
- 引入弱相关因子(2.0)调节计算矩阵N_k。
- 计算矩阵M_k,通过N_k与M_k的比值确定实时衰减因子lambda。
- 修正预测:利用计算出的lambda对预测协方差矩阵中经过状态转移的部分进行加权修正,使得 P_pre = lambda * F * P * F' + Q。
4. 关键算法逻辑说明
- 雅可比计算:系统通过实时状态值计算非线性函数的偏导数,确保线性化精度。
- 条件限制:算法内含逻辑判断,仅当计算出的衰减因子大于1时才应用,否则保持为1,确保稳定性。
- 状态闭环:利用修正后的预测协方差计算更新增益,确保滤波器在突变发生时能迅速由于P阵的增大而增加增益K。
系统性能分析输出
程序运行结束后将展示以下四项核心指标的可视化结果:
- 位置跟踪轨迹对比:直观展示真实轨迹、EKF轨迹与STF轨迹。在50步突变前后,可以看到STF比EKF更快地贴合真实轨迹。
- 预测偏差绝对值:展示随时间分布的误差波动,量化突变发生后的恢复间隔。
- 渐进衰减因子动态演变:实时记录lambda的变化,反映算法在突变时刻的自适应调节过程。
- RMSE统计条形图:汇总全过程的均方根误差,并通过命令行输出相对于EKF的精度提升百分比。