MCAEmotiv.Interop.EEGDataEntryExtensions.DownSample C# (CSharp) Method

DownSample() public static method

Averages adjacent entries such that the result has only one entry per time bin of the specified width
public static DownSample ( this entries, int binWidthMillis ) : IArrayView
entries this
binWidthMillis int
return IArrayView
        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;
        }