This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.


Create random Markov chain with specified mixing structure


mc = mcmix(numStates)
mc = mcmix(numStates,Name,Value)



mc = mcmix(numStates) returns the discrete-time Markov chain mc containing numStates states. mc is characterized by random transition probabilities, which are structured to simulate different mixing times.


mc = mcmix(numStates,Name,Value) uses additional options specified by one or more Name,Value pair arguments. For example, you can control the pattern of feasible transitions.


collapse all

Generate a six-state Markov chain from a random transition matrix.

rng(1); % For reproducibility
mc = mcmix(6);

mc is a dtmc object.

Display the transition matrix.

ans =

    0.2732    0.1116    0.1145    0.1957    0.0407    0.2642
    0.3050    0.2885    0.0475    0.0195    0.1513    0.1882
    0.0078    0.0439    0.0082    0.2439    0.2950    0.4013
    0.2480    0.1481    0.2245    0.0485    0.1369    0.1939
    0.2708    0.2488    0.0580    0.1614    0.0137    0.2474
    0.2791    0.1095    0.0991    0.2611    0.1999    0.0513

Plot a digraph of the Markov chain. Specify coloring the edges according to the probability of transition.


Generate random transition matrices containing a specified number of zeros in random locations. A zero in location (i, j) indicates that state i does not transition to state j.

Generate two ten-state Markov chains from random transition matrices. Specify the random placement of ten zeros within one chain and 30 zeros within the other chain.

rng(1); % For reproducibility
numStates = 10;
mc1 = mcmix(numStates,'Zeros',10);
mc2 = mcmix(numStates,'Zeros',30);

mc1 and mc2 are dtmc objects.

Estimate the mixing times for each Markov chain.

[~,tMix1] = asymptotics(mc1)
[~,tMix2] = asymptotics(mc2)
tMix1 =


tMix2 =


mc1, the Markov chain with higher connectivity, mixes quicker than mc2.

Generate a Markov chain characterized by a partially random transition matrix. Also, decrease the number of feasible transitions.

Generate a 4-by-4 matrix of missing (NaN) values, which represents the transition matrix.

P = NaN(4);

Specify that state 1 transitions to state 2 with probability 0.5, and vice versa.

P(1,2) = 0.5;
P(2,1) = 0.5;

Create a Markov chain characterized by the partially known transition matrix. For the remaining unknown transition probabilities, specify that five transitions are impossible at random.

rng(1); % For reproducibility
mc = mcmix(4,'Fix',P,'Zeros',5);

mc is a dtmc object. With the exceptions of the fixed elements (1,2) and (2,1) of the transition matrix, mcmix places five zeros in random locations and generates random probabilities for the remaining nine locations such that the probabilities in a particular row sum to one.

Display the transition matrix and plot a digraph of the Markov chain. In the plot, indicate transition probabilities by specifying edge colors.

P = mc.P

P =

         0    0.5000    0.1713    0.3287
    0.5000         0    0.1829    0.3171
    0.1632         0    0.8368         0
         0    0.5672    0.1676    0.2652

Input Arguments

collapse all

Number of states, specified as a positive integer.

If you do not specify any name-value pair arguments, mcmix constructs a Markov chain with random transition probabilities.

Data Types: double

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'Zeros',10 places 0 at 10 random locations in the transition matrix.

collapse all

Locations and values of fixed transition probabilities, specified as the comma-separated pair consisting of 'Fix' and a numStates-by-numStates numeric matrix.

Probabilities in any row must have a sum less than or equal to 1. Rows that sum to 1 also fix 0 values in the rest of the row.

mcmix assigns random probabilities to locations containing NaN values.

Example: 'Fix',[0.5 NaN NaN; NaN 0.5 NaN; NaN NaN 0.5]

Data Types: double

Number of zero-valued transition probabilities to assign to random locations in the transition matrix, specified as the comma-separated pair consisting of 'Zeros' and a positive integer less than NumStates. mcmix assigns Zeros zeros to the locations containing a NaN in Fix.

Example: 'Zeros',10

Data Types: double

State labels, specified as a string vector, cell vector of character vectors, or numeric vector of length numStates. Elements correspond to rows and columns of the transition matrix.

Example: ["Depression" "Recession" "Stagnant" "Boom"]

Data Types: double | string | cell

Output Arguments

collapse all

Discrete-time Markov chain, returned as a dtmc object


[1] Gallager, R.G. Stochastic Processes: Theory for Applications. Cambridge, UK: Cambridge University Press, 2013.

[2] Horn, R. and C. R. Johnson. Matrix Analysis. Cambridge, UK: Cambridge University Press, 1985.

Introduced in R2017b

Was this topic helpful?