Given one sine wave in time domain, how to find its frequency?

378 Views Asked by At
  1. Given one sine wave in time domain, I want to find its frequency. Because I observe only a very small part of the sine wave ~1 cycle, FFT methods have a poor spectral resolution.

  2. Has there been work that bounds the error on the frequency estimate?

Thanks a ton

2

There are 2 best solutions below

0
On

If you have lots of points on the sine wave, and FFT will do very well. If you have $1024$ points and FFT them, the bin width is $0.1\%$ of the period. You can also just look at the time between two zero crossings. The fractional error in frequency will be twice the (rss of two) measurement errors divided by the time between them. If you measure the zero crossing well, that will be quite good. The reason to use zero crossings rather than peaks and troughs is they are better defined.

0
On

I don't think that FFT is of any use here. You are given a data set $(t_k,x_k)$ $\>(1\leq k\leq N)$ and want to know the best fit for a function of the form $$x(t)=A\cos(\omega t)+B\sin(\omega t)+C\ ,$$ where $A$, $B$, $C$, $\omega$ are parameters to be determined. This is a standard problem of numerical analysis.

Note that FFT presupposes a base period (and its $2^{-n}$ parts) as given and will never be able to recover the "real period" as a floating point number.