komm.BinaryErasureChannel
Binary erasure channel (BEC). It is a discrete memoryless channel with input alphabet $\mathcal{X} = \{ 0, 1 \}$ and output alphabet $\mathcal{Y} = \{ 0, 1, 2 \}$. The channel is characterized by a parameter $\epsilon$, called the erasure probability. With probability $1 - \epsilon$, the output symbol is identical to the input symbol, and with probability $\epsilon$, the output symbol is replaced by an erasure symbol (denoted by $2$). For more details, see CT06, Sec. 7.1.5.
Attributes:
-
erasure_probability
(Optional[float]
) –The channel erasure probability $\epsilon$. Must satisfy $0 \leq \epsilon \leq 1$. Default value is
0.0
, which corresponds to a noiseless channel.
Input:
-
input_sequence
(Array1D[int]
) –The input sequence.
Output:
-
output_sequence
(Array1D[int]
) –The output sequence.
Examples:
>>> np.random.seed(1)
>>> bec = komm.BinaryErasureChannel(0.1)
>>> bec([1, 1, 1, 0, 0, 0, 1, 0, 1, 0])
array([1, 1, 2, 0, 0, 2, 1, 0, 1, 0])
transition_matrix: npt.NDArray[np.float64]
property
The transition probability matrix of the channel, given by $$ p_{Y \mid X} = \begin{bmatrix} 1 - \epsilon & 0 & \epsilon \\ 0 & 1 - \epsilon & \epsilon \end{bmatrix}. $$
Examples:
>>> bec = komm.BinaryErasureChannel(0.1)
>>> bec.transition_matrix
array([[0.9, 0. , 0.1],
[0. , 0.9, 0.1]])
mutual_information
Returns the mutual information $\mathrm{I}(X ; Y)$ between the input $X$ and the output $Y$ of the channel. It is given by $$ \mathrm{I}(X ; Y) = (1 - \epsilon) \, \Hb(\pi), $$ in bits, where $\pi = \Pr[X = 1]$, and $\Hb$ is the binary entropy function.
Parameters:
Same as the corresponding method of the general class.
Examples:
>>> bec = komm.BinaryErasureChannel(0.1)
>>> bec.mutual_information([0.45, 0.55])
np.float64(0.8934970085890275)
capacity
Returns the channel capacity $C$. It is given by $$ C = 1 - \epsilon, $$ in bits.
Examples:
>>> bec = komm.BinaryErasureChannel(0.1)
>>> bec.capacity()
np.float64(0.9)