# Determining the noise floor of a signal in the frequency domain

Is there an accepted way of determining the noise floor of a signal by looking at it in the frequency domain? Is it a matter of averaging all the bins, or median, or some more complex calculation like those described in the question below?

What's the best criterion for determining a frequency peak?

I want to determine the noise floor to set a threshold for determining whether or not my signal contains a given frequency.

• What are the characteristics of the noise? Is it white or colored? Jan 11 '13 at 14:23
• White noise, though I'd love to hear how the answer differs for other colors as well. Jan 11 '13 at 14:25
• White noise is easier to characterize because you would expect it to be flat in the frequency domain. I should have asked before, but what are the characteristics of your signal? How much of the band is filled by signal versus noise? Is the signal always present, or do you have a chance to observe noise only? Jan 11 '13 at 14:31
• The signal is composed of frequencies that fall in the center-bin when doing an FFT (no spectral leakage). Ignoring noise and channel effects each frequency is either at maximum or at the noise floor. If four out of the possible n frequencies are "on" then each frequency should have 1/4th of the power of the whole signal (again, ignoring the noise floor) Jan 11 '13 at 17:53
• @DanSandberg: Without a windowing function, Parseval's theorem lets you calculate energy in time or frequency directly from the other domain. For Python's fft function, for instance: rms(fft(x))/sqrt(n) = rms(x) examples here So you have to decide what your signal looks like in the frequency domain, remove it, measure the leftover values, and multiply by sqrt(n) to get the RMS noise floor, for instance. Feb 5 '13 at 16:03