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
Plet's Third Estimator
Started by ●February 27, 2017