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