Threshold for peak detection of noisy signal in frequency domain

I have a noisy signal (Gaussian Noise) with a known SNR and known Noise variance. This signal contains a number of Frequency components. My ultimate objective is to detect the components of the signal. What is the Threshold formula should I use to detect the peaks of the signal in frequency domain given a certain Pfa (probability of false alarm)?

The following plot is an example of my objective. I want a Threshold that separates my useful components from the noise components (Let's say between 0.6 and 1)

• It looks to me you can get rid of the noise by mirroring the spectrum about 20.5 Hz and subtracting. I suppose this is not actual data but a modeling artifact, say complex quadrature signal in real noise. – Olli Niemitalo Jan 18 '19 at 9:47
• @OlliNiemitalo I didnt get your point. However, this plot is just a sample example. In other cases, the peaks could be spread along the full band. I tried npwgnthresh function in matlab but it didnt give me good threshold – Mohamad Jan 18 '19 at 20:55

This is a pretty common problem in radar signal processing. Typically, we’ll use what’s called a CFAR detector (constant false alarm rate). This essentially boils down to a non-linear smoothing filter where to attempt to estimate the local average power of the signal (excluding the current cell under test (CUT)). Afterwards, a “bias factor” is applied; this is typically determined a priori. Anything above the CFAR level + bias factor is labeled as a detection, and everything else is ignored. I’m sure there is a wealth of publicly available information on the topic, and I’d highly recommend doing some googling, or even looking around more on this website.

EDIT: Neyman-Pearson is indeed the standard technique. There are loads of papers about this topic on IEEE Xplore, I highly recommend you check them out. That "bias factor" I talked about earlier is the thing you'll want to calculate based on your PFA or PD curve, which is a function of SNR.

• I've found several formulas from different references about the Neyman Pearson threshold, but the did'nt give me proper values. These formulas are function of Probability of false alarm and Noise variance – Mohamad Jan 22 '19 at 12:15

Look for peaks N dB above the localized noise floor.

Calculate the noise floor by taking the mean of all your samples (or choose an observation window size). You can throw out the top 1-3 samples (or however many you want) to reduce the bias on the mean. After that you can covert your mean to log and then look for peaks N dB above the mean.