コード例 #1
0
        public void FunctionTest()
        {
            Laplacian dense = new Laplacian(3.6);
            SparseLaplacian target = new SparseLaplacian(3.6);

            double[] sx = { 1, -0.555556, 2, +0.250000, 3, -0.864407, 4, -0.916667 };
            double[] sy = { 1, -0.666667, 2, -0.166667, 3, -0.864407, 4, -0.916667 };
            double[] sz = { 1, -0.944444, 3, -0.898305, 4, -0.916667 };

            double[] dx = { -0.555556, +0.250000, -0.864407, -0.916667 };
            double[] dy = { -0.666667, -0.166667, -0.864407, -0.916667 };
            double[] dz = { -0.944444, +0.000000, -0.898305, -0.916667 };

            double expected, actual;

            expected = dense.Function(dx, dy);
            actual = target.Function(sx, sy);
            Assert.AreEqual(expected, actual, 1e-10);
            Assert.AreEqual(0.88711080792421337, actual);
            Assert.IsFalse(double.IsNaN(actual));

            expected = dense.Function(dx, dz);
            actual = target.Function(sx, sz);
            Assert.AreEqual(expected, actual, 1e-10);
            Assert.AreEqual(0.87918038010432886, actual, 1e-10);
            Assert.IsFalse(double.IsNaN(actual));

            expected = dense.Function(dy, dz);
            actual = target.Function(sy, sz);
            Assert.AreEqual(expected, actual, 1e-10);
            Assert.AreEqual(0.91349716289496652, actual);
            Assert.IsFalse(double.IsNaN(actual));
        }
コード例 #2
0
        public void DistanceTest()
        {
            Laplacian dense = new Laplacian(3.6);
            SparseLaplacian target = new SparseLaplacian(3.6);

            double[] sx = { 1, -0.555556, 2, +0.250000, 3, -0.864407, 4, -0.916667 };
            double[] sy = { 1, -0.666667, 2, -0.166667, 3, -0.864407, 4, -0.916667 };
            double[] sz = { 1, -0.944444, 3, -0.898305, 4, -0.916667 };

            double[] dx = { -0.555556, +0.250000, -0.864407, -0.916667 };
            double[] dy = { -0.666667, -0.166667, -0.864407, -0.916667 };
            double[] dz = { -0.944444, +0.000000, -0.898305, -0.916667 };

            double expected, actual;

            expected = dense.Distance(dx, dy);
            actual = target.Distance(sx, sy);
            Assert.AreEqual(expected, actual, 1e-10);
            Assert.IsFalse(double.IsNaN(actual));

            expected = dense.Distance(dx, dz);
            actual = target.Distance(sx, sz);
            Assert.AreEqual(expected, actual, 1e-10);
            Assert.IsFalse(double.IsNaN(actual));

            expected = dense.Distance(dy, dz);
            actual = target.Distance(sy, sz);
            Assert.AreEqual(expected, actual, 1e-10);
            Assert.IsFalse(double.IsNaN(actual));
        }
コード例 #3
0
ファイル: LaplacianTest.cs プロジェクト: CanerPatir/framework
        public void LaplacianReverseDistanceTest()
        {
            var laplacian = new Laplacian(4.2);

            var x = new double[] { 0.2, 0.5 };
            var y = new double[] { 0.3, -0.7 };

            double expected = Distance.Euclidean(x, y);

            double df = laplacian.Distance(x, y);
            double actual = laplacian.ReverseDistance(df);

            Assert.AreEqual(expected, actual, 1e-10);
        }
コード例 #4
0
ファイル: LaplacianTest.cs プロジェクト: CanerPatir/framework
        public void FunctionTest()
        {
            double sigma = 2.1;
            Laplacian target = new Laplacian(sigma);

            double[] x = { 1, 3 };
            double[] y = { -1, 2 };

            double expected = 0.34479878120059682;
            double actual = target.Function(x, y);
            Assert.AreEqual(expected, actual);

            // For the same input, product should be 1
            Assert.AreEqual(1.0, target.Function(x, x));
        }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: xyicheng/Accord
        private IKernel getKernel()
        {
            IKernel kernel;
            if (rbGaussian.Checked)
            {
                kernel = new Gaussian((double)numSigma.Value);
            }
            else if (rbPolynomial.Checked)
            {
                kernel = new Polynomial((int)numDegree.Value, (double)numSigAlpha.Value);
            }
            else if (rbLaplacian.Checked)
            {
                kernel = new Laplacian((double)numLaplacianSigma.Value);
            }
            else if (rbSigmoid.Checked)
            {
                kernel = new Sigmoid((double)numSigAlpha.Value, (double)numSigB.Value);
            }
            else throw new Exception();

            return kernel;
        }