On 11.04.16 14:05, Nicklas Karlsson wrote:
> 
> Is is rather straightforward to calculate from for example the last
> 100 arrival times but a moving average algorithm would be preferred to
> reduce CPU load. Do anybody have any ideas?

If the average is over 64 or 128 samples, then the divide is reduced to
a 6 or 7 bit rightshift. Or does your chosen micro have hardware divide
of sufficient length?

To average the samples, they need to be stored, I figure, but the long
summation need not be performed each time. I'd be tempted to store them
in a circular buffer, then subtract the oldest from the running sum, add
the new sample, save the result as the new running sum, then divide by
64 or 128, using what's fastest to provide the moving average. Writing
the new sample to the circular buffer overwrites the oldest.

The running sum will be a longer integer by 6 or 7 bits, naturally, so
might necesstitate a double precision divide, making the right shift
more competitive, perhaps.

Erik

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial! http://pubads.g.doubleclick.net/
gampad/clk?id=1444514301&iu=/ca-pub-7940484522588532
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to