Скольжение стандартного отклонения с помощью Math.Net и LINQ вместо цикла for

Реализованные forцикл уже показывает мой ожидаемый результат. Но мне было интересно, есть ли умное решение LINQ.

QcMeasurementScan1 = new BindableCollection<Measurement>(measurements.Where(m => m.ScanId == 1));
QcMeasurementScan2 = new BindableCollection<Measurement>();

var ms = new MovingStatistics(25);
for (int i = 0; i < QcMeasurementScan1.Count; ++i)
{
    ms.Push(QcMeasurementScan1[i].MeasurementValue);
    if (i >= 24)
    {
        var centerMeas = QcMeasurementScan1[i - 12];
        QcMeasurementScan2.Add(new Measurement { Position = centerMeas.Position, MeasurementValue = ms.StandardDeviation, ScanId = centerMeas.ScanId });
    } 
}

С Entity

public struct Measurement
{
    public int ScanId { get; set; }
    public double Position { get; set; }
    public double MeasurementValue { get; set; }
}

0 ответов

Другие вопросы по тегам