sdr.PSK.ser(esn0: ArrayLike, diff_encoded: bool = False) NDArray[float_]

Computes the symbol error rate (SER) at the provided \(E_s/N_0\) values.

Parameters:
esn0: ArrayLike

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

diff_encoded: bool = False

Indicates whether the input symbols were differentially encoded.

Returns:

The symbol error rate \(P_{se}\).

References

  • Simon and Alouini, Digital Communications over Fading Channels, Chapter 8: Performance of Single-Channel Receivers.

  • John Proakis, Digital Communications, Chapter 4: Optimum Receivers for AWGN Channels.

Examples

See the Phase-shift keying example.

Plot theoretical SER 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); \
   ...: esn0 = np.linspace(-2, 10, 100)
   ...: 

In [2]: plt.figure(figsize=(8, 4)); \
   ...: sdr.plot.ser(esn0, bpsk.ser(esn0), label="BPSK"); \
   ...: sdr.plot.ser(esn0, qpsk.ser(esn0), label="QPSK"); \
   ...: sdr.plot.ser(esn0, psk8.ser(esn0), label="8-PSK"); \
   ...: sdr.plot.ser(esn0, psk16.ser(esn0), label="16-PSK"); \
   ...: plt.title("SER curves for PSK modulation in an AWGN channel"); \
   ...: plt.tight_layout();
   ...: 
../../_images/sdr_psk_ser_1.png

Compare the symbol error rate of QPSK and DE-QPSK in an AWGN channel.

In [3]: plt.figure(figsize=(8, 4)); \
   ...: sdr.plot.ser(esn0, qpsk.ser(esn0), label="QPSK"); \
   ...: sdr.plot.ser(esn0, qpsk.ser(esn0, diff_encoded=True), label="DE-QPSK"); \
   ...: plt.title("SER curves for PSK and DE-PSK modulation in an AWGN channel"); \
   ...: plt.tight_layout();
   ...: 
../../_images/sdr_psk_ser_2.png