c++ - 从速度值中滤除噪声和变化

标签 c++ algorithm math

我有一个持续接收速度值 (m/s) 的应用程序。这些值会产生一些噪声和变化。这个速度一直在变化,但有一些真正的变化值得注意。例如,当速度值显着下降时,可能会转弯。

现在我使用的是最后 X 值的平均值,其中 X 通常是 5-15 之间的数字。我在 excel 中绘制这些值以查看与原始数据的差异。这非常有效,但是历史值越低,我的曲线得到的越少越平滑。 更高 历史值,我的曲线变得更平滑,但随后它也会对后期更改使用react并忽略其中一些更改。

我还尝试对平均值计算中的最后一个值进行加权。结果是一条仍然有大量噪声的曲线,但只比原始数据少一点。

我正在寻找一种更复杂的方法来滤除噪音,它可以给我接近原始数据的值,但也忽略了小的变化和噪音。

这可能是什么方法,或者我可以用我现有的设置做些什么?

最佳答案

为此,Kalman filter正是您所需要的。这是一个实现它的免费库:http://kalman.sourceforge.net/

另一方面,Kalman 很难理解,需要进行一些研究才能正确使用它(并且实现真的很难)。根据this answer您可能会发现互补过滤器更容易实现。

关于c++ - 从速度值中滤除噪声和变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758498/

相关文章:

c++ - C++中使用数组如何导致安全问题

c++ - 按结构中的变量对结构 vector 进行排序?

Simon Plouffe 1996 计算 pi 算法的 C 实现失败

algorithm - 算法简介(第 1-1 章)

algorithm - 计算序列的余弦

c++ - clang-tidy - 忽略第三方标题代码

c++ - 什么场景可能需要使用\需要指向(非常量\常量)数据的常量指针

java - 如何以最低价格优化购物车?

java - java中char变量的计算

c++ - 精确的大有限域线性代数库(例如 GF(2^128)/GF(2^256) )