sdr.coherent_gain(n_c: ArrayLike) NDArray[float64]

Computes the SNR improvement by coherently integrating \(N_C\) samples.

Parameters:
n_c: ArrayLike

The number of samples \(N_C\) to coherently integrate.

Returns:

The coherent gain \(G_C\) in dB.

Notes

\[y[m] = \sum_{n=0}^{N_C-1} x[m-n]\]
\[\text{SNR}_{y,\text{dB}} = \text{SNR}_{x,\text{dB}} + G_C\]
\[G_C = 10 \log_{10} N_C\]

Examples

See the Coherent integration example.

Compute the coherent gain for various integration lengths.

In [1]: sdr.coherent_gain(1)
Out[1]: 0.0

In [2]: sdr.coherent_gain(2)
Out[2]: 3.010299956639812

In [3]: sdr.coherent_gain(10)
Out[3]: 10.0

In [4]: sdr.coherent_gain(20)
Out[4]: 13.010299956639813

Plot coherent gain as a function of the number of coherently integrated samples.

In [5]: n_c = np.logspace(0, 3, 1001)

In [6]: plt.figure(); \
   ...: plt.semilogx(n_c, sdr.coherent_gain(n_c)); \
   ...: plt.xlabel("Number of samples, $N_C$"); \
   ...: plt.ylabel("Coherent gain (dB), $G_C$"); \
   ...: plt.title("Coherent gain as a function of the number of integrated samples");
   ...: 
../../_images/sdr_coherent_gain_1.png