Thursday, June 28, 2012

Calculate the exponential moving average of a stream of numbers

  1. public static IEnumerable<double> ExponentialMovingAverage(this IEnumerable<double> source, double alpha)
  2. {
  3. double? last = null;
  4. return source.Select(
  5. value =>
  6. {
  7. var average = last != null ? alpha*value + (1 - alpha)*last.Value : value;
  8. last = average;
  9. return average;
  10. });
  11. }

No comments: