示例#1
0
        public void TestIDWTBlockExecute()
        {
            const string signal1     = "1 2 3 4 5 6 7 8 7 6 16 5 4 3 2 1";
            const string signal2     = "7 6 16 5 4 3 2 1 1 2 3 4 5 6 7 8";
            const string signal      = "Signal1 " + signal1 + "\r\nSignal2 " + signal2;
            var          signalBlock = new ImportFromTextBlock {
                Text = signal, ColumnSeparator = " "
            };
            var dwtBlock = new DWTBlock {
                WaveletName = "db4", Level = 2, ExtensionMode = SignalExtension.ExtensionMode.SymmetricHalfPoint
            };
            var idwtBlock = new IDWTBlock {
                WaveletName = "db4|Daubechies 4", Level = 2
            };

            idwtBlock.Execute();
            Assert.IsTrue(idwtBlock.WaveletNameList.Count > 0);
            Assert.AreEqual("db4|Daubechies 4", idwtBlock.WaveletName);

            signalBlock.OutputNodes[0].ConnectTo(dwtBlock.InputNodes[0]);
            dwtBlock.OutputNodes[0].ConnectTo(idwtBlock.InputNodes[0]);
            dwtBlock.OutputNodes[1].ConnectTo(idwtBlock.InputNodes[1]);
            Assert.IsNotNull(idwtBlock.Name);
            Assert.IsNotNull(idwtBlock.Description);
            Assert.IsNotNull(idwtBlock.ProcessingType);

            signalBlock.Execute();
            Assert.AreEqual(signal1, idwtBlock.OutputNodes[0].Object[0].ToString(0));
            Assert.AreEqual(signal2, idwtBlock.OutputNodes[0].Object[1].ToString(0));

            var block2 = (IDWTBlock)idwtBlock.Clone();

            block2.WaveletName = "db4";
            signalBlock.OutputNodes[0].ConnectTo(block2.InputNodes[0]);
            idwtBlock.OutputNodes[0].ConnectTo(block2.InputNodes[1]);
            signalBlock.Execute();
            idwtBlock.Execute();
            Assert.AreEqual("3.2 1.8 4.6 1.8 6.0 1.8 7.4 1.8 8.8 1.8 9.8 0.4 9.5 -1.3 12.0 5.7 15.6 0.7 5.2 -7.5 14.2 -4.2 5.3 -1.8 3.9 -1.8", block2.OutputNodes[0].Object[0].ToString(1));

            idwtBlock.Cascade = false;
            block2            = (IDWTBlock)idwtBlock.Clone();
            idwtBlock.OutputNodes[0].ConnectTo(block2.InputNodes[0]);
            signalBlock.Execute();
            idwtBlock.Execute();
            Assert.AreEqual(0, block2.OutputNodes[0].Object.Count);

            try
            {
                idwtBlock.WaveletName = "nonono";
                Assert.Fail("Exception not thrown!");
            }
            catch (Exception)
            {
                Assert.IsTrue(true, "Exception thrown! Yeay!");
            }
        }
示例#2
0
        public double Run(double[] data, int detailLevel)
        {
            var sb = new StringBuilder();

            for (int i = 0; i < data.Length; i++)
            {
                sb.Append(data[i]);
                if (i < data.Length - 1)
                {
                    sb.Append(",");
                }
            }

            string datastring = sb.ToString();

            var textBlock = new ImportFromTextBlock
            {
                Text                    = datastring,
                ColumnSeparator         = ",",
                SignalStart             = 0,
                SignalNameInFirstColumn = false
            };

            var dwtBlock = new DWTBlock
            {
                WaveletName   = "db10",
                Level         = detailLevel,
                ExtensionMode = SignalExtension.ExtensionMode.ZeroPadding
            };


            var b = new BlockList();

            b.Add(textBlock);
            b.Add(dwtBlock);

            textBlock.ConnectTo(dwtBlock);

            b.ExecuteAll();

            int length = dwtBlock.OutputNodes[dwtBlock.OutputNodes.Count - 1].Object[detailLevel - 1].Samples.Length;

            double val = dwtBlock.OutputNodes[dwtBlock.OutputNodes.Count - 1].Object[detailLevel - 1].Samples[length - 1];

            return(val);
        }
示例#3
0
        public double Run(double[] data, int detailLevel)
        {
            var sb = new StringBuilder();
            for (int i = 0; i < data.Length; i++)
            {
                sb.Append(data[i]);
                if (i < data.Length - 1) sb.Append(",");
            }

            string datastring = sb.ToString();

            var textBlock = new ImportFromTextBlock
            {
                Text = datastring,
                ColumnSeparator = ",",
                SignalStart = 0,
                SignalNameInFirstColumn = false
            };

            var dwtBlock = new DWTBlock
            {
                WaveletName = "db10",
                Level = detailLevel,
                ExtensionMode = SignalExtension.ExtensionMode.ZeroPadding
            };


            var b = new BlockList();
            b.Add(textBlock);
            b.Add(dwtBlock);

            textBlock.ConnectTo(dwtBlock);

            b.ExecuteAll();

            int length = dwtBlock.OutputNodes[dwtBlock.OutputNodes.Count-1].Object[detailLevel - 1].Samples.Length;

            double val = dwtBlock.OutputNodes[dwtBlock.OutputNodes.Count-1].Object[detailLevel - 1].Samples[length - 1];

            return val;
        }
示例#4
0
        public void TestIDWTBlockExecute2()
        {
            var signalBlock = new ImportFromTextBlock {
                Text = "2.1,3.2,-1,-1.3,-100,-2,15,22"
            };
            var dwtBlock = new DWTBlock {
                WaveletName = "DB4", Level = 2
            };
            var idwtBlock = new IDWTBlock {
                WaveletName = "DB4", Level = 2
            };

            signalBlock.ConnectTo(dwtBlock);
            //Connect approximation
            dwtBlock.OutputNodes[0].ConnectTo(idwtBlock.InputNodes[0]);
            //Connect details
            dwtBlock.OutputNodes[1].ConnectTo(idwtBlock.InputNodes[1]);
            signalBlock.Execute();
            Console.WriteLine(idwtBlock.OutputNodes[0].Object.ToString(1));

            Assert.AreEqual("2.1 3.2 -1.0 -1.3 -100.0 -2.0 15.0 22.0", idwtBlock.OutputNodes[0].Object.ToString(1));
        }
示例#5
0
        public void TestGlobalizedPropertyDescriptor()
        {
            var block = new DWTBlock {
                WaveletName = "sym2"
            };
            var baseProps           = TypeDescriptor.GetProperties(block, new Attribute[] { }, true);
            var waveletNameProperty = baseProps.Cast <PropertyDescriptor>().FirstOrDefault(baseProp => baseProp.Name == "WaveletName");
            var descriptor          = new GlobalizedPropertyDescriptor(waveletNameProperty);

            Assert.AreEqual(false, descriptor.CanResetValue(block));
            Assert.AreEqual(block.GetType(), descriptor.ComponentType);
            Assert.AreEqual("sym2", descriptor.GetValue(block));
            Assert.AreEqual(Resources.WaveletName, descriptor.DisplayName);
            Assert.AreEqual(Resources.WaveletNameDescription, descriptor.Description);
            Assert.AreEqual(false, descriptor.IsReadOnly);
            Assert.AreEqual("WaveletName", descriptor.Name);
            Assert.AreEqual(typeof(string), descriptor.PropertyType);
            Assert.AreEqual(true, descriptor.ShouldSerializeValue(block));
            descriptor.SetValue(block, "db4");
            Assert.AreEqual("db4", descriptor.GetValue(block));
            descriptor.ResetValue(block);
            Assert.AreEqual("db4", descriptor.GetValue(block));
        }
        public void TestGlobalizedObject()
        {
            var block = new DWTBlock();

            Assert.AreEqual(typeof(DWTBlock).FullName, block.GetClassName());
            Assert.IsTrue(block.GetAttributes().Count > 0);
            Assert.IsNull(block.GetComponentName());
            Assert.IsNotNull(block.GetConverter());
            Assert.IsNull(block.GetDefaultEvent());
            Assert.IsNull(block.GetDefaultProperty());
            Assert.IsNull(block.GetEditor(typeof(DWTBlock)));
            Assert.AreEqual(0, block.GetEvents().Count);
            Assert.IsTrue(block.GetProperties().Count > 0);
            Assert.IsFalse(block.CausesRefresh);
            Assert.AreEqual(block, block.GetPropertyOwner(new PropertyDescriptorMock("WaveletName", new Attribute[] { })));

            block = new DWTBlock();
            Assert.AreEqual(0, block.GetEvents(new Attribute[] {}).Count);
            Assert.IsTrue(block.GetProperties(new Attribute[] { }).Count > 0);

            var block2 = new ScalarOperationBlock();

            Assert.IsTrue(block2.CausesRefresh);
        }
示例#7
0
        public void TestWaveletBlockExecute()
        {
            var signalBlock = new GenerateSignalBlock {
                TemplateName = "Binary", Start = 0, Finish = 10, SamplingRate = 1, IgnoreLastSample = true
            };
            var waveletBlock = new DWTBlock
            {
                WaveletName   = "db4|Daubechies 4",
                Level         = 2,
                ExtensionMode = SignalExtension.ExtensionMode.SymmetricHalfPoint
            };

            waveletBlock.Execute();
            Assert.IsTrue(waveletBlock.WaveletNameList.Count > 0);
            Assert.AreEqual("db4|Daubechies 4", waveletBlock.WaveletName);

            signalBlock.OutputNodes[0].ConnectTo(waveletBlock.InputNodes[0]);
            Assert.IsNotNull(waveletBlock.Name);
            Assert.IsNotNull(waveletBlock.Description);
            Assert.IsNotNull(waveletBlock.ProcessingType);

            signalBlock.Execute();
            Assert.AreEqual("0.7 0.9 0.2 0.7 0.7 0.8 0.5 1.2", waveletBlock.OutputNodes[0].Object[0].ToString(1));
            Assert.AreEqual("1.0 0.8 1.1 0.8 1.0 0.8 1.6", waveletBlock.OutputNodes[0].Object[1].ToString(1));
            Assert.AreEqual("-0.2 -0.8 -0.7 -0.7 -0.7 0.2 0.8 0.7", waveletBlock.OutputNodes[1].Object[0].ToString(1));
            Assert.AreEqual("-0.1 -0.4 0.0 -0.3 0.1 0.2 0.1", waveletBlock.OutputNodes[1].Object[1].ToString(1));
            Assert.AreEqual(signalBlock.OutputNodes[0].Object.ToString(1), waveletBlock.OutputNodes[2].Object[0].ToString(1));
            Assert.AreEqual(5, waveletBlock.OutputNodes[3].Object.Count);
            Assert.AreEqual("0.7 0.9 0.2 0.7 0.7 0.8 0.5 1.2", waveletBlock.OutputNodes[3].Object[0].ToString(1));
            Assert.AreEqual("-0.2 -0.8 -0.7 -0.7 -0.7 0.2 0.8 0.7", waveletBlock.OutputNodes[3].Object[1].ToString(1));
            Assert.AreEqual("1.0 0.8 1.1 0.8 1.0 0.8 1.6", waveletBlock.OutputNodes[3].Object[2].ToString(1));
            Assert.AreEqual("-0.1 -0.4 0.0 -0.3 0.1 0.2 0.1", waveletBlock.OutputNodes[3].Object[3].ToString(1));
            Assert.AreEqual(signalBlock.OutputNodes[0].Object.ToString(1), waveletBlock.OutputNodes[3].Object[4].ToString(1));

            var block2 = (DWTBlock)waveletBlock.Clone();

            block2.WaveletName = "db4";
            signalBlock.OutputNodes[0].ConnectTo(block2.InputNodes[0]);
            signalBlock.Execute();
            Assert.AreEqual("0.7 0.9 0.2 0.7 0.7 0.8 0.5 1.2", block2.OutputNodes[0].Object[0].ToString(1));

            waveletBlock.Cascade = false;
            block2 = (DWTBlock)waveletBlock.Clone();
            waveletBlock.OutputNodes[0].ConnectTo(block2.InputNodes[0]);
            signalBlock.Execute();
            Assert.AreEqual(0, block2.OutputNodes[0].Object.Count);

            waveletBlock.Cascade = true;
            signalBlock.ConnectTo(waveletBlock);
            waveletBlock.ConnectTo(block2);
            waveletBlock.Execute();
            Assert.AreEqual(4, block2.OutputNodes[0].Object.Count);

            try
            {
                waveletBlock.WaveletName = "nonono";
                Assert.Fail("Exception not thrown!");
            }
            catch (Exception)
            {
                Assert.IsTrue(true, "Exception thrown! Yeay!");
            }
        }
示例#8
0
        private List<double> processOneSeries(List<double> serie)
        {
            //Declaring the blocks
            var inputSeriesBlock = new InputSeriesBlock();
            inputSeriesBlock.SetSeries(serie);
            var dWTBlock = new DWTBlock
            {
                WaveletName = "Daubechies 10 (db10)",
                Level = 1,
                Rescale = false,
                ExtensionMode = WaveletStudio.SignalExtension.ExtensionMode.AntisymmetricWholePoint
            };
            var outputSeriesBlock = new OutputSeriesBlock();

            //Connecting the blocks
            inputSeriesBlock.OutputNodes[0].ConnectTo(dWTBlock.InputNodes[0]);
            dWTBlock.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(dWTBlock);
            blockList.Add(outputSeriesBlock);
            blockList.ExecuteAll();
            return outputSeriesBlock.GetSeries();
        }
        public static List<double> WaveletTransform(List<double> serie)
        {
            //Declaring the blocks
            var inputSeriesBlock = new InputSeriesBlock();
            inputSeriesBlock.SetSeries(serie);
            var dWTBlock = new DWTBlock
            {
                WaveletName = "coif4",
                Level = 1,
                Rescale = false,
                ExtensionMode = SignalExtension.ExtensionMode.AntisymmetricWholePoint
            };
            var outputSeriesBlock = new OutputSeriesBlock();

            //Connecting the blocks
            inputSeriesBlock.OutputNodes[0].ConnectTo(dWTBlock.InputNodes[0]);
            // dWTBlock.OutputNodes[1].ConnectTo(dWTBlock2.InputNodes[0]);
            dWTBlock.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(dWTBlock);
            //blockList.Add(dWTBlock2);
            blockList.Add(outputSeriesBlock);
            blockList.ExecuteAll();
            return outputSeriesBlock.GetSeries();
        }