comnum.theory_cm_capacity#

comnum.theory_cm_capacity(constellation, snr_db, *, fading='awgn', points=Ellipsis)#

The CM capacity (bits per channel use) of a constellation with uniform inputs over AWGN or Rayleigh fading known at the receiver (Caire, Taricco & Biglieri 1998, eq. (10)): theory_mi() of any constellation, uniform inputs.

Parameters:
  • constellation (Constellation) – the points (normalised inside).

  • snr_db (float | array_like) – E_s/σ² (dB).

  • fading (str) – "awgn" or "rayleigh".

  • points (int) – quadrature nodes per dimension.

Returns:

the capacity at every SNR.

Return type:

float | numpy.ndarray

Raises:

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

Examples

>>> import comnum
>>> round(comnum.theory_cm_capacity(comnum.Constellation("qam", 4), 30.0), 6)
2.0