void DrawQuantizedPlot(List <DataPoint> previousPoints, out List <double> measuredValues) { DrawChart(previousPoints, false); var quantizedPoints = SignalConverter.QuantizeSignal(previousPoints, QuantizationLevel, out var measures); //var interpolatedPoints = SignalConverter.Interpolate(previousPoints.Count, // previousPoints.Select(p => new ScatterPoint(p.X, p.Y)).ToList(), SamplingFrequency, SamplingFrequencyAc, InitialTime, out var measures); measuredValues = measures; var stepSizeSeries = new StairStepSeries { MarkerStrokeThickness = .1, MarkerSize = 1, MarkerStroke = OxyColors.Blue, MarkerFill = OxyColors.Transparent, MarkerType = MarkerType.Diamond, Color = OxyColors.Blue, BrokenLineColor = OxyColors.Blue, BrokenLineThickness = .1, StrokeThickness = .1, }; foreach (var point in quantizedPoints) { stepSizeSeries.Points.Add(point); } upperPlot.Model.Series.Add(stepSizeSeries); }
void DrawSincReconstructionPlot(List <DataPoint> previousPoints, out List <double> measuredValues) { DrawSamplingPlot(previousPoints, out _, false); var sampledSignal = SignalConverter.SampleSignal(previousPoints, Frequency, SamplingFrequencyAc, out measuredValues); var sincPoints = SignalConverter.SincReconstruction(sampledSignal.ToList(), SamplingFrequencyAc, out measuredValues, ConsideredSamplesNumber).ToList(); foreach (var point in sincPoints) { sincSeries.Points.Add(point); } upperPlot.Model.Series.Add(sincSeries); }
void DrawInterpolatedPlot(List <DataPoint> previousPoints, out List <double> measuredValues) { DrawSamplingPlot(previousPoints, out _, false); var sampledSignal = SignalConverter.SampleSignal(previousPoints, Frequency, SamplingFrequencyAc, out measuredValues); var extrapolatedPoints = SignalConverter.ZeroAndHoldExtrapolation(sampledSignal.ToList(), SamplingFrequencyAc, out measuredValues, ConsideredSamplesNumber).ToList(); interpolatedSeries.Points.Clear(); foreach (var point in extrapolatedPoints) { interpolatedSeries.Points.Add(point); } upperPlot.Model.Series.Add(interpolatedSeries); }
void DrawSamplingPlot(List <DataPoint> previousPoints, out List <double> measuredValues, bool drawOriginalSignal = true) { // draw original signal DrawChart(previousPoints, false, drawOriginalSignal); var sampledPoints = SignalConverter.SampleSignal(previousPoints, Frequency, SamplingFrequencyAc, out measuredValues); var scatterSeries = new ScatterSeries { MarkerStrokeThickness = .1, MarkerSize = 2, MarkerStroke = OxyColors.Red, MarkerFill = OxyColors.Transparent, MarkerType = MarkerType.Diamond }; foreach (var point in sampledPoints) { scatterSeries.Points.Add(point); } upperPlot.Model.Series.Add(scatterSeries); }