public static IArrayView<EEGDataEntry> DownSample(this IEnumerable<EEGDataEntry> entries, int binWidthMillis)
{
var bins = entries.BinByTime(binWidthMillis);
var downSampled = Arrays.New<EEGDataEntry>(bins.Count);
for (int i = 0; i < bins.Count; i++)
{
if (bins[i].Count == 0)
{
var baseEntry = downSampled[i - 1];
downSampled[i] = new EEGDataEntry(baseEntry.Marker, baseEntry.TimeStamp + binWidthMillis, baseEntry.RelativeTimeStamp + binWidthMillis, baseEntry.Data);
}
else
downSampled[i] = bins[i].AverageEntry();
}
return downSampled;
}