comnum.theory_ber_imperfect_csi#

comnum.theory_ber_imperfect_csi(modulation, ebn0_db, rho1, *, rho2=0.0, sigma_ratio=1.0)#

The bit error rate over flat Rayleigh fading of a receiver that equalises with a channel estimate jointly Gaussian with the channel, of correlations rho1 (real) and rho2 (imaginary) and of standard deviation ratio sigma_ratio = σ2/σ1 (M.-X. Chang and Y. T. Su, IEEE Trans. Wireless Commun. 1(4), 2002, eqs. 31, 32, 53; every linear pilot-assisted estimate has this form). rho1 = 1, rho2 = 0, sigma_ratio = 1: the perfect channel.

Parameters:
  • modulation (str) – "bpsk", "qpsk" (Gray) or "16qam" (Gray), any name of a constellation ("16-QAM", "QPSK").

  • ebn0_db (float | array_like) – the mean Eb/N0 (dB).

  • rho1 (float) – the real correlation coefficient.

  • rho2 (float) – the imaginary correlation coefficient.

  • sigma_ratio (float) – σ2/σ1 (16-QAM only: PSK does not depend on |Ĥ|).

Returns:

the bit error probability at every Eb/N0.

Return type:

float | numpy.ndarray

Raises:

ValueError – for an invalid parameter or input (the message names it).

Examples

>>> import comnum
>>> p = comnum.theory_ber_imperfect_csi("16qam", 50.0, 0.999)
>>> round(p, 4)          # the error floor of Chang & Su's Fig. 4
0.0034