コード例 #1
0
        public void FWT2DTest2()
        {
            int levels = 2;

            double[,] original =
            {
                { 5, 6, 1, 2 },
                { 4, 2, 5, 5 },
                { 3, 1, 7, 1 },
                { 6, 3, 5, 1 }
            };

            double[,] data = (double[, ])original.Clone();

            Haar.FWT(data, levels);

            double[,] expected =
            {
                { 3.5625, 0.1875,  0.25, -0.25 },
                { 0.1875, 0.3125,  1.25,   2.5 },
                {   1.25,  -1.75, -0.75, -0.25 },
                {  -1.25,    0.5, -0.25,   0.5 }
            };

            string dataStr = data.ToString(CSharpMatrixFormatProvider.InvariantCulture);

            Assert.IsTrue(Matrix.IsEqual(expected, data, 1e-5));

            Haar.IWT(data, levels);

            Assert.IsTrue(Matrix.IsEqual(data, original, 0.0001));
        }
コード例 #2
0
        public void FWT2DTest()
        {
            double[,] original =
            {
                { 5, 6, 1, 2 },
                { 4, 2, 5, 5 },
                { 3, 1, 7, 1 },
                { 6, 3, 5, 1 }
            };

            double[,] data = (double[, ])original.Clone();

            Haar.FWT(data, 1);

            double[,] expected =
            {
                {  6.3640,  5.6569,  4.2426,  4.9497 },
                {  6.3640,  2.8284,  8.4853,  1.4142 },
                {  0.7071,  2.8284, -2.8284, -2.1213 },
                { -2.1213, -1.4142,  1.4142,       0 }
            };


            Haar.IWT(data, 1);

            Assert.IsTrue(Matrix.IsEqual(data, original, 0.0001));
        }
コード例 #3
0
        public void IWTTest()
        {
            double[] original = { 1, 2, 3, 4 };
            double[] data     = { 1, 2, 3, 4 };
            double[] expected = { 2.1213, 4.9497, -0.7071, -0.7071 };

            Haar.FWT(data);

            var d = data.Multiply(Constants.Sqrt2);

            Assert.IsTrue(Matrix.IsEqual(expected, d, 0.001));

            Haar.IWT(data);
            Assert.IsTrue(Matrix.IsEqual(original, data, 0.001));
        }