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.
If you'd like, you can go back to my home page. If not, don't.