У меня есть класс в c#, объявленный как:
public class Item
{
public double X { get; set; }
public double Y { get; set; }
public double XMovingAverage { get; set; }
public double YMovingAverage { get; set; }
}
Предположим теперь, что у меня есть список таких предметов:
List<Item> items = <ordered list of items>
Тогда я мог бы вычислить перемещение среднее значение для X, например:
int index = 0;
foreach (var item in items)
{
item.XMovingAverage = CalculateXMovingAverage(items, index, 100);
}
private double CalculateXMovingAverage(List<Item> items, int index, int N)
{
double sum = 0.0;
int i = index;
int n = 0;
while ((n < N) & (i >= 0))
{
sum += items[i].X;
n++;
i--;
}
double movingAverage = sum / n;
return movingAverage;
}
Это отлично работает, но не очень элегантно, поскольку, если я хочу рассчитать скользящее среднее для Y, мне нужно снова скопировать / вставить точно такой же код для Y как я уже писал для X.
Как это можно сделать более элегантно, чтобы можно было рассчитать скользящее среднее для любого числового значения c для элементов в списке?