I am trying to measure the acoustic phase difference between two sensors 30cm apart each other. The sampling frequency is 20kHz, and my interest frequency is about 1700 Hz. The below is how I proceeded.

  1. Take FFT of T = 1 sec time domain signal. In spectrum, there are several peaks including the interest frequency.
  2. Bandpass filter around the interest frequency (e.g. 1700+-100 Hz)
  3. Reconstruct(or IFFT) the signal in time domain.
  4. Take Hilbert transform and get phase in time domain
  5. Do the same thing for the other receiver.
  6. Compare Hilbert transform phase between two signals in time domain

When I did this, the phase difference between two signals is not constant, but changes with time, which is out of my expectation. Shouldn't the phase difference be constant if they have the same frequency peak? Is there any issue with the above procedure?

  • $\begingroup$ It's not clear to me why you need the Hilber transform. See here: dsp.stackexchange.com/q/20067/11256 $\endgroup$
    – MBaz
    Commented May 24, 2018 at 21:58
  • $\begingroup$ what's your environment ? unless you are in an anechoic chamber or a quiet environment with the speaker close up, the phase WILL fluctuate due to background noise and time variant room acoustics $\endgroup$
    – Hilmar
    Commented May 25, 2018 at 11:38

1 Answer 1


Keep in mind the following calculation:

$$ \frac{1130~\text{feet}/\text{s}}{1700~\text{cycle}/\text{s}} \approx 0.66~\text{feet/cycle} \approx 20.26~\text{cm}/\text{cycle} $$

Your delay distance is longer than your wavelength. With an FFT approach, you will only get the delay as a fraction of a cycle, so you'll have to account for that. If you can't frame your FFT on a whole number of cycles, you will need to estimate the frequency and calculate the phase shift from there. Then, using your frequency you will need to calculate the actual delay distance.

Generally, if it is the same signal, you will get much better results using autocorrelation in the time domain. Your next best bet is to make sure your FFT is aligned on a whole number of cycles, then you only need to calculate one bin. If you can't do that, in my blog articles, I have frequency formulas from two or three bins and an method for determining the phase very accurately using the nearest three bins. (See my profile page for a link to my blog).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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