Messages in this thread | | | From | Bruno Randolf <> | Subject | Re: [PATCH v3] Add generic exponentially weighted moving average (EWMA) function | Date | Thu, 21 Oct 2010 14:40:24 +0900 |
| |
On Thu October 21 2010 00:03:43 Peter Zijlstra wrote: > On Wed, 2010-10-20 at 17:23 +0900, Bruno Randolf wrote: > > +/** > > + * ewma_add() - Exponentially weighted moving average (EWMA) > > + * @avg: Average structure > > + * @val: Current value > > + * > > + * Add a sample to the average. > > + */ > > +struct ewma* > > +ewma_add(struct ewma *avg, const unsigned int val) > > +{ > > + avg->internal = avg->internal ? > > + (((avg->internal * (avg->weight - 1)) + > > + (val * avg->factor)) / avg->weight) : > > + (val * avg->factor); > > + return avg; > > +} > > +EXPORT_SYMBOL(ewma_add); > > How can it be a weighted avg if each sample has the same weight?
by applying the weight again and again, we get an exponential weighting.
http://en.wikipedia.org/wiki/Exponentially_weighted_moving_average
bruno
| |