예제 #1
0
 public void Convolute()
 {
     if (SelectedSignal1 != null && SelectedSignal1.HasData() && SelectedSignal2 != null && SelectedSignal2.HasData())
     {
         SampledSignal signal = new SampledSignal();
         signal.PointsY = Convolution.ComputeSignal(SelectedSignal1.PointsY, SelectedSignal2.PointsY);
         signal.Name    = $"({SelectedSignal1.Name})*({SelectedSignal2.Name})";
         SignalCreator.AddSignal(signal);
     }
 }
예제 #2
0
 public void ComputeSignalsDifference()
 {
     if (SelectedSignal1 != null && SelectedSignal2 != null && SelectedSignal1.HasData() && SelectedSignal2.HasData())
     {
         MSE  = SimilarityFunctions.CalculateMSE(SelectedSignal1.PointsY, SelectedSignal2.PointsY);
         SNR  = SimilarityFunctions.CalculateSNR(SelectedSignal1.PointsY, SelectedSignal2.PointsY);
         PSNR = SimilarityFunctions.CalculatePNSR(SelectedSignal1.PointsY, SelectedSignal2.PointsY);
         MD   = SimilarityFunctions.CalculateMD(SelectedSignal1.PointsY, SelectedSignal2.PointsY);
         ENOB = SimilarityFunctions.CalculateENOB(SelectedSignal1.PointsY, SelectedSignal2.PointsY);
     }
 }
예제 #3
0
        public void ComputeSignals()
        {
            if (SelectedSignal1 != null && SelectedSignal2 != null)
            {
                if (IsComplex)
                {
                    SampledSignal  signal = new SampledSignal();
                    List <Complex> points = new List <Complex>();

                    switch (SelectedOperation.Substring(1, 2))
                    {
                    case "D1":
                        points = SignalOperations.AddComplexSignals(SelectedSignal1.ComplexPoints,
                                                                    SelectedSignal2.ComplexPoints);
                        break;

                    case "D2":
                        points = SignalOperations.SubtractComplexSignals(SelectedSignal1.ComplexPoints,
                                                                         SelectedSignal2.ComplexPoints);
                        break;

                    case "D3":
                        points = SignalOperations.MultiplyComplexSignals(SelectedSignal1.ComplexPoints,
                                                                         SelectedSignal2.ComplexPoints);
                        break;

                    case "D4":
                        points = SignalOperations.DivideComplexSignals(SelectedSignal1.ComplexPoints,
                                                                       SelectedSignal2.ComplexPoints);
                        break;
                    }
                    signal.ComplexPoints = points;
                    signal.Name          = ResultSignalName + " - S [Complex]";
                    SignalCreator.Signals.Add(signal);
                    SignalCreator.SampledSignals.Add(signal);
                }
                else
                {
                    if (!SelectedSignal2.IsValid(SelectedSignal2))
                    {
                        MessageBox.Show("Given signals are not valid", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                    SampledSignal signal  = new SampledSignal();
                    List <double> pointsY = new List <double>();

                    switch (SelectedOperation.Substring(1, 2))
                    {
                    case "D1":
                        pointsY = SignalOperations.AddSignals(SelectedSignal1.PointsY,
                                                              SelectedSignal2.PointsY);
                        break;

                    case "D2":
                        pointsY = SignalOperations.SubtractSignals(SelectedSignal1.PointsY,
                                                                   SelectedSignal2.PointsY);
                        break;

                    case "D3":
                        pointsY = SignalOperations.MultiplySignals(SelectedSignal1.PointsY,
                                                                   SelectedSignal2.PointsY);
                        break;

                    case "D4":
                        pointsY = SignalOperations.DivideSignals(SelectedSignal1.PointsY,
                                                                 SelectedSignal2.PointsY);
                        break;
                    }
                    signal.PointsY   = pointsY;
                    signal.StartTime = SelectedSignal1.StartTime;
                    signal.Frequency = SelectedSignal1.Frequency;
                    signal.CalculateSamplesX();
                    signal.Name = ResultSignalName + " - S";
                    SignalCreator.Signals.Add(signal);
                    SignalCreator.SampledSignals.Add(signal);
                }
            }
        }