示例#1
0
 public override void Execute(Envision.Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         var Tx = InputNodes[0].Object;
         if (Envision.Components.Utils.IsSignal(Tx))
         {
             OpenSignalLib.Sources.Signal s = Envision.Components.Utils.AsSignal(Tx);
             OpenSignalLib.Sources.Signal n = new OpenSignalLib.Sources.WhiteGaussianNoise
                                                  (s.Samples.Length, SNRdB, (int)s.SamplingRate, s.SignalEnergy());
             OutputNodes[0].Object = s + n;
         }
         else if (Envision.Components.Utils.IsArrayOf <Complex>(Tx))
         {
             Complex[] vals = (Complex[])Tx;
             OpenSignalLib.Sources.Signal s1 = new OpenSignalLib.Sources.Signal(1f, new double[vals.Length]);
             OpenSignalLib.Sources.Signal s2 = new OpenSignalLib.Sources.Signal(1f, new double[vals.Length]);
             for (int i = 0; i < vals.Length; i++)
             {
                 s1.Samples[i] = vals[i].Re;
                 s2.Samples[i] = vals[i].Im;
             }
             OpenSignalLib.Sources.Signal n1 = new OpenSignalLib.Sources.WhiteGaussianNoise
                                                   (s1.Samples.Length, SNRdB, (int)s1.SamplingRate, s1.SignalEnergy());
             OpenSignalLib.Sources.Signal n2 = new OpenSignalLib.Sources.WhiteGaussianNoise
                                                   (s2.Samples.Length, SNRdB, (int)s2.SamplingRate, s2.SignalEnergy());
             s1 = s1 + n1;
             s2 = s2 + n1;
             for (int i = 0; i < vals.Length; i++)
             {
                 vals[i] = new Complex(s1.Samples[i], s2.Samples[i]);
             }
             OutputNodes[0].Object = vals;
         }
     }
     else
     {
         throw new InvalidOperationException("input terminal 'Tx' not connected");
     }
 }
示例#2
0
 public override void Execute(Envision.Blocks.EventDescription e)
 {
     throw new NotImplementedException();
 }