Accord.Statistics.Models.Markov.Topology.Ergodic.Create C# (CSharp) Method

Create() public method

Creates the state transitions matrix and the initial state probabilities for this topology.
public Create ( bool logarithm, double &transitionMatrix, double &initialState ) : int
logarithm bool
transitionMatrix double
initialState double
return int
        public int Create(bool logarithm, out double[,] transitionMatrix, out double[] initialState)
        {
            double[,] A = new double[States, States];

            if (random)
            {
                // Create pi
                double sum = 0;
                for (int i = 0; i < states; i++)
                    sum += pi[i] = Accord.Math.Random.Generator.Random.NextDouble();

                for (int i = 0; i < states; i++)
                    pi[i] /= sum;

                // Create A using random uniform distribution
                for (int i = 0; i < states; i++)
                {
                    sum = 0.0;
                    for (int j = 0; j < states; j++)
                        sum += A[i, j] = Accord.Math.Random.Generator.Random.NextDouble();

                    for (int j = 0; j < states; j++)
                        A[i, j] /= sum;
                }
            }
            else
            {
                // Create A using equal uniform probabilities,

                for (int i = 0; i < states; i++)
                    for (int j = 0; j < states; j++)
                        A[i, j] = 1.0 / states;
            }

            if (logarithm)
            {
                transitionMatrix = A.Log();
                initialState = pi.Log();
            }
            else
            {
                transitionMatrix = A;
                initialState = (double[])pi.Clone();
            }

            return States;
        }