-
sdr.shnidman(p_d: ArrayLike, p_fa: ArrayLike, n_nc: ArrayLike =
1
, swerling: int =0
) NDArray[float64] Estimates the minimum input signal-to-noise ratio (SNR) required to achieve the desired probability of detection \(P_d\) for the Swerling target model.
- Parameters:¶
- p_d: ArrayLike¶
The desired probability of detection \(P_d\) in \((0, 1)\).
- p_fa: ArrayLike¶
The desired probability of false alarm \(P_{fa}\) in \((0, 1)\).
- n_nc: ArrayLike =
1
¶ The number of non-coherent combinations \(N_{nc} \ge 1\).
- swerling: int =
0
¶ The Swerling target model.
0: Non-fluctuating target.
1: Dwell-to-dwell decorrelation. Rayleigh PDF. Target has many scatterers, none are dominant. Set of \(N_{nc}\) returned pulses are correlated within a dwell but independent with the next set of \(N_{nc}\) pulses on the next dwell.
2: Pulse-to-pulse decorrelation. Rayleigh PDF. Target has many scatterers, none are dominant. Set of \(N_{nc}\) returned pulses are independent from each other within a dwell.
3: Dwell-to-dwell decorrelation. Chi-squared PDF with 4 degrees of freedom. Target has many scatterers, with one dominant. Set of \(N_{nc}\) returned pulses are correlated within a dwell but independent with the next set of \(N_{nc}\) pulses on the next dwell.
4: Pulse-to-pulse decorrelation. Chi-squared PDF with 4 degrees of freedom. Target has many scatterers, with one dominant. Set of \(N_{nc}\) returned pulses are independent from each other within a dwell.
5: Same as Swerling 0.
- Returns:¶
The minimum required input SNR \(\gamma\) in dB.
See also
Notes
This function implements Shnidman’s equation. The error in the estimated minimum SNR is claimed to be less than 1 dB for
\[0.1 \leq P_d \leq 0.99\]\[10^{-9} \leq P_{fa} \leq 10^{-3}\]\[1 \le N_{nc} \le 100 .\]References
Examples
Compare the theoretical minimum required SNR across Swerling target models for 1, 3, and 30 non-coherent combinations.
In [1]: p_d = 0.9; \ ...: p_fa = np.logspace(-12, -1, 21) ...: In [2]: fig, ax = plt.subplots(3, 1, figsize=(8, 12)); In [3]: for i, n_nc in enumerate([1, 3, 30]): ...: ax[i].semilogx(p_fa, sdr.shnidman(p_d, p_fa, n_nc=n_nc, swerling=0), label=0) ...: ax[i].semilogx(p_fa, sdr.shnidman(p_d, p_fa, n_nc=n_nc, swerling=1), label=1) ...: ax[i].semilogx(p_fa, sdr.shnidman(p_d, p_fa, n_nc=n_nc, swerling=2), label=2) ...: ax[i].semilogx(p_fa, sdr.shnidman(p_d, p_fa, n_nc=n_nc, swerling=3), label=3) ...: ax[i].semilogx(p_fa, sdr.shnidman(p_d, p_fa, n_nc=n_nc, swerling=4), label=4) ...: ax[i].legend(title="Swerling") ...: ax[i].set_xlabel("Probability of false alarm, $P_{fa}$") ...: ax[i].set_ylabel("Minimum required input SNR (dB), $\gamma$") ...: ax[i].set_title(f"$N_{{nc}} = {n_nc}$") ...: In [4]: fig.suptitle("Minimum required SNR across Swerling target models");