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

ConstructorTest() private method

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

            // Create a HMM with 2 states and 4 symbols
            hmm = new HiddenMarkovModel(2, 4);

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

            B = new double[,]
            {
                { 0.25, 0.25, 0.25, 0.25 },
                { 0.25, 0.25, 0.25, 0.25 },
            };

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

            Assert.AreEqual(2, hmm.States);
            Assert.AreEqual(4, hmm.Symbols);
            Assert.IsTrue(Matrix.Log(A).IsEqual(hmm.LogTransitions));
            Assert.IsTrue(Matrix.Log(B).IsEqual(hmm.Emissions));
            Assert.IsTrue(Matrix.Log(pi).IsEqual(hmm.Probabilities));

            Assert.IsTrue(A.IsEqual(hmm.LogTransitions.Exp()));
            Assert.IsTrue(B.IsEqual(hmm.LogEmissions.Exp()));
            Assert.IsTrue(pi.IsEqual(hmm.LogInitial.Exp()));


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

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

            B = new double[,]
            {
                { 0.25, 0.25, 0.25, 0.25 },
                { 0.25, 0.25, 0.25, 0.25 },
            };

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

            Assert.AreEqual(2, hmm.States);
            Assert.AreEqual(4, hmm.Symbols);
            Assert.IsTrue(Matrix.Log(A).IsEqual(hmm.LogTransitions));
            Assert.IsTrue(Matrix.Log(B).IsEqual(hmm.Emissions));
            Assert.IsTrue(Matrix.Log(pi).IsEqual(hmm.Probabilities));


            hmm = new HiddenMarkovModel(A, B, pi);
            Assert.AreEqual(2, hmm.States);
            Assert.AreEqual(4, hmm.Symbols);
            Assert.IsTrue(Matrix.Log(A).IsEqual(hmm.LogTransitions));
            Assert.IsTrue(Matrix.Log(B).IsEqual(hmm.Emissions, 1e-10));
            Assert.IsTrue(Matrix.Log(pi).IsEqual(hmm.Probabilities));
        }