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);
        }