DSPRelated.com
Forums

Super Accurate Frequency Estimation

Started by naebad November 1, 2006
If I needed to measure a frequency less than 100Hz with an accuracy of
8 decimal places - is there an easy way? I imagine resolution of an FFT
is fs/N where fs is say 1kHz and N is to be determined. I will leave
the sums to you guys to work out but it's a long time! How else could
this be done?


Naebad

If I needed to measure a frequency less than 100Hz with an accuracy of
8 decimal places - is there an easy way? I imagine resolution of an FFT
is fs/N where fs is say 1kHz and N is to be determined. I will leave
the sums to you guys to work out but it's a long time! How else could
this be done?


Naebad

naebad wrote:
> If I needed to measure a frequency less than 100Hz with an accuracy of > 8 decimal places - is there an easy way? I imagine resolution of an FFT > is fs/N where fs is say 1kHz and N is to be determined. I will leave > the sums to you guys to work out but it's a long time! How else could > this be done?
100 Hz and 8 places after the decimal point. What do you expect to use as a frequency reference accurate to 1 part in 10,000,000,000? Jerry -- "The rights of the best of men are secured only as the rights of the vilest and most abhorrent are protected." - Chief Justice Charles Evans Hughes, 1927 ���������������������������������������������������������������������
Jerry Avins <jya@ieee.org> writes:

> naebad wrote: >> If I needed to measure a frequency less than 100Hz with an accuracy of >> 8 decimal places - is there an easy way? I imagine resolution of an FFT >> is fs/N where fs is say 1kHz and N is to be determined. I will leave >> the sums to you guys to work out but it's a long time! How else could >> this be done? > > 100 Hz and 8 places after the decimal point. What do you expect to use > as a frequency reference accurate to 1 part in 10,000,000,000?
This would do it: http://tycho.usno.navy.mil/cesium.html -- % Randy Yates % "She's sweet on Wagner-I think she'd die for Beethoven. %% Fuquay-Varina, NC % She love the way Puccini lays down a tune, and %%% 919-577-9882 % Verdi's always creepin' from her room." %%%% <yates@ieee.org> % "Rockaria", *A New World Record*, ELO http://home.earthlink.net/~yatescr
naebad wrote:
> If I needed to measure a frequency less than 100Hz with an accuracy of > 8 decimal places - is there an easy way? I imagine resolution of an FFT > is fs/N where fs is say 1kHz and N is to be determined. I will leave > the sums to you guys to work out but it's a long time! How else could > this be done?
Frequency of what? 8 total decimal places, meaning 100 pS of accuracy per period at 100 Hz? If the noise level is zero, you could run a 10 GHz counter, triggered by two zero-crossings. But any phase error, and you get a lot less than 8 places accuracy. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M
naebad wrote:
> If I needed to measure a frequency less than 100Hz with an accuracy of > 8 decimal places - is there an easy way?
Your problem is underspecified. I'm guessing you know something about your signal, because otherwise you wouldn't be able to "measure a frequency" in the first place (an arbitrary, infinite signal can contain infinitely many frequencies). But since you didn't explain what you know, it is hard to help you. Regards, Steven G. Johnson
Robert Scott wrote:
> On 1 Nov 2006 16:20:03 -0800, "naebad" <minnaebad@yahoo.co.uk> wrote: > > >>If I needed to measure a frequency less than 100Hz with an accuracy of >>8 decimal places - is there an easy way? I imagine resolution of an FFT >>is fs/N where fs is say 1kHz and N is to be determined. I will leave >>the sums to you guys to work out but it's a long time! How else could >>this be done? > > > Sample for a long enough period of time. For accuracy to 0.00000001 Hz, you > would need to count cycles for 3 years.
Huh?? Where are you getting these figures from??? You're assuming a sampling rate of 201 Hz or something like that? I don't see why --- accuracy of the measuring equipment aside --- you can't obtain any accuracy that you want, provided that you sample at high enough frequency (of course, if we require a sampling rate of several exahertz, then ok, it's beyond any practical possibilities) amd with a high enough number of bits. If we're talking about a periodic signal with reasoably smooth shape, if you sample at, say, 100 times the fundamental frequency of the signal, then you get the times of zero-crossing with fairly high precision. Notice that you use interpolation, with the assumption of a reasonably smooth signal. If you happen to know that the signal is a sinusoid, then the interpolation could yield a truly fantastic accuracy (3rd-order polynomial -- for the two points around the zero-cross, you know the value and the derivative, so you can obtain the 3rd-degree polynomial that meets those constraints) Then of course, there's the quantization error that comes to ruin the party... But I think the effect of that on the zero crossing can be minimized --- in fact, if we're sampling fast enough, we simply take 10 or 20 samples surrounding the zero-crossing, and obtain the best-fitting 3rd-degree polynomial; *then* determine the value for which that polynomial is zero. Now, of course, eight decimal places of precision is perhaps ridiculous under any possible point of view, in the context of an actual 100 Hz signal (maybe the OP will convince us otherwise). What I'm pointing out is that, assuming proper precision in the measuring equipment and the circuits (sampling, linearity, etc.), you could achieve that precision in a fairly short amount of time. Carlos --
Carlos Moreno wrote:
> Robert Scott wrote: > > On 1 Nov 2006 16:20:03 -0800, "naebad" <minnaebad@yahoo.co.uk> wrote: > > > > > >>If I needed to measure a frequency less than 100Hz with an accuracy of > >>8 decimal places - is there an easy way? I imagine resolution of an FFT > >>is fs/N where fs is say 1kHz and N is to be determined. I will leave > >>the sums to you guys to work out but it's a long time! How else could > >>this be done? > > > > > > Sample for a long enough period of time. For accuracy to 0.00000001 Hz, you > > would need to count cycles for 3 years. > > Huh?? > > Where are you getting these figures from??? You're assuming a sampling > rate of 201 Hz or something like that?
I think that Mr. Scott is assuming a certain amount of possible noise or potential interference from an unknown number of sinusoids nearby in frequency. With zero noise, zero timing jitter, and infinite resolution samples, one might only need to solve 3 equations in 3 unknown, using just 3 samples. As the potential noise and interference increases, one needs more samples for a given quality of estimate. But assuming worst case noise may be as unrealistic as assuming none for some problems. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M
On Wed, 01 Nov 2006 23:14:19 -0500, Carlos Moreno
<moreno_at_mochima_dot_com@mailinator.com> wrote:

>Robert Scott wrote: >> On 1 Nov 2006 16:20:03 -0800, "naebad" <minnaebad@yahoo.co.uk> wrote: >> >> >>>If I needed to measure a frequency less than 100Hz with an accuracy of >>>8 decimal places - is there an easy way? I imagine resolution of an FFT >>>is fs/N where fs is say 1kHz and N is to be determined. I will leave >>>the sums to you guys to work out but it's a long time! How else could >>>this be done? >> >> >> Sample for a long enough period of time. For accuracy to 0.00000001 Hz, you >> would need to count cycles for 3 years. > >Huh?? > >Where are you getting these figures from??? You're assuming a sampling >rate of 201 Hz or something like that?
That figure is for counting cycles over a fixed period of time. 3 years +/- 1 cycle at 100 Hz gives you one part in 10^10 as the OP requested. Admittedly, counting cycles is not the best that can be done, which is why I went on to described better solutions involving measuring the phase (or equivalently, zero-crossing timing) at the beginning and at the end of the sampling period.
>I don't see why --- accuracy of the measuring equipment aside --- you >can't obtain any accuracy that you want, provided that you sample at >high enough frequency
Signal to noise limits that approach.
>If we're talking about a periodic signal with reasoably smooth shape, >if you sample at, say, 100 times the fundamental frequency of the >signal, then you get the times of zero-crossing with fairly high >precision.
..which is what I went on to describe, if you look beyond my 3-year result.
>If you happen to know that the signal is a sinusoid, then the >interpolation could yield a truly fantastic accuracy (3rd-order >polynomial -- for the two points around the zero-cross, you know >the value and the derivative, so you can obtain the 3rd-degree >polynomial that meets those constraints)
..fantastic only if you have a fantastic signal to noise ratio. In a real-world situation, giving the OP the benefit of the doubt, and assuming the signal being measured really was coming from a source that had a stability of 1 part in 10^10, the measurement of that frequency to the precision requested takes either a phenomenal amount of time or a phenomenal amount of signal to noise ratio. Robert Scott Ypsilanti, Michigan

Robert Scott wrote:

> On 1 Nov 2006 16:20:03 -0800, "naebad" <minnaebad@yahoo.co.uk> wrote: > >>If I needed to measure a frequency less than 100Hz with an accuracy of >>8 decimal places - is there an easy way? I imagine resolution of an FFT >>is fs/N where fs is say 1kHz and N is to be determined. I will leave >>the sums to you guys to work out but it's a long time! How else could >>this be done? > > > Sample for a long enough period of time. For accuracy to 0.00000001 Hz, you > would need to count cycles for 3 years.
This is good. Maybe by that time he will grow wise enough to realize that the modest frq. counter with the marks at 100MHz will do 1e-8 resolution in 1 second.
> > Forget about FFTs. They are not a good solution for this problem. >
Why not? Interpolated FFT will do that as well as any other method. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com