Exemplo n.º 1
0
        public static IEnumerable <Point2D> MovingAverage(this IList <Point2D> data, double windowSize)
        {
            if (data.Count == 0)
            {
                yield break;
            }

            var orderedData   = data.OrderBy(p => p.X).ToList();
            var slidingWindow = new SlidingWindow <Point2D>(orderedData, p => p.X, windowSize, WindowPositioningType.CenteredAtPosition);

            foreach (var point in orderedData)
            {
                slidingWindow.SetPosition(point.X);
                yield return(new Point2D(point.X, slidingWindow.Average(p => p.Y)));
            }
        }