4
$\begingroup$

So I am interested in finding delay between two noisy narrowband signals,for example, two arterial pulse waveform. I can easily get a correct estimate of delay using cross-correlation method, but it fails in low SNR cases. I know Generalized Cross Correlation (GCC) method is supposed to give better results in these cases, but as I am working with narrowband signals, and also due to incorrect estimates of power spectral densities, GCC is very unstable, and the results are worse than normal cross-correlation. So my question is are there any methods for finding time delay between signals in low SNR and are more accurate than the above 2 mentioned methods?

$\endgroup$
  • $\begingroup$ Good question; I can't imagine there is anything that can perform better than a true cross-correlation for establishing the best estimate of the delay between two identical signals (are they indeed identical?), assuming the signals are uncorrelated to the noise and you have no further information about the noise. Interested to see what responses you get. $\endgroup$ – Dan Boschen Mar 16 '17 at 21:20
  • $\begingroup$ @DanBoschen maybe with a-priori knowledge on the signals involved? Akash, can you define "low energy cases" in SNR? And, how long is your correlation period? It's perfectly possible you're hitting Cramér-Rao here. $\endgroup$ – Marcus Müller Mar 16 '17 at 22:02
  • $\begingroup$ What would also be interesting would be variance of your estimation error (if you can know that), and the bandwidth and sampling rate, as well your degree of knowledge of the signal's center frequency and bandwidth. $\endgroup$ – Marcus Müller Mar 16 '17 at 22:11
  • $\begingroup$ I am calculating the variance of my estimation error. I have a plot with variance in y-axis and SNR on x-axis. And that is how I observed that GCC has larger variance than simple cross correlation for SNR range of -10 to 10 dB. And also by plotting the Cramer Rao bound, I know its not hitting the lower bound. $\endgroup$ – Akash Maity Mar 16 '17 at 22:16
  • $\begingroup$ @MarcusMüller yes that is a good thought, if you know the signals involved and you are correlating each to the perfect signal should be better than what you could do relative to each other (3 dB less noise, correct?) $\endgroup$ – Dan Boschen Mar 17 '17 at 0:48
0
$\begingroup$

Quite often, performing a time-delay estimation in a transformed domain can help,as long as the signal gets better concentrated, and/or the noise is more spread.

So performing the CC or GCC in a time-frequency or time-scale (wavelet) domain could be useful, as long as you can select the frequency band or the scale in which the correlation will be meaningful.

If the noise characterics are unknown, you can benefit from wavelet whitening capabilities.

You can check for instance:

For Matlab codes:

$\endgroup$
  • 1
    $\begingroup$ Thanks for your answer. I will definitely try this method. $\endgroup$ – Akash Maity Mar 16 '17 at 23:35
  • $\begingroup$ I have added some Matlab references $\endgroup$ – Laurent Duval Mar 16 '17 at 23:44
  • $\begingroup$ Thank you. Also, can you give me some brief insight into why GCC methods are so unstable? $\endgroup$ – Akash Maity Mar 17 '17 at 4:08
  • $\begingroup$ The issue of stability probably requires a dedicated question, where properties of your noise and signal are given. A running code would be good too $\endgroup$ – Laurent Duval Mar 17 '17 at 7:06
  • $\begingroup$ I tried the wavelet method and the Matlab code, and this is my observation: Wavelet method certainly performed much better than GCC, but the matlab inbuilt function 'finddelay' performed slightly better than wavelets. Thanks. $\endgroup$ – Akash Maity Mar 18 '17 at 2:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.