Archive for the ‘tone detection’ category

Frequency Estimation Techniques

June 20, 2017

I have had an interest in frequency estimation ever since I worked with telecommunications algorithms at HotHaus Technologies and Broadcom.  One of the techniques that I often used for detecting the frequency of telephony tones was a method using the multiplication of a signal with its complex conjugate delayed by one sample.  Recently when reading an article on the DSP Related website, I ran across an article by Rick Lyons about frequency estimation (see  It turns out the method is called the Lank-Reed-Pollon algorithm, and Rick has some interesting things to say about it.  He does not mention the TKEO (Teager Kaiser Energy Operator) algorithm (see my page here).  According to Rick, the Lank-Reed-Pollon algorithm  has some issues at high and low frequencies, which reminds me of the short-comings of TKEO at high and low frequencies.

I found the Lank-Reed-Pollon algorithm a very cycle efficient method to estimate frequencies.  One difficulty is finding a quick way to calculate the inverse tangent function.  If you look online, you can find some ways to approximate it.  In fact, I believe this is shown in one of Rick Lyon’s books.  One thing I like about the TKEO, is that the square root and inverse sine calculations can be skipped if you are looking for a particular frequency (by taking the sine and squaring the frequency of interest instead).  The TKEO also does not require a conversion to the complex number domain, if you are dealing with real numbers.  But still, I found that in general I had worse cycle performance with the TKEO, due to restrictions on the minimum sampling frequency.

I highly recommend the website for information on DSP in general.  And I also highly recommend the writings of Rick Lyons.  He has a good way of explaining complex things in a simple and easy to read way.


Second part of tone detection using TKEO

October 20, 2012

It’s been almost a year since I put up my last tutorial about tone detection using the Teager Kaiser Energy Operator.  I have finally written something up for part two here.  Life with a young family has been quite busy for me.  If there is enough interest in the TKEO stuff, I may write a part 3 showing a fixed point version (another year from now?).

Let me know if there are any problems with formatting in the code (something that always seems to be a problem). Copying the code is easy.  If you put your mouse pointer over any of the code listings, a number of symbols will be shown at the top right.  One of these will allow the code to be copied to the clipboard.

New Post on Tone Detection

November 8, 2011

I’ve added a new page introducing the use of the Teager Kaiser Energy Operator (TKEO) for determining the frequency of a tone (sinusoid). The page is here.  I’m planning a couple of more pages to show how to improve conditions in noise, how to reduce execution time, and how to make a fixed point version.