# Eric Jacobsen's Frequency Estimation Page

With some periodicity, the topic of frequency estimation comes up on comp.dsp, a newsgroup which I am known to frequent. Recently (4/28/99) this topic has come up again which has led specifically to the topic of 'parabolic interpolation' or 'quadratic interpolation'. Since this topic may be a little esoteric even to those in the field and there usually seems to be some controversy surrounding them, I offer the following paper on some research I did a few years back.

The motivation for me was to be able to accurately estimate the frequency of a CW preamble in a burst communications packet. I experimented with several solutions and wound up using a home grown method mostly because of processing restrictions in our hardware. During the course of the investigation I was corresponding with Robert Bristow-Johnson who offered a quadratic interpolator method that he had developed independantly for processing cross-correlation peaks in audio pitch shifting applications. I made a minor adaptation which yielded very good results in processing complex DFT outputs. Several people had directed me to Barry Quinn's excellent paper revealing a simple interpolator which has come to be called 'Quinn's Estimator'. I cooked up a Matlab routine to compare Quinn's interpolator, our quadratic interpolator, Jain's Method, and Grandke's Method. Jain's sucked so bad in comparison that I dropped further analysis, but I wrote a short paper on the work I had done and relative performance of the estimators.

It should be pointed out that there is a critical difference between what is presented here and what is traditionally known as a 'parabolic interpolator' in the field. This has been the source of a lot of confusion since initially we referred to this interpolator as a 'quadratic interpolator' or 'parabolic interpolator' not knowing that there existed already an interpolator with the 'parabolic' moniker. The confusion is further amplified by the fact that the representations of the interpolators are very similar but with an extremely important difference. The traditional parabolic interpolator fits a parabolic curve to the detected magnitude of a DFT output, typically using the magnitude maximizer and the magnitudes of the two adjacent bins. This method is well known and simple to implement but performs poorly at low SNR and produces a biased estimate. The estimator discussed below uses the quadratic formula to derive an expression that is then applied to the three complex outputs around the DFT magnitude maximizer and the real part of this complex calculation is used as the estimate. The result is an estimator which is not only unbiased but has very low variance in the output. Estimates produced with this method are very close in performance to Quinn's estimators with less computational complexity.

Because it may be useful to someone, somewhere, I'm making this available for public consumption in the forms below, since they're all I've got right now. Maybe someday this can all get converted to a format more suitable for The Web.

The usual disclaimers apply; read at your own risk, not responsible for items left lying about, don't try this at home, etc.

• A subsequent discussion on comp.dsp led to a revisiting of this problem adding Macleod's and Quinn's second estimators for comparison. Details, with results, can be found on my Second Frequency Estimation Page This page includes links to the Matlab code for the simulations. There are hooks in the code to turn on AWGN at various levels, etc. This is what I used to collect the data for the paper. There is code included (but commented out) to also characterize Jain's Method and Grandke's Method. It should not be too difficult to change the vector length or make other interesting fundamental changes.
• On Local Interpolation of DFT Outputs(100k) This is a PDF file of the paper on the frequency estimator. This paper has never been published, but it has been distributed somewhat.
• Figures in MathCAD(15k) This is a MathCAD file that I used to generate the plots for the figures. I include it here for those who have MathCAD and may be interested, particularly if you don't have a compatible reader for the paper.

If you'd like, you can go back to my home page. If not, don't.