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); } } }
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)); } } }
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; } } }
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); } } } }
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); } }
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); } }
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; }
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); } } } } }
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; } } }
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)); } } }
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(); } } }
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(); } } } }
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; }
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"); } }