MATLAB全场景非线性滤波算法综合工具箱
本项目是一个专为非线性系统状态估计设计的综合性仿真与评估平台。它深度集成了扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)、容积卡尔曼滤波(CKF)以及粒子滤波(PF)四种核心滤波算法,旨在为从基础研究到工程应用的各级用户提供一个标准化的对比框架。
功能特性
- 多算法并行仿真:在同一运动场景下,同步运行四种主流非线性滤波算法,支持算法性能的直接横向对比。
- 场景高度可配置:支持对采样周期、仿真时长、过程噪声(Process Noise)及测量噪声(Measurement Noise)的精细化调整。
- 标准动力学模型:内置典型的2D匀速运动(CV)模型,涵盖位置与速度四维状态向量。
- 复杂观测模型集成:实现了非线性极坐标观测模型(距离与角度),模拟雷达等传感器的实际工作原理。
- 自动化评价体系:系统自动计算各算法的均方根误差(RMSE)与执行时间,并生成可视化轨迹图与误差分析图。
使用方法
- 确保安装了MATLAB环境以及统计和机器学习工具箱(用于噪声序列生成)。
- 直接运行主程序函数,系统将自动开始执行参数初始化。
- 程序将经历真实数据生成、各滤波器循环处理、性能指标统计三个阶段。
- 仿真结束后,MATLAB将自动弹出轨迹对比图、即时位置误差图以及算法运行耗时对比柱状图。
- 控制台将输出详细的算法评估报告,包含各自的RMSE数值与精确运算耗时。
系统要求
- MATLAB R2016b 或更高版本。
- 需具备 Statistics and Machine Learning Toolbox(用于执行 mvnrnd 函数生成多元高斯噪声)。
算法实现逻辑与核心过程
本工具箱的主逻辑严格遵循非线性状态估计的标准流程,其内部实现细分为以下四个核心模块:
#### 1. 参数与场景配置模块
- 状态定义:系统状态向量定义为 [x坐标; x速度; y坐标; y速度]。
- 运动模型:采用线性状态转移矩阵 F,模拟二维空间下的惯性运动。
- 噪声定义:通过 Q 矩阵定义过程演化不确定性,通过 R 矩阵定义传感器的测距与测角精度。
#### 2. 数据合成模块
- 真实轨迹生长:利用状态转移矩阵 F 与高斯过程噪声迭代生成目标的理想运行轨迹。
- 观测值模拟:将笛卡尔坐标下的真实位置转换为极坐标形式(距离和方位角),并叠加非高斯或高斯测量噪声,模拟传感器获取的原始数据。
#### 3. 核心滤波算法模块
*
线性化手段:在每一时刻对非线性观测方程求取雅可比矩阵(Jacobian)。
*
循环逻辑:通过预测步更新状态与协方差,在更新步利用雅可比矩阵计算增益 K。
*
采样策略:基于 Van der Merwe 算法,采用 Sigma 点采样技术。
*
变换过程:通过无迹变换(UT)处理状态映射,通过权重系数 wm 和 wc 恢复预测均值与协方差,避免了复杂的求导运算。
*
精度控制:基于三阶球面-径向容积规则。
*
实现细节:生成 2L 个等权重的容积点,通过非线性映射后重构预测状态与测量值,在数值稳定性上优于常规 UKF。
*
滤波器类型:采用顺序重要性重采样(SIR)粒子滤波。
*
运行逻辑:初始化 500 个随机粒子,通过重要性采样权重计算(高斯似然估计)来逼近后验概率分布。
*
重采样机制:内置系统重采样触发条件,有效缓解粒子退化问题。
#### 4. 可视化评估模块
- 误差度量:实时计算 X 与 Y 方向的欧几里得距离误差。
- 统计分析:对全时间段内的位置估计偏差进行均方根(RMSE)处理。
- 图形呈现:
* 轨迹对比图:直观展示各种滤波曲线与真实路径的拟合程度。
* 时间曲线图:展示误差随仿真步数的变化趋势。
* 性能柱状图:定量对比各算法的计算效率。
技术细节说明
- 雅可比矩阵计算:在 EKF 实现中,手动推导并硬编码了位置到极坐标变换的偏导数矩阵,确保了极快的预测速度。
- Σ 点参数:UKF 采用了标准参数配置(alpha=1e-3, beta=2, ki=0),以确保对非线性分布的抓取精度。
- 重采样判断:粒子滤波通过有效粒子数(Neff)阈值进行重采样触发,仅在权重分布不均时执行重采样,以平衡计算成本。