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

Calculates the Shannon limit on the signal-to-noise ratio \(S/N\) in the AWGN channel.

Parameters:
rho: ArrayLike

The nominal spectral efficiency \(\rho\) of the modulation in bits/2D.

Returns:

The Shannon limit on \(S/N\) in dB.

Notes

\[C = \rho = \log_2\left(1 + \frac{S}{N}\right) \ \ \text{bits/2D}\]
\[\frac{S}{N} = 2^{\rho} - 1\]

Examples

Plot the AWGN channel capacity as a function of \(S/N\). When the capacity is less than 2 bits/2D, capacity is in the power-limited regime. In the power-limited regime, the capacity increases linearly with signal power as in independent of bandwidth.

When the capacity is greater than 2 bits/2D, capacity is in the bandwidth-limited regime. In the bandwidth-limited regime, the capacity increases linearly with bandwidth and logarithmically with signal power.

In [1]: snr = np.linspace(-30, 60, 101); \
   ...: C = sdr.awgn_capacity(snr)
   ...: 

In [2]: plt.figure(); \
   ...: plt.semilogy(snr, C); \
   ...: plt.axvline(sdr.shannon_limit_snr(2), color='k', linestyle='--'); \
   ...: plt.annotate("Power-limited regime", (sdr.shannon_limit_snr(1e-2), 1e-2), xytext=(0, -20), textcoords="offset pixels", rotation=44); \
   ...: plt.annotate("Bandwidth-limited regime", (sdr.shannon_limit_snr(8), 8), xytext=(0, -20), textcoords="offset pixels", rotation=7); \
   ...: plt.xlabel("Signal-to-noise ratio (dB), $S/N$"); \
   ...: plt.ylabel("Capacity (bits/2D), $C$"); \
   ...: plt.title("Capacity of the AWGN Channel");
   ...: 
../../_images/sdr_shannon_limit_snr_1.png