Accord.Tests.Statistics.GenericHiddenMarkovModelTest.ConstructorTest C# (CSharp) Method

ConstructorTest() private method

private ConstructorTest ( ) : void
return void
        public void ConstructorTest()
        {
            double[,] A;
            double[] pi;

            var hmm = HiddenMarkovModel.CreateGeneric(2, 4);

            A = new double[,]
            {
                { 0.5, 0.5 },
                { 0.5, 0.5 }
            };

            pi = new double[] { 1, 0 };

            var logA = A.Log();
            var logPi = pi.Log();

            Assert.AreEqual(2, hmm.States);
            Assert.AreEqual(1, hmm.Dimension);
            Assert.IsTrue(logA.IsEqual(hmm.Transitions));
            Assert.IsTrue(logPi.IsEqual(hmm.Probabilities));




            hmm = HiddenMarkovModel.CreateGeneric(new Forward(2), 4);

            A = new double[,]
            {
                { 0.5, 0.5 },
                { 0.0, 1.0 }
            };

            pi = new double[] { 1, 0 };

            logA = A.Log();
            logPi = pi.Log();

            Assert.AreEqual(2, hmm.States);
            Assert.AreEqual(1, hmm.Dimension);
            Assert.IsTrue(logA.IsEqual(hmm.Transitions));
            Assert.IsTrue(logPi.IsEqual(hmm.Probabilities));



            A = new double[,]
            {  
                { 0.7, 0.3 },
                { 0.4, 0.6 }
            };

            GeneralDiscreteDistribution[] B = 
            {  
                new GeneralDiscreteDistribution(0.1, 0.4, 0.5),
                new GeneralDiscreteDistribution(0.6, 0.3, 0.1)
            };

            pi = new double[]
            {
                0.6, 0.4
            };

            hmm = new HiddenMarkovModel<GeneralDiscreteDistribution>(A, B, pi);

            logA = A.Log();
            logPi = pi.Log();

            Assert.AreEqual(2, hmm.States);
            Assert.AreEqual(1, hmm.Dimension);
            Assert.IsTrue(logA.IsEqual(hmm.Transitions));
            Assert.IsTrue(logPi.IsEqual(hmm.Probabilities));
            Assert.AreEqual(B, hmm.Emissions);
        }