这是另一个答案,提供了关于Muis、Abdullah Al-Ageel和Flip的答案在数学上都是相同的东西的评论,只是写法不同。
当然,我们有José Manuel Ramos的分析解释了舍入误差对每个错误的影响略有不同,但这取决于实现,并且会根据每个答案应用于代码的方式而改变。
不过还是有很大区别的
它在Muis的N
、Flip的k
和Abdullah Al-Ageel的n
。 Abdullah Al-Ageel并没有完全解释n
应该是什么,但N
不同k
的N
是“你想要平均的样本数”,而k
采样值的计数。(虽然我怀疑调用N
样本数量是否准确。)
在这里,我们得出下面的答案。它基本上与其他旧指数加权移动平均线相同,因此如果您正在寻找替代方案,请在此处停止。
指数加权移动平均线
最初:
average = 0
counter = 0
对于每个值:
counter += 1
average = average + (value - average) / min(counter, FACTOR)
区别在于min(counter, FACTOR)
部分。这和说的一样min(Flip's k, Muis's N)
。
FACTOR
是一个常数,它影响平均“赶上”最新趋势的速度。数字越小速度越快。(此时1
它不再是平均值,而是成为最新值。)
这个答案需要运行计数器counter
。如果有问题,min(counter, FACTOR)
可以将其替换为 just FACTOR
,将其变成Muis的答案。这样做的问题是移动平均线受到average
初始化的任何影响。如果将其初始化为0
,则该零可能需要很长时间才能超出平均值。
它最终看起来如何