DSPRelated.com
Forums

Plet's Third Estimator

Started by Michael Plet February 27, 2017
Hi Group

This is a new estimator based on the real values of three DFT bins.
The estimator is exact for a pure sinusoid without noise.
It performs well in the presence of noise.

Let j be the index of the DFT bin with the largest magnitude.
Let k=j-1 and i=j+1.

Now let

Sk = Sin(2*PI*k/N)
Ck = Cos(2*PI*k/N)
Sj = Sin(2*PI*j/N)
Cj = Cos(2*PI*j/N)
Si = Sin(2*PI*i/N)
Ci = Cos(2*PI*i/N)

Then the Cosine of the normalised angular frequency is estimated by:

Cw = (Ck*(Cj-Ci)*Re[k] - Cj*(Ck-Ci)*Re[j] + Ci*(Ck-Cj)*Re[i])
      / ((Cj-Ci)*Re[k] - (Ck-Ci)*Re[j] + (Ck-Cj)*Re[i])

where Re[] is the real part of X[].

The normalised frequency is then

Freq=(N/(2*PI))*Arccos(Cw)


Below is the result of a test run.

Regards,
Michael Plet


The sample count is 100
and the run size is 1000
 The phase value is  0.785398

Errors are shown at 100x actual value

Target Noise Level = 0.000

Freq Plet's Third Estimator
---- -------------
3.0   0.000  0.000
3.1  -0.000  0.000
3.2   0.000  0.000
3.3  -0.000  0.000
3.4  -0.000  0.000
3.5  -0.000  0.000
3.6   0.000  0.000
3.7  -0.000  0.000
3.8   0.000  0.000
3.9   0.000  0.000


Target Noise Level = 0.001

Freq Plet's Third Estimator
---- -------------
3.0  -0.000  0.014
3.1   0.001  0.021
3.2   0.001  0.065
3.3   0.002  0.076
3.4  -0.001  0.029
3.5   0.000  0.022
3.6   0.000  0.016
3.7   0.000  0.012
3.8  -0.001  0.011
3.9   0.000  0.011


Target Noise Level = 0.010

Freq Plet's Third Estimator
---- -------------
3.0   0.001  0.138
3.1   0.003  0.211
3.2  -0.014  0.705
3.3  -0.005  0.773
3.4   0.004  0.289
3.5   0.000  0.228
3.6   0.006  0.154
3.7  -0.000  0.121
3.8  -0.004  0.107
3.9   0.000  0.114


Target Noise Level = 0.100

Freq Plet's Third Estimator
---- -------------
3.0   0.005  1.404
3.1   0.087  2.235
3.2   0.548  6.736
3.3   0.412  7.605
3.4   0.079  3.007
3.5   0.003  2.267
3.6   0.019  1.555
3.7   0.013  1.203
3.8  -0.055  1.056
3.9  -0.045  1.109


Thank you to Cedron for letting me use his test program.

Derivation was inspired by equation 25 in this blog article by Cedron:
https://www.dsprelated.com/showarticle/771.php