sdr.plot.ber(ebn0: ArrayLike, ber: ArrayLike, ax: Axes | None = None, **kwargs)

Plots the bit error rate (BER) as a function of \(E_b/N_0\).

Parameters:
ebn0: ArrayLike

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

ber: ArrayLike

The bit error rate \(P_{be}\).

ax: Axes | None = None

The axis to plot on. If None, the current axis is used.

**kwargs

Additional keyword arguments to pass to matplotlib.pyplot.semilogy().

Examples

Plot theoretical BER curves for BPSK, QPSK, 8-PSK, and 16-PSK in an AWGN channel.

In [1]: bpsk = sdr.PSK(2); \
   ...: qpsk = sdr.PSK(4); \
   ...: psk8 = sdr.PSK(8); \
   ...: psk16 = sdr.PSK(16); \
   ...: ebn0 = np.linspace(-2, 10, 100)
   ...: 

In [2]: plt.figure(); \
   ...: sdr.plot.ber(ebn0, bpsk.ber(ebn0), label="BPSK"); \
   ...: sdr.plot.ber(ebn0, qpsk.ber(ebn0), label="QPSK"); \
   ...: sdr.plot.ber(ebn0, psk8.ber(ebn0), label="8-PSK"); \
   ...: sdr.plot.ber(ebn0, psk16.ber(ebn0), label="16-PSK"); \
   ...: plt.title("BER curves for PSK modulation in an AWGN channel");
   ...: 
../../_images/sdr_plot_ber_1.png