我正在编写一些东西,我正在从一个硬件指南针随着时间的推移一堆价值。 这个指南针是非常准确的,经常更新,结果是,如果它轻微抖动,我会得到与其邻居大不相同的奇数值。 我想要平滑这些价值观。 经过一些阅读,看来我想要的是高通滤波器,低通滤波器或移动平均。 移动平均数我可以记住,只是保留最后5个值的历史logging,或者在我刚刚使用最近值的代码中使用这些值的平均值。 我认为,这应该很好地消除这些抖动,但是这让我觉得这可能是效率很低的,这可能是适合程序员的已知问题之一,其中有一个巧妙的math解决scheme。 然而,我是那些可怕的自学成才的程序员之一,没有任何与CompSci或Math相关的正规教育。 仔细阅读,可以看出这可能是高通滤波器或低通滤波器,但是我找不到任何可以用像我这样的黑客理解的东西来解释这些algorithm对一系列值的影响,更不用说如何math作品。 例如, 在这里给出的答案在技术上确实回答了我的问题,但仅仅是对那些可能已经知道如何解决问题的人来说是可理解的。 这真是一个非常可爱,聪明的人,他可以用这个问题来解释这个问题,以及这个解决scheme是如何工作的。
我试图find一种方法来计算一个移动的累计平均值,而不存储到目前为止收到的数量和总数据。 我想出了两种algorithm,但都需要存储计数: 新的平均值=((旧的计数旧数据)+下一个数据)/下一个计数 新的平均数=旧的平均数+(下一个数据 – 旧的平均数)/下一个数 这些方法的问题是计数变得越来越大,导致平均值的精度下降。 第一种方法使用旧的计数和下一个计数,明显是相隔1。 这让我想,也许有一种方法来删除计数,但不幸的是,我还没有find它。 它确实让我进一步,虽然,导致第二种方法,但仍然计数是存在的。 这是可能的,还是我只是在寻找不可能的东西?
我在HDFS有一个巨大的文件,具有时间序列数据点(雅虎股票价格)。 我想要find时间序列的移动平均线,我该如何着手编写Apache Spark作业来做到这一点。