Let's say, I have got a spectrum of a signal with noise using fft:
For a human it's pretty obvious that there is a signal with a frequency of about 51Hz. But what is the mathematical apparatus behind such conclusion and is there a tool for this in python?
Easiest solution in this example would be to just take max(y) of spectrum to get the frequency of signal but it would work only in a situation where spectrum actually has desired signal.
Second way is to take coefficient of variation:
$$c_V = { \sigma \over \mu}.$$
numpy.std(abs(y0))/numpy.mean(abs(y0))
Which is definitely more preferrable, however this coefficient is rather empirical and would need some kind of threshold value.
Is there some function or formula that would make it clear if there is signal in spectrum without the need to use empirical values like cut-off frequencies or threshold for spectral density as the noise or the signal can be of any of any magnitude and frequency?