我正在编写一些东西,随着时间的推移,我正在从硬件罗盘中获取一堆值。这个指南针非常准确并且经常更新,因此如果它轻微晃动,我最终会得到与其邻居大相径庭的奇数值。我想平滑这些值。
做了一些阅读后,看来我想要的是高通滤波器、低通滤波器或移动平均线。我可以使用移动平均线,只需保留最后 5 个值或其他值的历史记录,然后在我的代码下游使用这些值的平均值,而我曾经只是使用最近的值。
我认为,这应该可以很好地消除这些抖动,但让我印象深刻的是它可能效率很低,这可能是正确程序员的已知问题之一,有一个非常简洁的聪明数学解决方案。
然而,我是那些糟糕的自学成才的程序员之一,在任何与 CompSci 或数学模糊相关的事情上都没有接受过任何正规教育。仔细阅读表明这可能是一个高通或低通滤波器,但我找不到任何可以用像我这样的黑客可以理解的术语解释这些算法对一组值的影响,更不用说如何数学有效。例如,此处给出的答案在技术上确实回答了我的问题,但仅以那些可能已经知道如何解决问题的人可以理解的方式回答。
这将是一个非常可爱和聪明的人,他可以用文科毕业生可以理解的术语来解释这是什么问题,以及解决方案是如何工作的。