I have looked at previous questions on this topic but I am still unsatisfied. I want to predict how accurately I can estimate the phase of a tone as a function of signal SNR, tone frequency, and the signal length (assuming AWGN). My method for estimation is to just do the FFT, pick the tone frequency and calculate the angle of the phasor.

Initial Guess

My initial hypothesis was that the accuracy would depend on the contrast between the tone and the noise floor in the power spectral density (PSD). Essentially, this contrast would act as the "SNR" for my phase measurement.

Back-of-the-Envelope Calculation

Let's denote the contrast in the PSD as $ SNR_f = \frac{S_f}{N_f} $.

  • $ S_f $ is proportional to the variance of the signal, $ S_f \propto \text{var(sig)} $.

  • The noise under the PSD peak, $ N_f $, is proportional to $ \frac{\text{var(noise)}}{B_{\text{noise}}} \times B_{\text{sig}} = \eta \times B_{\text{sig}} $, where $ \eta $ is the noise spectral density. Let's assume that the estimation is done using only one FFT bin, so $ B_{\text{sig}} \propto \frac{1}{T} $.

Thus, we have:

$$ SNR_f \propto \frac{\text{var(sig)}}{\eta} \times T $$


What bothers me is that according to this formula, the accuracy of the phase estimation seems unaffected by the frequency of the tone—given a fixed SNR and signal length. Intuitively, it feels like having more cycles in the time window should make the phase easier to estimate. Am I missing something fundamental here?


  1. Can someone provide an intuitive explanation for what I should expect?

  2. Bonus: Is there a method more accurate or computationally efficient than FFT for phase estimation of a tone?

  • 1
    $\begingroup$ that won't work like that, unless you further restrict your problem to frequencies your DFT actually "hits", i.e., for an $N$-DFT, any multiply of $f_{\text{sample}}/N$. The phase estimate you get for any frequency between that raster is more or less meaningless, because you're not comparing an oscillation with a reference oscillation of the same frequency to determine the phase, but with a different oscillation; hence, the phase estimate will be different in consecutive measurements. $\endgroup$ Aug 31, 2023 at 11:25
  • $\begingroup$ Single tone, phase estimation? Either build something simple like a PLL and look at the instantaneous phase at fixed point in time, or do ESPRIT and work with the result of that. $\endgroup$ Aug 31, 2023 at 11:27
  • $\begingroup$ Thanks. I am assuming that as well. That raises the question: if the frequency does not hit a bin exactly, will it be meaningless? All I care is the relative phase over multiple acquisitions of the same tone, so wouldn't I be able to compare two off-bin tones? ESPRIT is computationally inefficient and a PLL doesn't really work for my application. I can also I zero-pad the signal so that I can find the peak of the sinc function, and estimate the phase there. Spectral leaking will affect the scaling, but I just want some scaling to get a sense of performance scaling for an ideal scenario. $\endgroup$
    – LDPC
    Aug 31, 2023 at 11:35
  • $\begingroup$ "That raises the question:… will it be meaningless" Well, that's a question that I tried to literally answer in my first comment :) yes! A phase without sufficiently accurate frequency knowledge is useless. The phase will change linearly with the frequency error (because, well, the frequency is the derivative of the phase over time). $\endgroup$ Aug 31, 2023 at 11:38
  • 1
    $\begingroup$ Thanks for taking the time! That makes sense. I will have sequential acquisitions of a long signal (say, 10us long, 10 GS/s, 10.000 samples long) split into 300 sample long windows. I want to estimate the phase change at each window over multiple acquisition. So I would acquire a signal, split it, do the FFT of each window, get the phasor, divide with the respective phasor obtained from the previous measurement, and compute the angle. Not sure if I could implement a PLL in this case, since it's a long signal and I want the phase over time. Maybe I should clarify in the main post. $\endgroup$
    – LDPC
    Aug 31, 2023 at 11:46


Your Answer

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

Browse other questions tagged or ask your own question.