粒子滤波:原理、应用与优化
1. 引言
在众多实际问题中,我们常常需要处理状态的不确定性。对于离散大状态空间问题或无法用卡尔曼滤波器的线性高斯假设很好近似的连续问题,通常需要采用近似技术来表示信念并进行信念更新。粒子滤波就是这样一种常用的方法,它将信念状态表示为一组状态的集合,其中每个状态被称为一个粒子。
2. 粒子滤波基础
- 初始化 :通过选择或随机采样一组代表初始信念的粒子来初始化粒子滤波器。
- 信念更新 :对于具有 $m$ 个粒子的粒子滤波器,信念更新从根据转移分布对每个状态 $s_i$ 进行采样,以概率 $T(s’_i | s_i, a)$ 获得新状态 $s’_i$ 开始。然后,根据观察函数 $w_i = O(o | a, s’)$ 对传播后的状态进行加权,从中抽取 $m$ 个粒子来构建新的信念。
以下是粒子滤波信念更新的代码实现:
struct ParticleFilter
states # vector of state samples
end
function update(b::ParticleFilter, 𝒫, a, o)
T, O = 𝒫.T, 𝒫.O
states = [rand(T(s, a)) for s in b.states]
weights = [O(a, s′, o) for s′ in states]
D = SetCategorical(states, weights)
超级会员免费看
订阅专栏 解锁全文
470

被折叠的 条评论
为什么被折叠?



