Пример #1
0
        public static void TestJWave()
        {
            double[][] mat = Get2DTestData();

            WaveletInterface wavelet = null;

            wavelet = new Haar02();
            TransformInterface bWave = null;

            //bWave = new FastWaveletTransform(wavelet);
            //bWave = new WaveletPacketTransform(wavelet);
            bWave = new DiscreteWaveletTransform(wavelet);
            Transform t = new Transform(bWave);             // perform all steps

            Console.Write("\n\nThe 2D JWave Haar02 Dwt method: ");
            Console.Write("\n");
            double[][] dwtArray = t.forward(mat);

            Matrix dwtMatrix = new Matrix(dwtArray);

            dwtMatrix.Print();

            Console.Write("\n\nThe 2D JWave Haar02 Inverse Dwt method: ");
            Console.Write("\n");
            double[][] idwtArray = t.reverse(dwtArray);

            Matrix idwtMatrix = new Matrix(idwtArray);

            idwtMatrix.Print();
        }
Пример #2
0
        private void showGraph(DiscreteWaveletTransform rs, int level, int flag)
        {
            if (level >= 0 && flag == 0)
            {
                formsPlot1.plt.PlotSignal(changeValue(rs.Detail.ToList <Double>(), 0.1, level).ToArray(), label: "第" + level + "层的细节");
                showGraph(rs.UpperScale, level - 1, flag);
            }
            else if (level >= 0 && flag == 1)
            {
                formsPlot1.plt.PlotSignal(changeValue(rs.Approximation.ToList <Double>(), 0.1, level).ToArray(), label: "第" + level + "层的概貌");

                showGraph(rs.UpperScale, level - 1, flag);
            }
        }
Пример #3
0
        private void DWT()
        {
            while (start)
            {
                lock (data)
                {
                    if (!data.IsEmpty && !stop)
                    {
                        data.TryDequeue(out List <Double> res);
                        Signal <Double> sig = new Signal <double>(res.ToArray());
                        formsPlot1.plt.Clear();
                        try
                        {
                            int level = Convert.ToInt32(this.ResolveText.Text);
                            DiscreteWaveletTransform rs  = DiscreteWaveletTransform.Estimate(sig, Wavelets.Daubechies(2), new ZeroPadding <Double>());
                            DiscreteWaveletTransform rs1 = rs.EstimateMultiscale(new ZeroPadding <Double>(), level);

                            if (showType == 0)
                            {
                                //formsPlot1.plt.PlotSignal(rs.Detail.ToArray(), label: "第一层细节");
                                showGraph(rs1, level, showType);
                            }
                            else
                            {
                                //formsPlot1.plt.PlotSignal(rs1.Approximation.ToArray(), label: "第一层概貌");
                                showGraph(rs1, level, showType);
                            }
                            formsPlot1.plt.Legend();
                            formsPlot1.Render();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }
                    }
                }
            }
        }