Particle Filter Toolbox (粒子滤波综合仿真工具箱)
项目介绍
本工具箱是一个基于 MATLAB 开发的高性能粒子滤波(Particle Filter)仿真平台。它专门设计用于解决非线性、非高斯动态系统中的状态估计问题。通过集成多种改进算法与重采样策略,本项目为研究人员和工程师提供了一个模块化、易于扩展的框架,以验证不同粒子滤波配置在复杂背景下的跟踪性能。
功能特性
- 多算法支持:内置标准序列重要性采样(SIR)粒子滤波以及利用无迹变换改进建议分布的无迹粒子滤波(UPF)。
- 丰富的重采样算法库:集成了四种主流重采样技术,包括多项式重采样、系统重采样、残差重采样以及分层重采样。
- 自适应重采样机制:引入有效粒子数(ESS)评估,通过预设阈值(N/2)自动触发重采样,有效缓解粒子退化与枯竭问题。
- 非线性模型支持:预置了复杂的非线性非高斯状态转移方程(含时变余弦扰动)与二次方观测模型。
- 全方位可视化分析:支持实时状态跟踪、粒子云演化、后验概率密度分布(PDF)、估计误差曲线以及 ESS 波动报告的动态显示。
- 性能评估体系:自动计算均方根误差(RMSE)、计算耗时以及单步平均开销,提供详尽的仿真报告。
系统要求
- MATLAB R2016b 或更高版本。
- 无需额外工具箱支持,算法均为原生代码实现。
实现逻辑与功能细节
1. 仿真流程概览
系统首先根据定义的非线性模型生成真实的运动轨迹和带有高斯噪声的观测数据。通过初始化粒子群组,在每一个仿真步长内,程序会根据用户选择的模式(SIR 或 UPF)进行重要性采样,随后通过权重的归一化、ESS 计算、自适应重采样和状态估计(加权平均)完成单次迭代。
2. 核心算法实现
- 序列重要性采样 (SIR):将状态转移分布作为建议分布进行采样。计算简单,适用于噪声特性较简单的系统。
- 无迹粒子滤波 (UPF):
* 通过
无迹变换 (Unscented Transform) 生成采样建议分布。
* 该过程首先选取 Sigma 点,通过非线性映射计算预测均值与协方差。
* 利用当前步的观测值,通过类似 Kalman 增益的方式更新建议分布的均值与协方差。
* 从更新后的局部高斯分布中抽取粒子,并根据似然、先验和建议分布的比例修正权重。
3. 重采样策略分析
工具箱在底层实现了四种逻辑:
- 多项式重采样:基于累积分布函数(CDF)进行 $N$ 次独立随机采样。
- 系统重采样:在 $0$ 到 $1/N$ 之间选取单一随机起点,以固定步长 $1/N$ 进行等距采样,计算效率高且方差小。
- 残差重采样:先确定粒子的确定性拷贝次数,再对剩余部分的权重进行重新分配采样,兼顾公平性与性能。
- 分层重采样:将 $[0,1]$ 区间划分为 $N$ 个等分子区间,并在每个子区间内进行独立采样,保证了样本分布的均匀性。
4. 关键函数功能描述
- 无迹变换处理模块:负责 Sigma 点的生成、非线性传递以及参数($alpha, beta, kappa$)的配置,计算预测的均值与协方差,并结合观测残差输出改进后的建议分布参数。
- 重采样调度引擎:根据输入的权重向量和类型编码,执行特定的数学采样逻辑,返回保留粒子的索引序列。
- 数据合成引擎:基于状态转移方程和观测方程,生成模拟真实物理环境的序列数据。
使用方法
- 参数配置:在代码顶层的参数区修改仿真步长(T)、粒子数(N)、过程噪声(Q)或观测噪声(R)。
- 模式切换:通过修改布尔变量开关,选择使用标准 SIR 算法(0)或高性能 UPF 算法(1)。
- 算法评估:通过调整重采样类型代码(1-4),对比不同重采样方式对跟踪精度和 ESS 稳定性的影响。
- 运行与观测:运行后将弹出多维度的可视化图表,左侧显示实时的状态跟踪与粒子分布演化,右侧显示误差分析与 ESS 统计。
- 指标获取:仿真结束后,MATLAB 命令行窗口将自动打印包含 RMSE 和时间开销的性能统计报告。