public void Reconstruct() { if (SelectedReconstructSignal != null && SelectedReconstructSignal.HasData()) { var sampledSignal = (SampledSignal)SelectedReconstructSignal; ContinuousSignal signal = new ContinuousSignal(); List <(double, double)> reconstructed; if (SelectedReconstruction.Substring(1, 2) == "R1") { reconstructed = Reconstruction .ZeroOrderHold(sampledSignal.PointsX.Zip(sampledSignal.PointsY, (d, d1) => (d, d1)).ToList(), sampledSignal.Frequency, NSamples) .ToList(); } else { reconstructed = Reconstruction .SincReconstruction(sampledSignal.PointsX.Zip(sampledSignal.PointsY, (d, d1) => (d, d1)).ToList(), sampledSignal.Frequency, NSamples) .ToList(); } signal.PointsX = reconstructed.Select(c => c.Item1).ToList(); signal.PointsY = reconstructed.Select(c => c.Item2).ToList(); signal.Name = ReconstructedSignalName + " - R"; SignalCreator.AddSignal(signal); } }
public void Test1() { var form = new ChartTestForm(); var wavestore = new WaveformStorage(); SignalCreator.CreateSample3(wavestore.Waveforms); wavestore.SaveToCsv("D:\\proba.csv"); var chart = form.chart1; chart.Series.Clear(); chart.Titles.Clear(); chart.Titles.Add("Signals"); for (int wave = 0; wave < wavestore.Waveforms.Count; wave++) { var series = chart.Series.Add(wavestore.Waveforms[wave].Name); series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; for (int yIndex = 0; yIndex < wavestore.Waveforms[wave].YArray.Length; yIndex++) { series.Points.Add(wavestore.Waveforms[wave].YArray[yIndex]); } } form.ShowDialog(); }
private void TransformMethod() { if (SelectedSignal != null) { SampledSignal signal = new SampledSignal(); signal.PointsY = SelectedSignal.PointsY; signal.Name = $"{SelectedSignal.Name} {SelectedTransform}"; Stopwatch timer = new Stopwatch(); timer.Start(); switch (SelectedTransform.Substring(1, 4)) { case "F1.1": signal.ComplexPoints = FourierTransform.Transform(signal.PointsY); break; case "F1.2": FastFourierTransform fourierTransform = new FastFourierTransform(); signal.ComplexPoints = fourierTransform.Transform(signal.PointsY); break; case "F1.3": signal.ComplexPoints = WaveletTransform.Transform(signal.PointsY); break; } timer.Stop(); Time = timer.ElapsedMilliseconds; SignalCreator.AddSignal(signal); } }
public Zad3ViewModel(SignalCreator signalCreator) { SignalCreator = signalCreator; Filters = new List <string>() { "(F0) Filtr dolnoprzepustowy", "(F1) Filtr środkowoprzepustowy", "(F2) Filtr górnoprzepustowy", }; SelectedFilter = Filters[0]; Windows = new List <string>() { "(O0) Okno Prostokątne", "(O1) Okno Hamminga", "(O2) Okno Hanninga", "(O3) Okno Blackmana", }; SelectedWindow = Windows[0]; ConvoluteCommand = new RelayCommand(Convolute); CorrelateCommand = new RelayCommand(Correlate); CreateFilterCommand = new RelayCommand(CreateFilter); CalculateKCommand = new RelayCommand(CalculateK); FilterCommand = new RelayCommand(FilterMethod); }
public void Correlate() { if (SelectedSignalCorrelate1 != null && SelectedSignalCorrelate1.HasData() && SelectedSignalCorrelate2 != null && SelectedSignalCorrelate2.HasData()) { SampledSignal signal = new SampledSignal(); signal.PointsY = Correlation.ComputeSignal(SelectedSignalCorrelate1.PointsY, SelectedSignalCorrelate2.PointsY); signal.Name = $"({SelectedSignalCorrelate1.Name})C({SelectedSignalCorrelate2.Name})"; SignalCreator.AddSignal(signal); } }
public void FilterMethod() { if (SelectedSignalFilter1 != null && SelectedSignalFilter1.HasData() && SelectedSignalFilter2 != null && SelectedSignalFilter2.HasData()) { SampledSignal signal = new SampledSignal(); signal.PointsY = Convolution.ComputeSignal(SelectedSignalFilter1.PointsY, SelectedSignalFilter2.PointsY).Skip((SelectedSignalFilter2.PointsY.Count - 1) / 2).Take(SelectedSignalFilter1.PointsY.Count).ToList(); signal.Name = $"({SelectedSignalFilter1.Name})*({SelectedSignalFilter2.Name})"; SignalCreator.AddSignal(signal); } }
public void Quant() { if (SelectedSampledSignal != null && SelectedSampledSignal.HasData()) { var sampledSignal = (SampledSignal)SelectedSampledSignal; SampledSignal signal = new SampledSignal(); signal.PointsX = sampledSignal.PointsX; signal.StartTime = sampledSignal.StartTime; signal.Frequency = sampledSignal.Frequency; signal.PointsY = Quantization.Quantize(sampledSignal.PointsY, QuantCount); signal.Name = QuantSignalName + " - Q"; SignalCreator.AddSignal(signal); } }
public Zad2ViewModel(SignalCreator signalCreator) { SignalCreator = signalCreator; Reconstructions = new List <string>() { "(R1) Ekstrapolacja zerowego rzędu", "(R3) Rekonstrukcja w oparciu o funkcję sinc", }; SelectedReconstruction = Reconstructions[0]; QuantCommand = new RelayCommand(Quant); ReconstructCommand = new RelayCommand(Reconstruct); ComputeCommand = new RelayCommand(ComputeSignalsDifference); }
public Zad4ViewModel(SignalCreator signalCreator) { SignalCreator = signalCreator; Transforms = new List <string>() { "(F1.1) Transformacja Fouriera", "(F1.2) Szybka Transformacja Fouriera", "(F1.3) Transformacja Falkowa", }; SelectedTransform = Transforms[0]; SelectedReverseTransform = Transforms[0]; TransformCommand = new RelayCommand(TransformMethod); ReverseTransformCommand = new RelayCommand(ReverseTransformMethod); }
public Zad1ViewModel(SignalCreator signalCreator) { SignalCreator = signalCreator; Operations = new List <string>() { "(D1) Dodawanie", "(D2) Odejmowanie", "(D3) Mnożenie", "(D4) Dzielenie", }; SelectedOperation = Operations[0]; ComputeCommand = new RelayCommand(ComputeSignalInfo); ComputeSignalsCommand = new RelayCommand(ComputeSignals); ResultSignalName = "Result Signal"; }
public void CreateFilter() { Func <int, double, List <double> > filterFunction = null; Func <List <double>, int, List <double> > windowFunction = null; switch (SelectedFilter.Substring(1, 2)) { case "F0": filterFunction = Filter.LowPassFilter; break; case "F1": filterFunction = Filter.MidPassFilter; break; case "F2": filterFunction = Filter.HighPassFilter; break; } switch (SelectedWindow.Substring(1, 2)) { case "O0": windowFunction = Filter.RectangularWindow; break; case "O1": windowFunction = Filter.HammingWindow; break; case "O2": windowFunction = Filter.HanningWindow; break; case "O3": windowFunction = Filter.BlackmanWindow; break; } SampledSignal signal = new SampledSignal(); signal.PointsY = Filter.CreateFilterSignal(M, K, filterFunction, windowFunction); signal.Name = FilterName + " - F"; SignalCreator.AddSignal(signal); }
public void Test1() { var form = new Form3(); var wavestore = new WaveformStorage(); SignalCreator.TestSignal(wavestore.Waveforms); Waveform waveform = wavestore.Waveforms[0]; var complexSignal = waveform.FftBruteFroce(); var sepectrum = waveform.GetPowerSpectrum(); var chart = form.chart1; /*---------*/ chart = form.chart1; chart.Series.Clear(); chart.Titles.Clear(); chart.Titles.Add("Power spectrum"); var series = chart.Series.Add(""); series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; for (int i = 0; i < complexSignal.Length; i++) { series.Points.Add(sepectrum[i]); } var bins = waveform.GetFftBins(); var width = chart.Width; Debug.Write("Width:" + width); for (int i = 0; i < bins.Length; i++) { var cl = new System.Windows.Forms.DataVisualization.Charting.CustomLabel(); cl.FromPosition = i + 1.5; cl.ToPosition = i + 2.5; cl.Text = bins[i].ToString("0.00"); chart.ChartAreas[0].AxisX.CustomLabels.Add(cl); } form.ShowDialog(); }
public void Test1() { var form = new Form1(); var form2 = new Form2(); var wavestore = new WaveformStorage(); SignalCreator.TestSignal(wavestore.Waveforms); Waveform waveform = wavestore.Waveforms[0]; var complexSignal = waveform.FftBruteFroce(); var sepectrum = waveform.GetPowerSpectrum(); /*---------*/ var chart = form.chart1; chart.Series.Clear(); chart.Titles.Clear(); chart.Titles.Add("Signals"); var series = chart.Series.Add(""); series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; for (int i = 0; i < waveform.YArray.Length; i++) { series.Points.Add(waveform.YArray[i]); } /*---------*/ chart = form.chart2; chart.Series.Clear(); chart.Titles.Clear(); chart.Titles.Add("FFT-Imaginary"); series = chart.Series.Add(""); series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; for (int i = 0; i < complexSignal.Length; i++) { series.Points.Add(complexSignal[i].Imaginary); } /*---------*/ chart = form.chart3; chart.Series.Clear(); chart.Titles.Clear(); chart.Titles.Add("FFT-Real"); series = chart.Series.Add(""); series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; for (int i = 0; i < complexSignal.Length; i++) { series.Points.Add(complexSignal[i].Real); } /*---------*/ chart = form.chart4; chart.Series.Clear(); chart.Titles.Clear(); chart.Titles.Add("Power spectrum"); series = chart.Series.Add(""); series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; for (int i = 0; i < complexSignal.Length; i++) { series.Points.Add(sepectrum[i]); } var bins = waveform.GetFftBins(); for (int i = 0; i < bins.Length; i++) { var cl = new System.Windows.Forms.DataVisualization.Charting.CustomLabel(); cl.FromPosition = i + 1.5; cl.ToPosition = i + 0.5; cl.Text = bins[i].ToString("0.00"); chart.ChartAreas[0].AxisX.CustomLabels.Add(cl); } form2.Show(); form.ShowDialog(); }
public Zad3ExperimentViewModel(SignalCreator signalCreator) { SignalCreator = signalCreator; StartCommand = new RelayCommand(Start); StopCommand = new RelayCommand(Stop); }