# Advanced

## Custom Element Types

This library also supports transition matrices whose elements are user-defined objects or even matrices. See `test/Advanced.jl`

for examples.

## Conversion Between Discrete And Continuous

There is conversion ability between types. This can be done via `convert`

or simply calling the class to convert to:

```
using DiscreteMarkovChains
T = [
0.3 0.7 0.0;
0.5 0.0 0.5;
0.0 1.0 0.0;
]
X = DiscreteMarkovChain(T)
probability_matrix(X)
# output
3×3 Array{Float64,2}:
0.3 0.7 0.0
0.5 0.0 0.5
0.0 1.0 0.0
```

```
Y = convert(ContinuousMarkovChain, X)
Y = ContinuousMarkovChain(X) # Same operation
round.(abs.(probability_matrix(Y)), digits=2)
# output
3×3 Array{Float64,2}:
0.3 0.7 0.0
0.5 0.0 0.5
0.0 1.0 0.0
```

The conversion is done so that the one-step transition probability matrix remains the same. If you want the embedded chain, then simply use `embedded(Y)`

.