sdr.esn0_to_ebn0(esn0: ArrayLike, bps: int, rate: int = 1) NDArray[float_]

Converts from \(E_s/N_0\) to \(E_b/N_0\).

\[ \frac{E_b}{N_0} = \frac{E_s}{N_0} \frac{n}{k} \frac{1}{\log_2 M} \]

Parameters:
esn0: ArrayLike

Symbol energy \(E_s\) to noise PSD \(N_0\) ratio in dB.

bps: int

Bits per symbol \(\log_2 M\), where \(M\) is the modulation order.

rate: int = 1

Code rate \(r = k/n\), where \(k\) is the number of information bits and \(n\) is the number of coded bits.

Returns:

The bit energy \(E_b\) to noise PSD \(N_0\) ratio in dB.

Examples

Convert from \(E_s/N_0 = 5\) dB to \(E_b/N_0\) for a 4-QAM signal with \(r = 2/3\).

In [1]: sdr.esn0_to_ebn0(5, 2, rate=2/3)
Out[1]: 3.750612633917001

Convert from \(E_s/N_0 = 10\) dB to \(E_b/N_0\) for a 16-QAM signal with \(r = 1\).

In [2]: sdr.esn0_to_ebn0(10, 4, rate=1)
Out[2]: 3.979400086720376