- sdr.coherent_gain(time_bandwidth: ArrayLike) NDArray[float64]
Computes the SNR improvement by coherent integration.
- Parameters:¶
- time_bandwidth: ArrayLike¶
The time-bandwidth product \(T_c B_n\) in seconds-Hz (unitless). If the noise bandwidth equals the sample rate, the argument equals the number of samples \(N_c\) to coherently integrate.
- Returns:¶
The coherent gain \(G_c\) in dB.
Notes
The signal \(x[n]\) is coherently integrated over \(N_c\) samples to produce the output \(y[n]\).
\[y[n] = \sum_{m=0}^{N_c-1} x[n-m]\]The coherent integration gain is the reduction in SNR of \(x[n]\) compared to \(y[n]\), such that both signals have the same detection performance.
\[\text{SNR}_{y,\text{dB}} = \text{SNR}_{x,\text{dB}} + G_c\]The coherent integration gain is the time-bandwidth product
\[G_c = 10 \log_{10} (T_c B_n) .\]If the noise bandwidth equals the sample rate, the coherent gain is simply
\[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"); ...: