Frequency Interpolation - Grandke's Method

Started by creekmor April 20, 2011
I have a question about Grandke's method of frequency interpolation.  (I suspect
this question has been asked before).  Using the Hanning window (and Schoukens, 1991
notation), he derives

f_interp = (i + delta) * fo, where 

delta = (2*alpha - 1) / (alpha + 1), and

alpha = abs(X(i+1) / X(i)), and

{X(i), X(i+1)} includes the peak.  By definition,

0 < delta < 1, which implies 1/2 < alpha < 2.  Why must

alpha satisfy this?



---



On Wed, 20 Apr 2011 14:28:13 -0500, creekmor <user@compgroups.net/>
wrote:

>I have a question about Grandke's method of frequency interpolation. (I suspect
this question has been asked before). Using the Hanning window (and Schoukens, 1991 notation), he derives
> >f_interp = (i + delta) * fo, where > >delta = (2*alpha - 1) / (alpha + 1), and > >alpha = abs(X(i+1) / X(i)), and > >{X(i), X(i+1)} includes the peak. By definition, > >0 < delta < 1, which implies 1/2 < alpha < 2. Why must > >alpha satisfy this?
The units on delta are DFT bins, so if delta > 1 then you picked the wrong bin for the maximum. The correction is just to find a finer estimate between bins, so the assumption is that the peak is already determined within one bin. Eric Jacobsen http://www.ericjacobsen.org http://www.dsprelated.com/blogs-1//Eric_Jacobsen.php
On Apr 20, 3:28=A0pm, creekmor <u...@compgroups.net/> wrote:
> I have a question about Grandke's method of frequency interpolation. =A0(=
I suspect this question has been asked before). =A0Using the Hanning window= (and Schoukens, 1991 notation), he derives
> > f_interp =3D (i + delta) * fo, where > > delta =3D (2*alpha - 1) / (alpha + 1), and > > alpha =3D abs(X(i+1) / X(i)), and > > {X(i), X(i+1)} includes the peak.
so the discrete peak can be either X[i] or X[i+1]? what if you included the wrong "2nd place" with the discrete peak? e.g. what if X[i] is the discrete peak, but you should have chosen X[i-1] instead of X[i+1]? dunno who Grandke is, but i think this method sorta sucks. a simple quadratic peak interpolation with three points (the discrete peak and its two adjacent neighbors) is better, both analytically and, since division is required in both cases, in practice. this method has a name (i think i saw the person's name in Numerical Recipes) but i dunno who it is. r b-j
On Apr 20, 2:01&#2013266080;pm, robert bristow-johnson
<r...@audioimagination.com>
wrote:

> > so the discrete peak can be either X[i] or X[i+1]? &#2013266080;what if
you
> included the wrong "2nd place" with the discrete peak?
&#2013266080;e.g. &#2013266080;what if
> X[i] is the discrete peak, but you should have chosen X[i-1] instead > of X[i+1]?
Is there some reason to think it is unreasonably more difficult to locate the peak value and the next greatest value than to find the peak and the two adjacent values?
> > dunno who Grandke is, but i think this method sorta sucks. &#2013266080;a
simple
> quadratic peak interpolation with three points (the discrete peak and > its two adjacent neighbors) is better, both analytically ...
Analytically, Grandke's method is derived from and exact for the von Hann weighting. The quadratic peak interpolator is exact for the log of the power spectrum for the Gaussian window and very good for large transforms or high sidelobe rejection Gaussian windows for the discrete case. The quadratic method may be more robust to some mismatched window choices and is commonly used by people who accept the inaccuracy for the benefit of code reuse. Dale B. Dalrymple
>On Wed, 20 Apr 2011 14:28:13 -0500, creekmor <user@compgroups.net/> >wrote: > >>I have a question about Grandke's method of frequency interpolation. (I
suspect this question has been asked before). Using the Hanning window (and Schoukens, 1991 notation), he derives
>> >>f_interp = (i + delta) * fo, where >> >>delta = (2*alpha - 1) / (alpha + 1), and >> >>alpha = abs(X(i+1) / X(i)), and >> >>{X(i), X(i+1)} includes the peak. By definition, >> >>0 < delta < 1, which implies 1/2 < alpha < 2. Why must >> >>alpha satisfy this? > >The units on delta are DFT bins, so if delta > 1 then you picked the >wrong bin for the maximum. The correction is just to find a finer >estimate between bins, so the assumption is that the peak is already >determined within one bin. > > >Eric Jacobsen >http://www.ericjacobsen.org >http://www.dsprelated.com/blogs-1//Eric_Jacobsen.php >
I agree with that; however, the quantity alpha = abs(X(i+1) / X(i)) clearly could be between 0 and infty. For example, if the peak is located at bin # i, and the next largest bin # is i+1, then 0 < alpha < 1 while if the peak is located at bin # i+1 and the next largest bin # is i, then 1 < alpha < infty However, to ensure that the fractional bin spacing delta satisfies 0 < delta < 1, alpha must then satisfy 1/2 < alpha < 2 which contradicts the above. In comparison, the interpolation formula for the rectangular window is delta = alpha / (alpha+1) which causes no similar problem.
>On Wed, 20 Apr 2011 14:28:13 -0500, creekmor <user@compgroups.net/> >wrote: > >>I have a question about Grandke's method of frequency interpolation. (I
suspect this question has been asked before). Using the Hanning window (and Schoukens, 1991 notation), he derives
>> >>f_interp = (i + delta) * fo, where >> >>delta = (2*alpha - 1) / (alpha + 1), and >> >>alpha = abs(X(i+1) / X(i)), and >> >>{X(i), X(i+1)} includes the peak. By definition, >> >>0 < delta < 1, which implies 1/2 < alpha < 2. Why must >> >>alpha satisfy this? > >The units on delta are DFT bins, so if delta > 1 then you picked the >wrong bin for the maximum. The correction is just to find a finer >estimate between bins, so the assumption is that the peak is already >determined within one bin. > > >Eric Jacobsen >http://www.ericjacobsen.org >http://www.dsprelated.com/blogs-1//Eric_Jacobsen.php >
I agree with that; however, the quantity alpha = abs(X(i+1) / X(i)) clearly could be between 0 and infty. For example, if the peak is located at bin # i, and the next largest bin # is i+1, then 0 < alpha < 1 while if the peak is located at bin # i+1 and the next largest bin # is i, then 1 < alpha < infty However, to ensure that the fractional bin spacing delta satisfies 0 < delta < 1, alpha must then satisfy 1/2 < alpha < 2 which contradicts the above. In comparison, the interpolation formula for the rectangular window is delta = alpha / (alpha+1) which causes no similar problem.
On Apr 20, 2:01&#2013266080;pm, robert bristow-johnson
<r...@audioimagination.com>
wrote:

> > so the discrete peak can be either X[i] or X[i+1]? &#2013266080;what if
you
> included the wrong "2nd place" with the discrete peak?
&#2013266080;e.g. &#2013266080;what if
> X[i] is the discrete peak, but you should have chosen X[i-1] instead > of X[i+1]?
Is there some reason to think it is unreasonably more difficult to locate the peak value and the next greatest value than to find the peak and the two adjacent values?
> > dunno who Grandke is, but i think this method sorta sucks. &#2013266080;a
simple
> quadratic peak interpolation with three points (the discrete peak and > its two adjacent neighbors) is better, both analytically ...
Analytically, Grandke's method is derived from and exact for the von Hann weighting. The quadratic peak interpolator is exact for the log of the power spectrum for the Gaussian window and very good for large transforms or high sidelobe rejection Gaussian windows for the discrete case. The quadratic method may be more robust to some mismatched window choices and is commonly used by people who accept the inaccuracy for the benefit of code reuse. Dale B. Dalrymple
On Apr 20, 3:28=A0pm, creekmor <u...@compgroups.net/> wrote:
> I have a question about Grandke's method of frequency interpolation. =A0(=
I suspect this question has been asked before). =A0Using the Hanning window= (and Schoukens, 1991 notation), he derives
> > f_interp =3D (i + delta) * fo, where > > delta =3D (2*alpha - 1) / (alpha + 1), and > > alpha =3D abs(X(i+1) / X(i)), and > > {X(i), X(i+1)} includes the peak.
so the discrete peak can be either X[i] or X[i+1]? what if you included the wrong "2nd place" with the discrete peak? e.g. what if X[i] is the discrete peak, but you should have chosen X[i-1] instead of X[i+1]? dunno who Grandke is, but i think this method sorta sucks. a simple quadratic peak interpolation with three points (the discrete peak and its two adjacent neighbors) is better, both analytically and, since division is required in both cases, in practice. this method has a name (i think i saw the person's name in Numerical Recipes) but i dunno who it is. r b-j
On Wed, 20 Apr 2011 14:28:13 -0500, creekmor <user@compgroups.net/>
wrote:

>I have a question about Grandke's method of frequency interpolation. (I suspect
this question has been asked before). Using the Hanning window (and Schoukens, 1991 notation), he derives
> >f_interp = (i + delta) * fo, where > >delta = (2*alpha - 1) / (alpha + 1), and > >alpha = abs(X(i+1) / X(i)), and > >{X(i), X(i+1)} includes the peak. By definition, > >0 < delta < 1, which implies 1/2 < alpha < 2. Why must > >alpha satisfy this?
The units on delta are DFT bins, so if delta > 1 then you picked the wrong bin for the maximum. The correction is just to find a finer estimate between bins, so the assumption is that the peak is already determined within one bin. Eric Jacobsen http://www.ericjacobsen.org http://www.dsprelated.com/blogs-1//Eric_Jacobsen.php
I have a question about Grandke's method of frequency interpolation.  (I suspect
this question has been asked before).  Using the Hanning window (and Schoukens, 1991
notation), he derives

f_interp = (i + delta) * fo, where 

delta = (2*alpha - 1) / (alpha + 1), and

alpha = abs(X(i+1) / X(i)), and

{X(i), X(i+1)} includes the peak.  By definition,

0 < delta < 1, which implies 1/2 < alpha < 2.  Why must

alpha satisfy this?



---