Accord.Statistics.Models.Markov.Learning.BaumWelchLearning.UpdateEmissions C# (CSharp) Method

UpdateEmissions() protected method

Updates the emission probability matrix.
Implementations of this method should use the observations in the training data and the Gamma probability matrix to update the probability distributions of symbol emissions.
protected UpdateEmissions ( ) : void
return void
        protected override void UpdateEmissions()
        {
            double[,] B = model.Emissions;
            int states = model.States;
            int symbols = model.Symbols;

            for (int i = 0; i < states; i++)
            {
                for (int j = 0; j < symbols; j++)
                {
                    double sum = 0, num = 0;

                    for (int k = 0; k < discreteObservations.Length; k++)
                    {
                        int T = discreteObservations[k].Length;
                        double[,] gammak = Gamma[k];

                        for (int l = 0; l < T; l++)
                        {
                            if (discreteObservations[k][l] == j)
                                num += gammak[l, i];

                            sum += gammak[l, i];
                        }
                    }

                    // avoid locking a parameter in zero.
                    if (num == 0) num = 1e-10;

                    B[i, j] = (sum != 0) ? num/sum : num;
                }
            }
        }