Github个人博客:https://joeyos.github.io
粒子滤波原理及其matlab仿真
系统建模
粒子滤波算法不受线性高斯模型的约束,与卡尔曼滤波器一样,粒子滤波算法同样需要知道系统的模型,如果不知道系统的模型,也要想办法构建一个模型来逼近真实的模型。这个真实模型就是各应用领域内系统的数学表示,主要包括状态方程和量测方程。
状态方程和过程噪声
X(k) = f (X(k-1), W(k));
观测方程和测量噪声
Z(K) = h (X(k), V(k));
核心思想
粒子滤波是一种基于蒙特卡洛仿真的近似贝叶斯滤波算法。其核心思想是用一些离散随机采样点近似系统随机变量的概率密度函数,以样本均值代替积分运算,从而获得状态的最小方差估计。
均值思想
粒子滤波的均值思想就是利用粒子集合的均值来作为滤波器的估计值。如果粒子集合的分布不能很好的覆盖真实值,那么滤波器经过几次迭代必然会出现滤波发散。
权重计算
权重计算时粒子滤波算法的核心,它的重要意义在于,根据权重大小能实现优质粒子的大量复制,对劣质粒子实现淘汰制。另外,经过权重计算,它也是重新指导粒子空间分布的依据。权重最终影响滤波结果。
优胜劣汰
粒子的“优胜劣汰”主要体现在对粒子的复制上,这种机制从某种意义上说保证了粒子滤波的最终目标得以实现。实现“优胜劣汰”的重要手段是重采样算法。重采样的思想是通过对样本重新采样,大量繁殖权重高的粒子,淘汰权值低的粒子,从而抑制退化。
随机重采样(randomR.m)
多项式重采样(MultinomialR.m)
系统重采样(systematicR.m)
残差重采样(residualR.m)
粒子滤波器(Particle Filter)
蒙特卡洛采样
蒙特卡洛方法是从后验概率分别采集带权重的粒子集(样本集),用粒子集表示后验分布,将积分转化为求和形式。
贝叶斯重要性采样
对蒙特卡洛采样方法,后验概率分布可以用有限的离散样本集来近似。通常后验概率分布函数是无法直接得到的,贝叶斯采样原理的基本思想是,先从一个已知的且容易采样的参考分布中抽样,通过对参考分布的采样获得的粒子集进行加权求和来近似后验分布。
序列重要性采样(SIS滤波器)
贝叶斯重要性采样是一种常用的简单的蒙特卡洛方法,但是没有考虑到递推估计的特点。贝叶斯估计也是一个序列估计问题,因此在采样上也必须有序列关系。序列重要性采样,不改变过去1的序列样本集,而采用递归的形式计算重要性权值。
Bootstrp/采样-重要性再采样(SIR滤波器)
SIR滤波器和SIS滤波器都属于基本粒子滤波器,都使用重要性采样算法,但是两者又有区别。对于SIR滤波器,重采样总是会被执行,在算法中通常两次重要性采样之间需要一次重采样,而SIS滤波器只是在需要是才进行重采样,因此SIS的计算量比SIR的计算量要小。
粒子滤波算法通用流程
- 初始化
- 循环开始
- 重要性采样->计算权重->归一化权重
- 重采样
- 输出
- 循环结束
粒子滤波仿真实例
一维系统建模
状态模型:x(k) = f (x(k-1), k) + w(k-1)
观测方程:z(k) = x(k)^2 / 20 +v(k)
f(x((k-1), k) = 0.5x(k-1) + 2.5x(k-1) / (1&#