public void TestFFTBlockExecute() { //Test with periodic signal var signalBlock = new GenerateSignalBlock { TemplateName = "Binary", Start = 0, Finish = 7, SamplingRate = 1, Offset = 1.1 }; var fftBlock = new FFTBlock(); fftBlock.Execute(); signalBlock.OutputNodes[0].ConnectTo(fftBlock.InputNodes[0]); Assert.IsNotNull(fftBlock.Name); Assert.IsNotNull(fftBlock.Description); Assert.IsNotNull(fftBlock.ProcessingType); signalBlock.Execute(); Assert.AreEqual("3.2 0.0 0.0 0.0", fftBlock.OutputNodes[0].Object.ToString(1)); //Test cascade var scalarBlock = new ScalarOperationBlock { Value = 1, Operation = WaveMath.OperationEnum.Sum }; fftBlock.OutputNodes[0].ConnectTo(scalarBlock.InputNodes[0]); signalBlock.Execute(); Assert.AreEqual("4.2 1.0 1.0 1.0", scalarBlock.OutputNodes[0].Object.ToString(1)); //Test when cascade is false fftBlock.Cascade = false; var fftBlock2 = (FFTBlock)fftBlock.Clone(); fftBlock.OutputNodes[0].ConnectTo(fftBlock2.InputNodes[0]); signalBlock.Execute(); Assert.AreEqual(0, fftBlock2.OutputNodes[0].Object.Count); }
public static List<double> FFTTransform(List<double> serie) { //Declaring the blocks var inputSeriesBlock = new InputSeriesBlock(); inputSeriesBlock.SetSeries(serie); var outputSeriesBlock = new OutputSeriesBlock(); var fFTBlock = new FFTBlock { Mode = ManagedFFTModeEnum.UseLookupTable }; //Connecting the blocks inputSeriesBlock.OutputNodes[0].ConnectTo(fFTBlock.InputNodes[0]); fFTBlock.OutputNodes[1].ConnectTo(outputSeriesBlock.InputNodes[0]); //Appending the blocks to a block list and execute all var blockList = new BlockList(); blockList.Add(inputSeriesBlock); blockList.Add(fFTBlock); blockList.Add(outputSeriesBlock); blockList.ExecuteAll(); return outputSeriesBlock.GetSeries(); }
public void TestIFFTBlockExecute() { var signalBlock = new GenerateSignalBlock { TemplateName = "Binary", Start = 0, Finish = 31, SamplingRate = 1, Offset = 1.1 }; var fftBlock = new FFTBlock(); var ifftBlock = new IFFTBlock(); ifftBlock.Execute(); signalBlock.OutputNodes[0].ConnectTo(fftBlock.InputNodes[0]); fftBlock.OutputNodes[1].ConnectTo(ifftBlock.InputNodes[0]); Assert.IsNotNull(ifftBlock.Name); Assert.IsNotNull(ifftBlock.Description); Assert.IsNotNull(ifftBlock.ProcessingType); signalBlock.Execute(); Assert.AreEqual("1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1 1.1 2.1", ifftBlock.OutputNodes[0].Object.ToString(1)); //Test cascade var scalarBlock = new ScalarOperationBlock { Value = 1, Operation = WaveMath.OperationEnum.Sum }; ifftBlock.OutputNodes[0].ConnectTo(scalarBlock.InputNodes[0]); signalBlock.Execute(); Assert.AreEqual("2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1 2.1 3.1", scalarBlock.OutputNodes[0].Object.ToString(1)); //Test when cascade is false fftBlock.Cascade = false; var ifftBlock2 = (IFFTBlock)ifftBlock.Clone(); ifftBlock.OutputNodes[0].ConnectTo(ifftBlock2.InputNodes[0]); signalBlock.Execute(); Assert.AreEqual(0, ifftBlock2.OutputNodes[0].Object.Count); ifftBlock2.Cascade = false; ifftBlock2.Execute(); Assert.IsNotNull(ifftBlock2.OutputNodes[0].Object[0]); }