我正在使用JavaScript进行物理处理,并且有一个值指示“物理”世界中的联系数量。该值可以在0到6之间。问题是我波动很大。我要过滤掉峰值。假设该数字为3,然后在不到一秒的时间内变为零,然后再次返回3。关于如何做到最好的任何想法?
最佳答案
一个很好的拟合可以是滑动窗口中的中值过滤器。考虑最后的N个值,其中N至少是下降持续时间的两倍。然后,您的过滤值就是N的中位数。您将N个样本移动一个位置,从而永远重复一次。
由于您的值在很小的范围内是离散的,因此中值算法将非常简单。您保留七个可能值的直方图,即七个计数器。每当您移动一个位置时,请递减最旧的值并递增新的值。中值是这样的,使得累计计数达到N / 2。
会有一定的惯性,即真正的变化将需要一些时间才能被确认,但这是不可避免的,因为任何算法都需要确认永久性变化而不是暂时性下降。