Exemple #1
0
 public override void Execute(Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         var obj = InputNodes[0].Object;
         if (obj != null)
         {
             double[] vals = new double[1];
             if (Utils.IsSignal(obj))
             {
                 OpenSignalLib.Sources.Signal sig = Utils.AsSignal(obj);
                 vals = sig.Samples;
             }
             else if (Utils.IsArrayOf <double>(obj))
             {
                 vals = (double[])obj;
             }
             else if (Utils.IsArrayOf <float>(obj))
             {
                 vals = OpenSignalLib.Operations.Misc.ToArray((float[])obj);
             }
             else if (obj.ToString().IsNumeric())
             {
                 vals[0] = double.Parse(obj.ToString());
             }
             else
             {
                 throw new InvalidCastException("invalid input type : " + obj.GetType().Name);
             }
             OutputNodes[0].Object = process(vals);
         }
     }
 }
Exemple #2
0
 public override void Execute(Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         if (confi == null && !System.IO.File.Exists(FileName))
         {
             throw new Exception(this.ID + " <" + this.Name + ">  ::  File '" + FileName + "' does not exist or is invalid");
         }
         if (Utils.IsSignal(InputNodes[0].Object))
         {
             OpenSignalLib.Filters.IIRFilter iir;
             if (confi == null) // use co-efficients file
             {
                 var coeffs = ReadCoefficientFile(FileName);
                 iir = new OpenSignalLib.Filters.IIRFilter(coeffs.Keys.ToArray(),
                                                           coeffs.Values.ToArray());
             }
             else // use desinger specifications
             {
                 iir = OpenSignalLib.Filters.FilterDesign.DesignIIR(confi.FilterType, confi.BandType, confi.n,
                                                                    confi.fc, confi.f0, confi.Ap, confi.As);
             }
             OpenSignalLib.Sources.Signal sig = Utils.AsSignal(InputNodes[0].Object);
             float[] filtered = OpenSignalLib.Filters.FilterDesign.ApplyFilter(iir,
                                                                               OpenSignalLib.Operations.Misc.ToArray(sig.Samples));
             OutputNodes[0].Object = new OpenSignalLib.Sources.Signal(sig.SamplingRate,
                                                                      OpenSignalLib.Operations.Misc.ToArray(filtered));
         }
     }
 }
Exemple #3
0
        public override void Execute(Blocks.EventDescription e)
        {
            var sel = InputNodes[2].Object;
            var in1 = InputNodes[0].Object;
            var in2 = InputNodes[1].Object;

            if (Utils.IsSignal(sel) && Utils.IsSignal(in1) && Utils.IsSignal(in2))
            {
                OpenSignalLib.Sources.Signal s1   = Utils.AsSignal(in1);
                OpenSignalLib.Sources.Signal s2   = Utils.AsSignal(in2);
                OpenSignalLib.Sources.Signal ctrl = Utils.AsSignal(sel);
                if (s1.Length == s2.Length && s1.Length == ctrl.Length)
                {
                }
            }
            else
            {
                if (sel == null || false == (bool)sel)
                {
                    OutputNodes[0].Object = InputNodes[1].Object;
                }
                else
                {
                    OutputNodes[0].Object = InputNodes[0].Object;
                }
            }
        }
Exemple #4
0
 public override void Execute(Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         var      obj = InputNodes[0].Object;
         double[] x, y;
         if (obj != null)
         {
             if (Utils.IsArrayOf <double>(obj))
             {
                 dynamic vals = obj;
                 y = (double[])vals;
                 x = new double[y.Length];
                 for (int i = 0; i < y.Length; i++)
                 {
                     x[i] = (double)i;
                 }
                 var pltctrl = _createPlot(x, y);
             }
             else if (Utils.IsSignal(obj))
             {
                 OpenSignalLib.Sources.Signal sig = Utils.AsSignal(obj);
                 y = sig.Samples;
                 x = new double[y.Length];
                 for (int i = 0; i < x.Length; i++)
                 {
                     x[i] = i * (1.0 / sig.SamplingRate);
                 }
                 var pltctrl = _createPlot(x, y);
             }
             else if (obj.GetType() == typeof(Dictionary <double, double>))
             {
                 Dictionary <double, double> vals = (Dictionary <double, double>)obj;
                 x = vals.Keys.ToArray();
                 y = vals.Values.ToArray();
                 var pltctrl = _createPlot(x, y);
                 Logger.D("Dictionary");
             }
             else if (Utils.IsArrayOf <Complex>(obj))
             {
                 Complex[] vals = (Complex[])obj;
                 x = new double[vals.Length];
                 y = new double[vals.Length];
                 for (int i = 0; i < vals.Length; i++)
                 {
                     x[i] = vals[i].Re;
                     y[i] = vals[i].Im;
                 }
                 var pltctrl = _createPlot(x, y);
                 pltctrl.Curve.Line.IsVisible = false;
                 pltctrl.Curve.Symbol.Type    = ZedGraph.SymbolType.Circle;
             }
             else
             {
                 throw new Exception("invalid input type : " + obj.GetType().Name);
             }
         }
     }
 }
Exemple #5
0
 public static OpenSignalLib.Sources.Signal SelectLongest(OpenSignalLib.Sources.Signal a, OpenSignalLib.Sources.Signal b)
 {
     if (a.Samples.Length > b.Samples.Length)
     {
         return(a);
     }
     else
     {
         return(b);
     }
 }
Exemple #6
0
 public static OpenSignalLib.Sources.Signal SelectOther(OpenSignalLib.Sources.Signal a,
                                                        OpenSignalLib.Sources.Signal b, OpenSignalLib.Sources.Signal selected)
 {
     if (a == selected)
     {
         return(b);
     }
     else
     {
         return(a);
     }
 }
Exemple #7
0
 public override void Execute(Blocks.EventDescription e)
 {
     OpenSignalLib.Sources.Signal s;
     if (GenerateSymbols)
     {
         s = new OpenSignalLib.Sources.Signal((float)1, GetLineCodedStream());
     }
     else
     {
         s = new OpenSignalLib.Sources.Signal((float)this.SampleRate, GetLineCodedStream());
     }
     OutputNodes[0].Object = s;
 }
Exemple #8
0
 public override void Execute(Blocks.EventDescription e)
 {
     OpenSignalLib.Sources.Signal sig = null;
     foreach (var item in this.Frequencies)
     {
         float f = float.Parse(item);
         if (sig == null)
         {
             sig = new OpenSignalLib.Sources.Sinusoidal(f, 0.0f, (float)this.SampleRate, 1, this.Length);
         }
         else
         {
             sig += new OpenSignalLib.Sources.Sinusoidal(f, 0.0f, (float)this.SampleRate, 1, this.Length);
         }
     }
     OutputNodes[0].Object = sig;
 }
 public override void Execute(EventDescription token)
 {
     if (this.LastEvent != token)
     {
         var _input1 = InputNodes[0].Object;
         var _input2 = InputNodes[1].Object;
         if (_input1 != null && _input2 != null)
         {
             dynamic a = 0;
             dynamic b = 0;
             if (_input1.ToString().IsNumeric() && _input2.ToString().IsNumeric())
             {
                 a = double.Parse(_input1.ToString());
                 b = double.Parse(_input2.ToString());
                 OutputNodes[0].Object = DoOp(a, b);
             }
             else if (Utils.IsSignal(_input1) && Utils.IsSignal(_input2))
             {
                 var in1      = (OpenSignalLib.Sources.Signal)(Utils.AsSignal(_input1));
                 var in2      = (OpenSignalLib.Sources.Signal)(Utils.AsSignal(_input2));
                 var longest  = (OpenSignalLib.Sources.Signal)Utils.SelectLongest(in1, in2);
                 var shortest = (OpenSignalLib.Sources.Signal)Utils.SelectOther(in1, in2, longest);
                 OpenSignalLib.Sources.Signal s = new OpenSignalLib.Sources.Signal();
                 s.Samples      = new double[longest.Samples.Length];
                 s.SamplingRate = Math.Min(longest.SamplingRate, shortest.SamplingRate);
                 for (int i = 0; i < shortest.Samples.Length; i++)
                 {
                     a            = longest.Samples[i];
                     b            = shortest.Samples[i];
                     s.Samples[i] = DoOp(a, b);
                 }
                 OutputNodes[0].Object = s;
             }
             else if (Utils.IsInitialCondition(_input1) || Utils.IsInitialCondition(_input2))
             {
                 InitialCondition inC   = (InitialCondition)(Utils.IsInitialCondition(_input1) ? _input1 : _input2);
                 object           other = (Utils.IsInitialCondition(_input1) ? _input2 : _input1);
                 if (Utils.IsSignal(other))
                 {
                     OutputNodes[0].Object = Utils.AsSignal(other);
                 }
             }
         }
     }
 }
Exemple #10
0
 public override void Execute(Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         var obj = InputNodes[0].Object;
         if (Utils.IsSignal(obj))
         {
             OpenSignalLib.Sources.Signal sig = Utils.AsSignal(obj);
             double power = 0.0;
             for (int i = 0; i < sig.Samples.Length; i++)
             {
                 power += (sig.Samples[i] * sig.Samples[i]);
             }
             power = (1.0 / sig.Samples.Length) * power;
             OutputNodes[0].Object = power;
         }
     }
 }
Exemple #11
0
 public override void Execute(Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         if (!System.IO.File.Exists(FileName))
         {
             throw new Exception(this.ID + " <" + this.Name + ">  ::  File '" + FileName + "' does not exist or is invalid");
         }
         if (Utils.IsSignal(InputNodes[0].Object))
         {
             OpenSignalLib.Filters.FIRFilter fir = new OpenSignalLib.Filters.FIRFilter(ReadCoefficientFile(FileName));
             OpenSignalLib.Sources.Signal    sig = Utils.AsSignal(InputNodes[0].Object);
             float[] filtered = OpenSignalLib.Filters.FilterDesign.ApplyFilter(fir,
                                                                               OpenSignalLib.Operations.Misc.ToArray(sig.Samples));
             OutputNodes[0].Object = new OpenSignalLib.Sources.Signal(sig.SamplingRate,
                                                                      OpenSignalLib.Operations.Misc.ToArray(filtered));
         }
     }
 }
Exemple #12
0
 public override void Execute(Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         double[] x, y;
         var      obj = InputNodes[0].Object;
         if (Utils.IsSignal(obj))
         {
             OpenSignalLib.Sources.Signal s = Utils.AsSignal(obj);
             Logger.D(s.SamplingRate.ToString());
             int n        = int.Parse(AppGlobals.PyExecuteExpr(N).ToString());
             var spectrum = OpenSignalLib.Transforms.Fourier.fspectrum(s, n);
             x = spectrum.Keys.ToArray();
             y = spectrum.Values.ToArray();
         }
         else
         {
             throw new Exception("invalid input type : " + obj.GetType().Name);
         }
         if (!Hold || (plotControl.Window == null || plotControl.Window.IsDisposed))
         {
             _createPlot(x, y);
         }
         if (Hold)
         {
             plotControl.Curve.Clear();
             for (int i = 0; i < x.Length; i++)
             {
                 if (Scale == Scales.dB_Scale)
                 {
                     plotControl.Curve.AddPoint(x[i], 10 * Math.Log10(y[i]));
                 }
                 else
                 {
                     plotControl.Curve.AddPoint(x[i], y[i]);
                 }
             }
             plotControl.Control.AxisChange();
             plotControl.Control.Invalidate();
         }
     }
 }
Exemple #13
0
 public override void Execute(Blocks.EventDescription e)
 {
     if (InputNodes[0].ConnectingNode != null)
     {
         var obj = InputNodes[0].Object;
         if (obj != null)
         {
             if (Utils.IsSignal(obj))
             {
                 OpenSignalLib.Sources.Signal sig = Utils.AsSignal(obj);
                 var fout = new System.IO.StreamWriter(FileName);
                 for (int i = 0; i < sig.Samples.Length; i++)
                 {
                     fout.WriteLine(sig.Samples[i].ToString());
                 }
                 fout.Close();
             }
         }
     }
 }
Exemple #14
0
        public override void Execute(Blocks.EventDescription e)
        {
            //t0=t(1);
            //T=t1-t0;
            //k=(f1-f0)/T;
            //x=cos(2*pi*(k/2*t+f0).*t+phase);
            double t0 = 0;
            double T  = t1;
            double k  = (f1 - f0) / T;

            OpenSignalLib.Sources.Signal sig = new OpenSignalLib.Sources.Signal(this.SamplingRate, new double[Length]);
            double t = 0;

            for (int i = 0; i < this.Length; i++)
            {
                t = i * (1.0 / SamplingRate);
                sig.Samples[i] = Math.Cos(2 * Math.PI * ((k / 2 * t) + f0) * t + Phase);
            }
            OutputNodes[0].Object = sig;
        }
Exemple #15
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");
     }
 }