sdr.shannon_limit_ebn0(rho: ArrayLike) NDArray[float64]

Calculates the Shannon limit on the bit energy-to-noise power spectral density ratio Eb/N0 in the AWGN channel.

Parameters:
rho: ArrayLike

The nominal spectral efficiency ρ of the modulation in bits/2D.

Returns:

The Shannon limit on Eb/N0 in dB.

Notes

C=ρ=log2(1+SN)=log2(1+ρEbN0)  bits/2D
EbN0=2ρ1ρ

Examples

The absolute Shannon limit on power efficiency is -1.59 dB Eb/N0. This can only be achieved when the channel capacity approaches 0.

In [1]: sdr.shannon_limit_ebn0(0)
Out[1]: -1.591745389548616

The Shannon limit for various FEC code rates is shown below. The modulation is assumed to be binary.

In [2]: rate = np.array([1/8, 1/4, 1/3, 1/2, 2/3, 3/4, 7/8])  # Code rate, n/k

In [3]: rho = 2 * rate  # bits/2D

In [4]: sdr.shannon_limit_ebn0(rho)
Out[4]: 
array([-1.21002545, -0.8174569 , -0.54974021,  0.        ,  0.56859734,
        0.85986396,  1.30533298])

Plot the AWGN channel capacity as a function of Eb/N0.

In [5]: rho = np.logspace(-2, 1, 101)

In [6]: ebn0 = sdr.shannon_limit_ebn0(rho)

In [7]: plt.figure(); \
   ...: plt.semilogy(ebn0, rho); \
   ...: plt.xlabel("Bit energy-to-noise PSD ratio (dB), $E_b/N_0$"); \
   ...: plt.ylabel("Capacity (bits/2D), $C$"); \
   ...: plt.title("Capacity of the AWGN Channel");
   ...: 
../../_images/sdr_shannon_limit_ebn0_1.png