DSPRelated.com
Forums

Plet's Fourth Estimator

Started by Michael Plet February 28, 2017
Hi Group

This is a new estimator based on the imaginary 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*(Sj-Si)*Im[k] - Cj*(Sk-Si)*Im[j] + Ci*(Sk-Sj)*Im[i])
      / ((Sj-Si)*Im[k] - (Sk-Si)*Im[j] + (Sk-Sj)*Im[i])

where Im[] is the imaginary 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 Fourth 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 Fourth Estimator
---- -------------
3.0  -0.000  0.014
3.1  -0.000  0.011
3.2   0.000  0.010
3.3  -0.000  0.011
3.4   0.001  0.013
3.5   0.001  0.019
3.6  -0.000  0.034
3.7   0.000  0.087
3.8   0.001  0.077
3.9  -0.002  0.024


Target Noise Level = 0.010

Freq Plet's Fourth Estimator
---- -------------
3.0  -0.008  0.143
3.1   0.001  0.112
3.2  -0.000  0.100
3.3  -0.001  0.108
3.4  -0.005  0.133
3.5   0.002  0.199
3.6  -0.016  0.345
3.7   0.030  0.845
3.8   0.029  0.773
3.9   0.008  0.234


Target Noise Level = 0.100

Freq Plet's Fourth Estimator
---- -------------
3.0   0.023  1.436
3.1  -0.053  1.126
3.2  -0.005  1.003
3.3   0.052  1.071
3.4   0.019  1.288
3.5   0.060  1.910
3.6  -0.217  3.357
3.7  -0.597  9.054
3.8  -0.817  8.003
3.9  -0.018  2.271


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