librosa.sequence.transition_cycle

librosa.sequence.transition_cycle(n_states, prob)[source]

Construct a cyclic transition matrix over n_states.

The transition matrix will have the following properties:

  • transition[i, i] = p

  • transition[i, i + 1] = (1 - p)

This type of transition matrix is appropriate for state spaces with cyclical structure, such as metrical position within a bar. For example, a song in 4/4 time has state transitions of the form

1->{1, 2}, 2->{2, 3}, 3->{3, 4}, 4->{4, 1}.

Parameters:
n_statesint > 1

The number of states

probfloat in [0, 1] or iterable, length=n_states

If a scalar, this is the probability of a self-transition.

If a vector of length n_states, p[i] is the probability of self-transition in state i

Returns:
transitionnp.ndarray [shape=(n_states, n_states)]

The transition matrix

Examples

>>> librosa.sequence.transition_cycle(4, 0.9)
array([[0.9, 0.1, 0. , 0. ],
       [0. , 0.9, 0.1, 0. ],
       [0. , 0. , 0.9, 0.1],
       [0.1, 0. , 0. , 0.9]])