Scilab Function
Last update : 12/01/2004

classmarkov - recurrent and transient classes of Markov matrix

### Calling Sequence

  `[perm,rec,tr,indsRec,indsT]=classmarkov(M)`

### Parameters

- `M`: real N x N Markov matrix. Sum of entries in each row should add to one.
- `perm`: integer permutation vector.
- `rec, tr`: integer vector, number (number of states in each recurrent classes, number of transient states).
- `indsRec,indsT`: integer vectors. (Indexes of recurrent and transient states).

### Description

Returns a permutation vector `perm` such that

    M(perm,perm) = [M11 0 0 0 0   0]
                   [0 M22 0 0     0]
                   [0 0 M33       0]
                   [      ...      ]
                   [0 0       Mrr 0]
                   [* *        *  Q]

Each `Mii` is a Markov matrix of dimension `rec(i) i=1,..,r`. `Q` is sub-Markov matrix of dimension `tr`. States 1 to sum(rec) are recurrent and states from r+1 to n are transient. One has `perm=[indsRec,indsT]` where indsRec is a vector of size sum(rec) and indsT is a vector of size tr.

### Examples

    //P has two recurrent classes (with 2 and 1 states) 2 transient states
    P=genmarkov([2,1],2,'perm')
    [perm,rec,tr,indsRec,indsT]=classmarkov(P);
    P(perm,perm)

### See Also

`genmarkov`, `eigenmarkov`,