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"); } }
public override void Execute(Envision.Blocks.EventDescription e) { throw new NotImplementedException(); }