没有合适的资源?快使用搜索试试~ 我知道了~
粒子滤波推导pdf

温馨提示


试读
21页
粒子滤波推导的博客的pdf版,详细推导了粒子滤波的由来,并且有例程代码。
资源详情
资源评论
资源推荐

Particle Filter Tutorial 粒子滤波:从推导到应用(一)
2014-11-08 22:24 916 人阅读 评论(15) 收藏 编辑 删除
粒子滤波贝叶斯滤波
前言:
博主在自主学习粒子滤波的过程中,看了很多文献或博客,不知道是看文献时粗心大
意还是悟性太低,看着那么多公式,总是无法把握住粒子滤波的思路,也无法将理论和实
践对应起来。比如:理论推导过程中那么多概率公式,概率怎么和系统的状态变量对应上
了?状态粒子 是怎么一步步采样出来的,为什么程序里面都是直接用状态方程来计算?
粒子的权重是怎么来的?经过一段时间的理解,总算理清了它的脉络。同时也觉得,只有
对理论的推导心中有数了,才能知道什么样的地方可以用这个算法,以及这个算法有什么
不足。因此,本文将结合实际程序给出粒子滤波的详细推导,在推导过程中加入博主自己
的理解,如有不妥,请指出,谢谢。
文章架构:
由最基础的贝叶斯估计开始介绍,再引出蒙特卡罗采样,重要性采样,SIS 粒子滤
波,重采样,基本粒子滤波 Generic Particle Filter,SIR 粒子滤波,这些概念的引进,都
是为了解决上一个概念中出现的问题而环环相扣的。最后给出几个在 matlab 和 python
中的应用,例程包括图像跟踪,滤波,机器人定位。
再往下看之前,也可以看看《卡尔曼滤波:从推导到应用》,好对这种通过状态方程
来滤波的思路有所了解。
一、贝叶斯滤波
假设有一个系统,我们知道它的状态方程,和测量方程如下:
如:
(1)
如:
(2)
其中
x
为系统状态,
y
为测量到的数据,
f,h
是状态转移函数和测量函数,
v,n
为过程噪声
和测量噪声,噪声都是独立同分布的。上面对应的那个例子将会出现在程序中。

从贝叶斯理论的观点来看,状态估计问题(目标跟踪、信号滤波)就是根据之前一系
列的已有数据 (后验知识)递推的计算出当前状态 的可信度。这个可信度就是概率
公式 ,它需要通过预测和更新两个步奏来递推的计算。
预测过程是利用系统模型(状态方程 1)预测状态的先验概率密度,也就是通过已有的
先验知识对未来的状态进行猜测,即 p( x(k)|x(k-1) )。更新过程则利用最新的测量值对先
验概率密度进行修正,得到后验概率密度,也就是对之前的猜测进行修正。
在处理这些问题时,一般都先假设系统的状态转移服从一阶马尔科夫模型,即当前时
刻的状态 x(k)只与上一个时刻的状态 x(k-1)有关。这是很自然的一种假设,就像小时候玩
飞行棋,下一时刻的飞机跳到的位置只由当前时刻的位置和骰子决定。同时,假设 k 时刻
测量到的数据 y(k)只与当前的状态 x(k)有关,如上面的状态方程 2。
为了进行递推,不妨假设已知 k-1 时刻的概率密度函数
预测:由上一时刻的概率密度 得到 ,这个公式的含义
是既然有了前面 1:k-1 时刻的测量数据,那就可以预测一下状态 x(k)出现的概率。
计算推导如下:
等式的第一行到第二行纯粹是贝叶斯公式的应用。第二行得到第三行是由于一阶马尔科夫
过程的假设,状态 x(k)只由 x(k-1)决定。
楼主看到这里的时候想到两个问题:
第一:既然 ,x(k)都只由 x(k-1)决定了,即
,在这里弄一个 是什么意思?

这两个概率公式含义是不一样的,前一个是纯粹根据模型进行预测,x(k)实实在在的
由 x(k-1)决定,后一个是既然测到的数据和状态是有关系的,现在已经有了很多测量数据
y 了,那么我可以根据已有的经验对你进行预测,只是猜测 x(k),而不能决定 x(k)。
第二:上面公式的最后一行 是假设已知的,但是 怎么得
到呢?
其实 它由系统状态方程决定,它的概率分布形状和系统的过程噪声
形状一模一样。如何理解呢?观察状态方程(1)式我们知道,x(k) = Constant( x(k-1) ) +
v(k-1) 也就是 x(k)由一个通过 x(k-1)计算出的常数叠加一个噪声得到。看下面的图:
如果没有噪声,x(k)完全由 x(k-1)计算得到,也就没由概率分布这个概念了,由于出现了
噪声,所以 x(k)不好确定,他的分布就如同图中的阴影部分,实际上形状和噪声是一样
的,只是进行了一些平移。理解了这一点,对粒子滤波程序中,状态 x(k)的采样的计算很
有帮助,要采样 x(k),直接采样一个过程噪声,再叠加上 f(x(k-1)) 这个常数就行了。
更新:由 得到后验概率 。这个后验概率才是真正有用的东
西,上一步还只是预测,这里又多了 k 时刻的测量,对上面的预测再进行修正,就是滤波
了。这里的后验概率也将是代入到下次的预测,形成递推。
推导:

其中归一化常数:
等式第一行到第二行是因为测量方程知道, y(k)只与 x(k)有关, 也称之为似然函
数,由量测方程决定。也和上面的推理一样, , x(k)部分是常数,
也是只和量测噪声 n(k)的概率分布有关,注意这个也将为 SIR 粒子滤波里权重的
采样提供编程依据。
贝叶斯滤波到这里就告一段落了。但是,请注意上面的推导过程中需要用到积分,
这对于一般的非线性,非高斯系统,很难得到后验概率的解析解。为了解决这个问题,就
得引进蒙特卡洛采样。关于它的具体推导请见 下一篇博文。
(转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于
商业用途)
reference:
1.M. Sanjeev Arulampalam 《A Tutorial on Particle Filters for Online Nonlinear/Non-Gaussian
Bayesian Tracking》
2.ZHE CHEN 《Bayesian Filtering: From Kalman Filters to Particle Filters, and Beyond》
3.Sebastian THRUN 《Probabilistic Robotics》
3.百度文库 《粒子滤波理论》
Particle Filter Tutorial 粒子滤波:从推导到应用(二)
2014-11-14 17:50 670 人阅读 评论(1) 收藏 编辑 删除
粒子滤波采样
二、蒙特卡洛采样
假设我们能从一个目标概率分布 p(x)中采样到一系列的样本(粒子) ,(至于
怎么生成服从 p(x)分布的样本,这个问题先放一放),那么就能利用这些样本去估计这个
分布的某些函数的期望值。譬如:

上面的式子其实都是计算期望的问题,只是被积分的函数不同。
蒙特卡洛采样的思想就是用平均值来代替积分,求期望:
这可以从大数定理的角度去理解它。我们用这种思想去指定不同的 f(x)以便达到估计不同
东西的目的。比如:要估计一批同龄人的体重,不分男女,在大样本中男的有 100 个,女
的有 20 个,为了少做事,我们按比例抽取 10 个男的,2 个女的,测算这 12 个人的体重
求平均就完事了。注意这里的按比例抽取,就可以看成从概率分布 p(x)中进行抽样。
下面再看一个稍微学术一点的例子:
假设有一粒质地均匀的骰子。规定在一次游戏中,连续四次抛掷骰子,至少出现
一次 6 个点朝上就算赢。现在来估计赢的概率。我们用 来表示在第 n 次游戏中,第 k
次投掷的结果,k=1...4。对于分布均匀的骰子,每次投掷服从均匀分布,即:
这里的区间是取整数,1,2,3,4,5,6,代表 6 个面。由于每次投掷都是独立同分布的,所以
这里的目标分布 p(x)也是一个均匀分布 。一次游戏就是 空间中的一个随机
点。
为了估计取胜的概率,在第 n 次游戏中定义一个指示函数:
其中,指示函数 I{x }是指,若 x 的条件满足,则结果为 1,不满足结果为 0。回到这个问
题,这里函数 f()的意义就是单次游戏中,若四次投掷中只要有一个 6 朝上,f()的结果就
会是 1。由此,就可以估计在这样的游戏中取胜的期望,也就是取胜的概率:
剩余20页未读,继续阅读










白巧克力亦唯心
- 粉丝: 9313
- 资源: 4
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- node-v18.19.0-x64.msi
- tensorflow-2.8.0-cp39-cp39-manylinux2010-x86-64.whl.zip
- C++医院管理系统实例.zip
- tensorflow-2.8.0-cp38-cp38-win-amd64.whl.zip
- tensorflow-2.8.0-cp38-cp38-manylinux2010-x86-64.whl.zip
- 产教融合平台解决方案(最新)
- c++最大子矩阵代码及分析
- 2_NISP模拟卷答案版本(10月17日更新).xls
- tensorflow-2.8.0-cp38-cp38-macosx-10-14-x86-64.whl.zip
- tensorflow-2.8.0-cp37-cp37m-win-amd64.whl.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论30