-
sdr.tdoa_crlb(snr1: ArrayLike, snr2: ArrayLike, time: ArrayLike, bandwidth: ArrayLike, rms_bandwidth: ArrayLike | None =
None
, noise_bandwidth: ArrayLike | None =None
) NDArray[float64] Calculates the Cramér-Rao lower bound (CRLB) on time difference of arrival (TDOA) estimation.
- Parameters:¶
- snr1: ArrayLike¶
The signal-to-noise ratio (SNR) of the first signal
in dB.- snr2: ArrayLike¶
The signal-to-noise ratio (SNR) of the second signal
in dB.- time: ArrayLike¶
The integration time
in seconds.- bandwidth: ArrayLike¶
The signal bandwidth
in Hz.- rms_bandwidth: ArrayLike | None =
None
¶ The root-mean-square (RMS) bandwidth
in Hz. IfNone
, the RMS bandwidth is calculated assuming a rectangular spectrum, .- noise_bandwidth: ArrayLike | None =
None
¶ The noise bandwidth
in Hz. IfNone
, the noise bandwidth is assumed to be the signal bandwidth . The noise bandwidth must be the same for both signals.
- Returns:¶
The Cramér-Rao lower bound (CRLB) on the time difference of arrival (TDOA) estimation error standard deviation
in seconds.
See also
Notes¶
The Cramér-Rao lower bound (CRLB) on the time difference of arrival (TDOA) estimation error standard deviation
is given bywhere
is the effective signal-to-noise ratio (SNR), is the power spectral density (PSD) of the signal, and is the centroid of the PSD.Note
The constant terms from Stein’s original equations were rearranged. The factor of 2 was removed from
and the factor of was removed from and incorporated into the CRLB equation.The effective signal-to-noise ratio (SNR)
is improved by the coherent integration gain, which is the time-bandwidth product . The product is the output SNR of the matched filter or correlator, which is equivalent to .Warning
According to Stein, the CRLB equation only holds for output SNRs greater than 10 dB. This ensures there is sufficient SNR to correctly identify the time/frequency peak without high
. Given the rearrangement of scaling factors, CRLB values with output SNRs less than 7 dB are set to NaN.The time measurement precision is inversely proportional to the bandwidth of the signal and the square root of the output SNR.
Examples¶
In [1]: snr = 10 In [2]: time = np.logspace(-6, 0, 101) In [3]: plt.figure(); \ ...: plt.loglog(time, sdr.tdoa_crlb(snr, snr, time, 1e5), label="100 kHz"); \ ...: plt.loglog(time, sdr.tdoa_crlb(snr, snr, time, 1e6), label="1 MHz"); \ ...: plt.loglog(time, sdr.tdoa_crlb(snr, snr, time, 1e7), label="10 MHz"); \ ...: plt.loglog(time, sdr.tdoa_crlb(snr, snr, time, 1e8), label="100 MHz"); \ ...: plt.legend(title="Bandwidth"); \ ...: plt.xlim(1e-6, 1e0); \ ...: plt.ylim(1e-12, 1e-6); \ ...: plt.xlabel("Integration time (s), $T$"); \ ...: plt.ylabel(r"CRLB on TDOA (s), $\sigma_{\text{tdoa}}$"); \ ...: plt.title(f"Cramér-Rao lower bound (CRLB) on TDOA estimation error\nstandard deviation with {snr}-dB SNR"); ...: