g-h 过滤器
之前的翻译大家,我看都没什么阅读量,可能大家都不是很想看(估计也是我英文太水)。那么这篇博客我就先暂停直接翻译原文,而是直接说一下自己的理解。
本文章背后的书的详细介绍可以查看 链接
从头开始认识 g-h 过滤器
作者通过对使用含有误差的秤(现实世界的秤都不可能百分之百准确)测量自己的体重引出了 g-h 过滤器的概念。
这也是一个相当重要的概念,对后面的要学习的各种滤波算法起到了非常关键的思想上的引导。
g-h过滤器的核心思想就是对预测值和实际的测量值找到一个比重,来使得实际的评估值更加能接近最真实的体重。
下面的图就是如何对体重进行评估的方式描述。
这里的 last_estimate 是值上一次的评估值, estimate 是当前的评估值,prediction 是通过上一次的评估值对当前的预测值,measurement 是当前的测量值。这里的值全部是指作者要测量的目标,也就是体重。
这时如果单纯的只考虑测量值和预测值之间的关系,选择一个系数来分配他们的关系,比如下面的式子。
这个式子如果用代码来实现只需要用两行,变量名字起的很好,十分易懂。
# 预测新的重量,gain_rate 就是对体重的预测变化
predicted_weight = estimated_weight + gain_rate * time_step
# 对过滤器的状态进行更新 , 这里的 scale_factor 就可以理解为上面式子的 4/10
estimated_weight = predicted_weight + scale_factor * (measurement - predicted_weight)
在这种情况下因为没有考虑预测值与前一次评估值的变化关系,导致这种办法只在我们设计滤波器的时候对变化关系做出了正确设置的时候才会产生作用。
比如假设每天我们都会增加体重1lbs(磅),如下图所示:
这个时候滤波器表现的很好。但是如果我们对于预测值的变化设置错误的情况下,图形看起来就不会有这种比较好的效果了。
下图就是在代码中我们假设我们的体重仍是每天增长 1 lbs(磅),但是评估