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?
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: