我了解粒子过滤器的基本原理,并尝试实现一个。但是,我挂了重采样部分。
从理论上讲,这很简单:从一组旧的(加权的)粒子中,绘制一组替换的新粒子。这样做时,请偏爱具有高重量的那些粒子。高权重的粒子更容易被吸引,而低权重的粒子则更少地被吸引。也许只有一次或根本没有。重新采样后,将为所有权重分配相同的权重。
我关于如何实现这一点的第一个想法基本上是这样的:
- 标准化权重
- 将每个重量乘以颗粒总数
- 将这些缩放后的权重舍入到最接近的整数(例如,
int()
在Python中使用)
现在我应该知道绘制每个粒子的频率,但是由于舍入误差,最终我得到的粒子少于重新采样步骤之前的粒子。
问题:我如何“填充”缺少的粒子,以便获得与重新采样步骤之前相同数量的粒子?或者,如果我在这里完全偏离轨道,如何正确重新采样?