基于随机重采样的粒子滤波状态估计算法
项目介绍
本项目实现了一个完整的粒子滤波(Particle Filter)框架,重点集成了随机重采样(Stochastic Resampling)算法,以有效改进粒子多样性退化问题。通过Monte Carlo模拟方法对动态系统进行状态估计,特别适用于非线性、非高斯系统的滤波应用。核心算法包含预测、权重更新和随机重采样三大模块,能够提供准确的状态估计和方差分析。
功能特性
- 完整的粒子滤波流程:实现标准的序贯重要性采样(SIS)和重采样流程
- 随机重采样算法:采用随机重采样策略,有效维持粒子多样性
- 灵活的系统模型支持:支持用户自定义状态转移函数和观测函数
- 全面的输出分析:提供状态估计序列、估计方差序列、重采样历史记录和有效粒子比例变化
- 可视化分析工具:自动生成有效粒子比例变化曲线,便于算法性能评估
使用方法
输入参数配置
- 系统模型:定义状态转移函数(function_handle)和观测函数(function_handle)
- 噪声参数:设置过程噪声协方差(double矩阵)和观测噪声协方差(double矩阵)
- 初始粒子集:指定N×dim矩阵(N为粒子数,dim为状态维度)
- 观测数据:输入T×obs_dim矩阵(T为时间步,obs_dim为观测维度)
- 粒子数量:设定粒子数标量值
输出结果
- 状态估计序列(T×dim矩阵)
- 估计方差序列(T×dim矩阵)
- 重采样历史记录(结构体数组)
- 有效粒子比例变化曲线图
系统要求
- MATLAB R2018b或更高版本
- 支持MATLAB基本函数库
- 建议内存4GB以上(粒子数较多时需要更大内存)
文件说明
主程序文件实现了粒子滤波算法的完整工作流程,包括系统参数初始化、粒子集生成与传播、重要性权重计算、重采样判断与执行,以及结果的可视化输出。该文件整合了状态预测、观测更新、权重归一化等核心计算模块,并实现了基于有效粒子数的重采样触发机制,确保算法在长时间序列估计中的稳定性。