-
static sdr.EnergyDetector.p_d(snr: ArrayLike, N_nc: ArrayLike, p_fa: ArrayLike, complex: bool =
True
) NDArray[float_] Computes the probability of detection \(P_D\).
Notes¶
For real signals:
\[\begin{split} P_D &= Q_{\chi_N^2}\left( \frac{\sigma^2 Q_{\chi_N^2}^{-1}(P_{FA})}{\sigma_s^2 + \sigma^2} \right) \\ &= Q_{\chi_N^2}\left( \frac{Q_{\chi_N^2}^{-1}(P_{FA})}{\sigma_s^2 /\sigma^2 + 1} \right) \end{split}\]For complex signals:
\[P_D = Q_{\chi_{2N}^2}\left( \frac{Q_{\chi_{2N}^2}^{-1}(P_{FA})}{\sigma_s^2 /\sigma^2 + 1} \right)\]References¶
Steven Kay, Fundamentals of Statistical Signal Processing: Detection Theory, Equation 5.3.
Examples¶
In [1]: snr = np.linspace(-20, 10, 101) In [2]: plt.figure(figsize=(8, 4)); \ ...: sdr.plot.p_d(snr, sdr.EnergyDetector.p_d(snr, 25, 1e-1), label="$P_{FA} = 10^{-1}$"); \ ...: sdr.plot.p_d(snr, sdr.EnergyDetector.p_d(snr, 25, 1e-2), label="$P_{FA} = 10^{-2}$"); \ ...: sdr.plot.p_d(snr, sdr.EnergyDetector.p_d(snr, 25, 1e-3), label="$P_{FA} = 10^{-3}$"); \ ...: sdr.plot.p_d(snr, sdr.EnergyDetector.p_d(snr, 25, 1e-4), label="$P_{FA} = 10^{-4}$"); \ ...: sdr.plot.p_d(snr, sdr.EnergyDetector.p_d(snr, 25, 1e-5), label="$P_{FA} = 10^{-5}$"); ...: