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();
 }
Exemple #3
0
        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]);
        }