By popular demand, or at least a few requests, here are some empirical results comparing my frequency formula with Candan's. For the Noise, Dawg, and Candan columns, the first column is the average and the second column is the standard deviation. The data sets start out with the noiseless case and then there are increasing levels of noise. The values of the frequency are based on the 30 Hz within a tenth of a second interval that I used in another post. There are 10 samples and a DFT size of 10. There are more details of the testing below. If the data lines wrap in your display, you can copy and paste the whole set into a fixed pitch text editor for best results. Target Noise Level = 0.000 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 3.1 0.7126 0.0000 0.0000 0.0000 0.0000 0.0096 0.0000 3.2 0.7337 0.0000 0.0000 0.0000 0.0000 0.0075 0.0000 3.3 0.7438 0.0000 0.0000 0.0000 0.0000 -0.0093 0.0000 3.4 0.7296 0.0000 0.0000 -0.0000 0.0000 -0.0317 0.0000 3.5 0.7071 0.0000 0.0000 0.0000 0.0000 -0.0434 0.0000 3.6 0.7054 0.0000 0.0000 -0.0000 0.0000 -0.0324 0.0000 3.7 0.7290 0.0000 0.0000 -0.0000 0.0000 -0.0023 0.0000 3.8 0.7489 0.0000 0.0000 -0.0000 0.0000 0.0291 0.0000 3.9 0.7389 0.0000 0.0000 -0.0000 0.0000 0.0427 0.0000 Target Noise Level = 0.001 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.0010 0.0002 0.0000 0.0003 0.0000 0.0003 3.1 0.7126 0.0010 0.0002 0.0000 0.0003 0.0096 0.0003 3.2 0.7337 0.0010 0.0002 -0.0000 0.0004 0.0075 0.0004 3.3 0.7438 0.0010 0.0002 0.0000 0.0004 -0.0093 0.0004 3.4 0.7296 0.0010 0.0002 0.0000 0.0005 -0.0317 0.0004 3.5 0.7071 0.0010 0.0002 0.0000 0.0006 -0.0434 0.0005 3.6 0.7054 0.0010 0.0002 -0.0000 0.0007 -0.0324 0.0006 3.7 0.7290 0.0010 0.0002 -0.0000 0.0009 -0.0023 0.0007 3.8 0.7489 0.0010 0.0002 0.0000 0.0011 0.0291 0.0009 3.9 0.7389 0.0010 0.0002 0.0000 0.0014 0.0427 0.0011 Target Noise Level = 0.010 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.0100 0.0022 -0.0000 0.0032 -0.0000 0.0034 3.1 0.7126 0.0101 0.0022 -0.0000 0.0034 0.0096 0.0035 3.2 0.7337 0.0100 0.0022 0.0000 0.0038 0.0075 0.0037 3.3 0.7438 0.0100 0.0022 0.0001 0.0043 -0.0093 0.0040 3.4 0.7296 0.0100 0.0022 -0.0001 0.0051 -0.0318 0.0045 3.5 0.7071 0.0100 0.0022 0.0000 0.0060 -0.0434 0.0051 3.6 0.7054 0.0100 0.0022 -0.0000 0.0071 -0.0325 0.0059 3.7 0.7290 0.0100 0.0022 0.0000 0.0087 -0.0023 0.0072 3.8 0.7489 0.0100 0.0022 -0.0000 0.0107 0.0290 0.0087 3.9 0.7389 0.0100 0.0022 0.0000 0.0139 0.0428 0.0108 Target Noise Level = 0.100 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.1002 0.0224 -0.0003 0.0323 -0.0003 0.0340 3.1 0.7126 0.0997 0.0220 -0.0003 0.0344 0.0092 0.0348 3.2 0.7337 0.1002 0.0222 -0.0008 0.0376 0.0065 0.0365 3.3 0.7438 0.0999 0.0224 0.0001 0.0431 -0.0094 0.0401 3.4 0.7296 0.0996 0.0223 0.0009 0.0503 -0.0314 0.0437 3.5 0.7071 0.1003 0.0223 0.0003 0.0603 -0.0440 0.0507 3.6 0.7054 0.1000 0.0220 -0.0005 0.0718 -0.0336 0.0593 3.7 0.7290 0.1003 0.0223 0.0007 0.0890 -0.0033 0.0722 3.8 0.7489 0.1001 0.0221 0.0038 0.1121 0.0294 0.0892 3.9 0.7389 0.1001 0.0222 0.0092 0.1510 0.0431 0.1107 This is a side by side comparison test between my frequency equations and those of Candan (recommended by Eric Jacobsen). My equation looks like this: acos( real( [WB]Z / WZ ) ) * [N/(2Pi)] The derivation and details of the values can be found in my blog article titled "Exact Frequency Formula for a Pure Real Tone in a DFT" at dsprelated.com. The link is: http://www.dsprelated.com/showarticle/773.php Cagatay Candan's looks like this real( (1,0,-1)Z / (-1,2,-1)Z ) * [tan(Pi/N)/(Pi/N)] + BinNumber The derivation and details of his can be found in a published paper titled "A Method For Fine Resolution Frequency Estimation From Three DFT Samples". Z is the 3 bin DFT vector. The bracketed expression are values that are precalculated prior to repeated use. Candan's formula is based on Jacobsen's estimator and differs by including a bias correction multiplication term. Jacobsen's formula can be shown to be an approximation of mine with some trigonometric identities, using the limit value of W, and a few sin( x ) ~=~ x when x is small substitution. Both formulas being evaluated have roughly the same computation complexity with mine having a little bit more. I have not done any timing testing yet. The clean signal being tested is: cos( Freq * [2Pi/N] * s ) 0 <= s < 10 The noise is near Guassian, produced by adding together 10 uniform random variables on the range [-1 to 1] and multiplying by the appropriate scaling factor to achieve the target noise level. Each data line consists of the results of 10,000 trial runs. For each run a fresh set of noise is added. The RMS of the signal and the RMS of the noise are calculated. A three bin DFT of the signal+noise is calculated and the results shared by the two formulas. The frequency is subtracted from the results to produce the collected data. Each run produces a data tuple (Signal RMS, Noise RMS, Dawg Error, Candan Error). The average and standard deviation of these values are calculated over the 10,000 runs. These are the result values displayed in the table. The standard deviation for the signal is not shown because it is always zero (doesn't change from run to run). The results confirm what I have repeatedly stated: 1) In the noiseless case, my formula is exact. 2) In the presence of noise, mine behaves comparably to Jacobsen's/Candan's. Ced --------------------------------------- Posted through http://www.DSPRelated.com

# Show me the numbers

Started by ●May 28, 2015

Posted by ●May 29, 2015

A couple of small oops: Gaussian For each run a fresh set of noise is used. Sorry, Ced --------------------------------------- Posted through http://www.DSPRelated.com

Posted by ●May 29, 2015

Cedron <103185@DSPRelated> wrote:>My equation looks like this: > >acos( real( [WB]Z / WZ ) ) * [N/(2Pi)]Looks right.>Cagatay Candan's looks like this > >real( (1,0,-1)Z / (-1,2,-1)Z ) * [tan(Pi/N)/(Pi/N)] + BinNumberLooks like a quadratic interpolation. Of course, I haven't gone through the math but... there can be only one right answer. Probably yours. Maybe Candan is more noise-immune, or something. Steve

Posted by ●May 29, 2015

Hi Cedron, I was curious too about the real performance of your estimator with noise, and I did myself some tests too. I was at the beginning rather pessimist about your estimator in presence of noise, but I must admit it is not so bad (yet it is more complex to compute than other estimators). I don't know how to add image on this forum, so you can find the results here: http://92.243.17.111/uploads/mse.pdf, and the full SCILAB test script here: http://92.243.17.111/uploads/freqestim.sce In the graph, the methods compared are the following: -- "Basic method" : just taken the highest FFT bin, no interpolation -- "Cédron" : your method -- "Quadratic" : quadratic interpolation, as described here http://dspguru.com/dsp/howtos/how-to-interpolate-fft-peak -- "Jacobsen" : Eric Jacobsen formula, from http://www.statistik.tu-dortmund.de/~bischl/mypapers/frequency_estimation_by_dft_interpolation_a_comparison_of_methods.pdf. Since we are Lucky enough to have him among us, maybe he could check that I have well implemented his formula (function "fe_jacobsen_calc" in the script) -- "Gaussian" : quadratic interpolation in the log domain, with Gaussian pre-windowing, as described here http://www.dsprelated.com/freebooks/sasp/Quadratic_Interpolation_Spectral_Peaks.html. Not sure if I have well implemented it, because the results are not so good (theorically, if the gaussian window was ideal, it should be an exact method). The poor results I have seem to indicate I have made a mistake. As can be seen in the graph, all methods except the exact formula ("Cédron" label) have a noise floor at high SNR. This is as expected, except for the gaussian method, which I assumed was more or less exact (except for the finite gaussian window effect). So I come back on my first statement about your method: it is not so bad, especially at high SNR (as expected for an exact formula), but also at medium SNR (down to about 5 dB). Under 5 dB, it behave rather simularly or is less accurate that the other methods. Best regards, Julien PS : any hints to corrections or upgrades to the script would be welcome! --------------------------------------- Posted through http://www.DSPRelated.com

Posted by ●May 29, 2015

PS: The first link is: http://92.243.17.111/uploads/mse.pdf (without the comma at the end) --------------------------------------- Posted through http://www.DSPRelated.com

Posted by ●May 29, 2015

On Fri, 29 May 2015 02:23:43 -0500, "tsd82" <105802@DSPRelated> wrote:>Hi Cedron, > >I was curious too about the real performance of your estimator with noise, >and I did myself some tests too. I was at the beginning rather pessimist >about your estimator in presence of noise, but I must admit it is not so >bad (yet it is more complex to compute than other estimators). > >I don't know how to add image on this forum, so you can find the results >here: > http://92.243.17.111/uploads/mse.pdf, and the full SCILAB test script >here: http://92.243.17.111/uploads/freqestim.sce > >In the graph, the methods compared are the following: > > -- "Basic method" : just taken the highest FFT bin, no interpolation > -- "Cédron" : your method > -- "Quadratic" : quadratic interpolation, as described here >http://dspguru.com/dsp/howtos/how-to-interpolate-fft-peak > -- "Jacobsen" : Eric Jacobsen formula, from >http://www.statistik.tu-dortmund.de/~bischl/mypapers/frequency_estimation_by_dft_interpolation_a_comparison_of_methods.pdf. >Since we are Lucky enough to have him among us, maybe he could check that >I have well implemented his formula (function "fe_jacobsen_calc" in the >script)Julien - please contact me via email: eric.jacobsen@ieee.org.> -- "Gaussian" : quadratic interpolation in the log domain, with Gaussian >pre-windowing, as described here >http://www.dsprelated.com/freebooks/sasp/Quadratic_Interpolation_Spectral_Peaks.html. >Not sure if I have well implemented it, because the results are not so >good (theorically, if the gaussian window was ideal, it should be an exact >method). The poor results I have seem to indicate I have made a mistake. > >As can be seen in the graph, all methods except the exact formula >("Cédron" label) have a noise floor at high SNR. This is as expected, >except for the gaussian method, which I assumed was more or less exact >(except for the finite gaussian window effect). > >So I come back on my first statement about your method: it is not so bad, >especially at high SNR (as expected for an exact formula), but also at >medium SNR (down to about 5 dB). Under 5 dB, it behave rather simularly or >is less accurate that the other methods. > > >Best regards, > >Julien > >PS : any hints to corrections or upgrades to the script would be welcome! > > >--------------------------------------- >Posted through http://www.DSPRelated.comEric Jacobsen Anchor Hill Communications http://www.anchorhill.com

Posted by ●May 29, 2015

>Cedron <103185@DSPRelated> wrote: > >>My equation looks like this: >> >>acos( real( [WB]Z / WZ ) ) * [N/(2Pi)] > >Looks right.Almost, one small oops there as well. It should be: acos( real( [WB]Z / [W]Z ) ) * [N/(2Pi)]> >>Cagatay Candan's looks like this >> >>real( (1,0,-1)Z / (-1,2,-1)Z ) * [tan(Pi/N)/(Pi/N)] + BinNumber > >Looks like a quadratic interpolation. > >Of course, I haven't gone through the math but... there can >be only one right answer. Probably yours. >The correct answer can often take on many forms. Hopefully my data table and Julien's graph will give you (and others) sufficient motivation to read my articles. The derivation really spans two articles: "DFT Bin Value Formulas for Pure Real Tones" (771) This article develops a formula for the bin values as a function of the signal parameters. It is a reworking of the definition of a signal plugged into the definition of a DFT and simplified to a non-summation form. Nowhere during the process are any approximations taken, so the results are exact. There is some gooblygook that needs to be waded through (equations (17), (20), and (21)), but there is nothing conceptually deep in the derivation. It is just straightforward algebra. The "Qualitative Analysis" section tries to explain its descriptive ability of the behavior of leakage. "Exact Frequency Formula for a Pure Real Tone in a DFT" (773) This article solves the inverse of the bin value formulas to find the frequency (alpha) as a function of bin values. Again, no approximations are taken, so it remains exact. Overall, I think that my derivation is much simpler than the one in Candan's paper. As rbj pointed out, my usage of the n and k subscripts is reversed from the common convention.>Maybe Candan is more noise-immune, or something. > > >SteveWhy do you presuppose that Candan's should have any superior properties? I'm not saying it doesn't, but it is just an approximation of the correct answer. Ced --------------------------------------- Posted through http://www.DSPRelated.com

Posted by ●May 29, 2015

Hi Julien, You made my day.>Hi Cedron, > >I was curious too about the real performance of your estimator withnoise,>and I did myself some tests too. I was at the beginning rather pessimist >about your estimator in presence of noise, but I must admit it is not so >bad (yet it is more complex to compute than other estimators). > >I don't know how to add image on this forum, so you can find the results >here: > http://92.243.17.111/uploads/mse.pdf, and the full SCILAB test script >here: http://92.243.17.111/uploads/freqestim.sceIn order to pose graphics on Usenet, you have to use the "Save As ASCII Art" option of your software. Tee hee. Your graph is awesome. I bet it is more convincing to others than either my data table or theoretical arguments. I am so appreciative that you took the time to do this.> >In the graph, the methods compared are the following: > > -- "Basic method" : just taken the highest FFT bin, no interpolation > -- "CÃ©dron" : your method > -- "Quadratic" : quadratic interpolation, as described here >http://dspguru.com/dsp/howtos/how-to-interpolate-fft-peak > -- "Jacobsen" : Eric Jacobsen formula, from >http://www.statistik.tu-dortmund.de/~bischl/mypapers/frequency_estimation_by_dft_interpolation_a_comparison_of_methods.pdf.From this article: "Also, it’s not very evident, why exactly this adaptation results in such an improvement[Jacobsen 2009, personal communication]." It is very evident when you understand that his estimator is an approximation of the correct equation and converges to it as the number of samples grows.>Since we are Lucky enough to have him among us, maybe he could checkthat>I have well implemented his formula (function "fe_jacobsen_calc" in the >script) > -- "Gaussian" : quadratic interpolation in the log domain, withGaussian>pre-windowing, as described here >http://www.dsprelated.com/freebooks/sasp/Quadratic_Interpolation_Spectral_Peaks.html. >Not sure if I have well implemented it, because the results are not so >good (theorically, if the gaussian window was ideal, it should be anexact>method). The poor results I have seem to indicate I have made a mistake. > >As can be seen in the graph, all methods except the exact formula >("CÃ©dron" label) have a noise floor at high SNR. This is as expected, >except for the gaussian method, which I assumed was more or less exact >(except for the finite gaussian window effect).I love the accent mark. The shelf can be explained by Steve Pope's cases: (1) FT of a continuous-time function which is a rectangle (2) FT of the above rectangle multiplied by an impulse train In case (1) there is no shelf, but since case (1) and case (2) only resemble each other, there will be differences. When the number of samples increases, case (2) approaches case (1), (as mentioned in the other thread) and the differences become smaller. Case (2) never becomes case (1). Case (1) is its limit. Just like a binomial distribution never becomes a bell curve. If you increase the number of samples, the shelf will be lowered. A chart like the one you made with bin count as the horizontal axis would show this clearly. (Pretty please?) Noiseless would emphasize the point.> >So I come back on my first statement about your method: it is not sobad,>especially at high SNR (as expected for an exact formula), but also at >medium SNR (down to about 5 dB). Under 5 dB, it behave rather simularlyor>is less accurate that the other methods. >Agreed. In my frequency formula article I wrote: "If the noise level is high enough, the advantages of an exact formula may not be worth the extra calculations compared to a quick and dirty estimation formula." However, in a real world application, the savings from the ability to reduce the number of bins may swamp the extra cost.> >Best regards, > >Julien > >PS : any hints to corrections or upgrades to the script would bewelcome!> > >--------------------------------------- >Posted through http://www.DSPRelated.comThis sure is a tough crowd. So far I have gotten an "okay" from rbj, a "probably right" from Steve Pope, and a "not so bad" from you. Here is a field of Mathematics that has been around for more than a century, intensely studied in the last few decades, and I derive an exact solution for a fundamental concept that conventional wisdom proclaims is impossible, and all I get is this? How about an "attaboy"? Thanks, Ced --------------------------------------- Posted through http://www.DSPRelated.com

Posted by ●May 30, 2015

On Fri, 29 May 2015 02:23:43 -0500, "tsd82" <105802@DSPRelated> wrote:>Hi Cedron, > >I was curious too about the real performance of your estimator with noise, >and I did myself some tests too. I was at the beginning rather pessimist >about your estimator in presence of noise, but I must admit it is not so >bad (yet it is more complex to compute than other estimators).Hi Julien, So you were able to implement Cedron's scheme in software. Good for you! (I mean it.)>I don't know how to add image on this forum, so you can find the results >here: > http://92.243.17.111/uploads/mse.pdf, and the full SCILAB test script >here: http://92.243.17.111/uploads/freqestim.sce > >In the graph, the methods compared are the following: > > -- "Basic method" : just taken the highest FFT bin, no interpolation > -- "Cédron" : your method > -- "Quadratic" : quadratic interpolation, as described here >http://dspguru.com/dsp/howtos/how-to-interpolate-fft-peak > -- "Jacobsen" : Eric Jacobsen formula, from >http://www.statistik.tu-dortmund.de/~bischl/mypapers/frequency_estimation_by_dft_interpolation_a_comparison_of_methods.pdf. >Since we are Lucky enough to have him among us, maybe he could check that >I have well implemented his formula (function "fe_jacobsen_calc" in the >script) > -- "Gaussian" : quadratic interpolation in the log domain, with Gaussian >pre-windowing, as described here >http://www.dsprelated.com/freebooks/sasp/Quadratic_Interpolation_Spectral_Peaks.html. >Not sure if I have well implemented it, because the results are not so >good (theorically, if the gaussian window was ideal, it should be an exact >method). The poor results I have seem to indicate I have made a mistake. > >As can be seen in the graph, all methods except the exact formula >("Cédron" label) have a noise floor at high SNR. This is as expected, >except for the gaussian method, which I assumed was more or less exact >(except for the finite gaussian window effect).Based on your results, it looks like the Cedron method has similar performance to Candan's method. Two papers from Candan can be found at: http://www.eee.metu.edu.tr/~ccandan/pub_dir/FineDopplerEst_IEEE_SPL_June2011.pdf and http://www.eee.metu.edu.tr/~ccandan/pub_dir/Orguner_Candan_Freq_Est_From_Many_Bins_Elsevier_SP_Dec_2014.pdf>So I come back on my first statement about your method: it is not so bad, >especially at high SNR (as expected for an exact formula), but also at >medium SNR (down to about 5 dB). Under 5 dB, it behave rather simularly or >is less accurate that the other methods.This 'freq estimation based on DFT samples' topic has been attacked by dozens of skilled DSP people for decades. It's not as simple as Cedron implies. And the results of all that study and effort are a collection of "frequency estimation" methods. And none of those DSP folk, other than Cedron, has claimed to produce "exact" frequency estimation results. I think the word "exact" should be avoided when discussing this 'freq estimation based on DFT samples' topic. Measuring the freq of a real-world, noise-contaminated, sinusoidal signal is never, as far as I can tell, "exact". For a trivial example, no computer on Earth can measure the "exact" frequency of a noise-free input sine wave sequence whose frequency is 100/3 Hz. For that matter, no computer screen is capable of displaying the "exact" frequency of that sine wave in decimal format. :-) I've done a little Matlab modeling on this topic and, as far as I can tell, Jacobsen's method is the most accurate method that I've encountered. I'm talking about processing real-world input signals that have moderate SNRs (less than, say, 15 dB). Here's an interesting comp.dsp thread on the subject: http://compgroups.net/comp.dsp/fft-zero-padding-and-dft-bins/1960737>Best regards, >Julien > >PS : any hints to corrections or upgrades to the script would be welcome!Julien, as if there are not enough papers on this topic, here are three more documents on this 'DFT-based freq estimation' subject: http://mgasior.web.cern.ch/mgasior/pap/biw2004_poster.pdf [The above interesting Gasior poster came from: http://mgasior.web.cern.ch/mgasior/pap/index.html] http://i-rep.emu.edu.tr:8080/jspui/bitstream/11129/1503/1/CetinkayaSadi.pdf and http://www.statistik.tu-dortmund.de/~bischl/mypapers/frequency_estimation_by_dft_interpolation_a_comparison_of_methods.pdf Julien, don'tcha just love DSP? [-Rick-]

Posted by ●May 30, 2015

> >PS : any hints to corrections or upgrades to the script would bewelcome!> > >--------------------------------------- >Posted through http://www.DSPRelated.comHi Julien, Do you know how to code in C++ on Linux by any chance? I'd be happy to send you my source code. Here is another set of data from my test program. Everything is identical to the first except the number of samples was increased to 100. Target Noise Level = 0.000 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 3.1 0.7168 0.0000 0.0000 -0.0000 0.0000 0.0023 0.0000 3.2 0.7154 0.0000 0.0000 0.0000 0.0000 0.0017 0.0000 3.3 0.7054 0.0000 0.0000 -0.0000 0.0000 -0.0023 0.0000 3.4 0.7005 0.0000 0.0000 -0.0000 0.0000 -0.0073 0.0000 3.5 0.7071 0.0000 0.0000 0.0000 0.0000 -0.0099 0.0000 3.6 0.7156 0.0000 0.0000 0.0000 0.0000 -0.0080 0.0000 3.7 0.7147 0.0000 0.0000 -0.0000 0.0000 -0.0027 0.0000 3.8 0.7060 0.0000 0.0000 -0.0000 0.0000 0.0024 0.0000 3.9 0.7016 0.0000 0.0000 -0.0000 0.0000 0.0036 0.0000 Target Noise Level = 0.001 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.0010 0.0001 0.0000 0.0001 0.0000 0.0001 3.1 0.7168 0.0010 0.0001 0.0000 0.0001 0.0023 0.0001 3.2 0.7154 0.0010 0.0001 -0.0000 0.0001 0.0017 0.0001 3.3 0.7054 0.0010 0.0001 0.0000 0.0001 -0.0023 0.0001 3.4 0.7005 0.0010 0.0001 0.0000 0.0001 -0.0073 0.0001 3.5 0.7071 0.0010 0.0001 0.0000 0.0001 -0.0099 0.0002 3.6 0.7156 0.0010 0.0001 -0.0000 0.0002 -0.0080 0.0002 3.7 0.7147 0.0010 0.0001 0.0000 0.0002 -0.0027 0.0002 3.8 0.7060 0.0010 0.0001 0.0000 0.0002 0.0024 0.0003 3.9 0.7016 0.0010 0.0001 0.0000 0.0003 0.0036 0.0003 Target Noise Level = 0.010 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.0102 0.0007 -0.0000 0.0010 -0.0000 0.0010 3.1 0.7168 0.0102 0.0007 -0.0000 0.0010 0.0023 0.0011 3.2 0.7154 0.0102 0.0007 0.0000 0.0010 0.0017 0.0011 3.3 0.7054 0.0102 0.0007 -0.0000 0.0011 -0.0023 0.0012 3.4 0.7005 0.0102 0.0007 0.0000 0.0012 -0.0073 0.0014 3.5 0.7071 0.0102 0.0007 0.0000 0.0014 -0.0099 0.0016 3.6 0.7156 0.0102 0.0007 0.0000 0.0016 -0.0080 0.0019 3.7 0.7147 0.0102 0.0007 -0.0000 0.0018 -0.0027 0.0022 3.8 0.7060 0.0102 0.0007 -0.0000 0.0022 0.0024 0.0027 3.9 0.7016 0.0102 0.0007 0.0000 0.0027 0.0037 0.0033 Target Noise Level = 0.100 Freq Sig RMS Noise RMS Dawg Candan ---- ------- -------------- --------------- --------------- 3.0 0.7071 0.1023 0.0071 -0.0001 0.0102 -0.0001 0.0101 3.1 0.7168 0.1023 0.0071 0.0000 0.0101 0.0023 0.0105 3.2 0.7154 0.1024 0.0070 -0.0001 0.0103 0.0016 0.0111 3.3 0.7054 0.1024 0.0071 0.0000 0.0111 -0.0023 0.0124 3.4 0.7005 0.1021 0.0071 0.0000 0.0120 -0.0073 0.0138 3.5 0.7071 0.1022 0.0071 0.0001 0.0137 -0.0097 0.0159 3.6 0.7156 0.1024 0.0072 -0.0001 0.0156 -0.0081 0.0185 3.7 0.7147 0.1023 0.0072 -0.0004 0.0187 -0.0031 0.0224 3.8 0.7060 0.1021 0.0071 -0.0005 0.0223 0.0019 0.0270 3.9 0.7016 0.1023 0.0071 0.0002 0.0270 0.0040 0.0329 As one would expect, all the standard deviation columns went down significantly. Candan's values also improved considerably. Unlike the first set, where his standard deviations were slightly smaller than mine, in this set the reverse is true. It is also interesting to note that the standard deviations from both formulas seem to be proportionate to the RMS of the noise. The rescaling of the random number seems to be a little off too, but not enough that I felt the need to fix it. Increasing the number of samples is definitely a noise mitigation technique. Ced --------------------------------------- Posted through http://www.DSPRelated.com