I am having an issues with calculation of a noise floor value from the exported frequency series. I have both inputs to the QA403 grounded. I run a 64K FFT, 8 averages and stop the acquisition. The dBV measurement shows a value of -117.82dBV. When I do a sum of the exported frequency values I come up with 116.23dBV. I am thinking they should be much closer. I have tried this a few other configurations and my calculated value is always higher than the value shown in dBV measurement window. Same test with an open +input to the QA403, the dBV measurement is -86.63dBV and my calculated value is -84.87dBV. Is there some correction factor this is applied to the value in the dBV measurement window?
Just checking you know the difference between spectral density (for noise) and a signal spectrum (for discrete tones)?
I believe I do but it sounds like you see a point that needs clarification. In asking my question I am trying to find why my calculation does not match what is calculated by the QA403 software. Not sure that I see where spectral density is relevant to determining the difference in the two calculations.
My question comes from work I am doing translating changes in the full bandwidth noise floor of an input sine wave as it relates to magnitude and character of clock jitter.
Hi @rmod, there are correction factors that must be applied based on the window: These are energy correction factors and amplitude correction factors. In the link below, you’ll see the “first principles” on how take data and convert to meaningful RMS energy calcs and also displayed peaks.
PS. When computing RMS you don’t just sum the frequency values. You need to square each bin (not including bin0 which is DC), sum those, and then take the sqrt. See around line 107.
Momentarily switch to a rectangular window and that will make half your problem go away. I note the gap in your measurement is 1.6 dB, which is roughly the ECF for Hanning at Hamming. If you switch to RECT and gap goes to zero, then your issue is ECF
Hi Matt,
Thanks! that is just what I needed. I will this a try and let you know what I get.
Hi @rmod, please report back if you get stuck!
Does that code factor in the noise-equivalent bandwidth of the window function - you need that as well as the bin size to scale noise floor.
After converting to SPL with mic sen., preamp gain and such, can we use the dBV values in the frequency series to summing SPL using the formula below?
Hi @MarkT, that would be needed for noise density measurements which the demo code doesn’t show, but for RMS just the energy correction is needed. And the Py code shows a neat way of computing the energy correction factor for any window. And then amplitude correction too (for displaying)
I wrote the first principles Python code to show how to do round-trip computations so that time domain and frequency domain agree. There’s a lot of DSP knowledge out there but it doesn’t usually deal with absolute values and so it’s a challenge for those starting DSP to see how to sample a 1Vrms sine and get the FFT and RMS calcs to display the amplitude correctly and compute the RMS correctly.
Let me know if you see errors in the Python
Are we at cross-purposes - if you calculate from the output of the FFT you have to correct for bin bandwidth and for window noise bandwidth for noise parameters, but not for coherent signals (assuming the window is normalized so that signal peaks display correctly).
Because signal peak is not the same as signal energy with a window.
see GH_FFT.pdf