Improving Frequency Resolution with Window Functions in FFT Calculations

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 2K views
Tim Condra
Messages
2
Reaction score
0
Okay I have a question involving calculating the FFT of a signal from a sensor. I have simulated many different scenarios in MATLAB of various noise characteristics involving the signal.

I want to take the FFT of a noisy signal. As long as my expected input signal has a higher amplitude than noise signals of other frequencies, then the plotted spectrum of the magnitude of the signal should always have the highest peak at my expected input signal's frequency, is this correct?

The reason I am asking is due to an argument about whether filtering is needed to discover the expected input signal's frequency. If the amplitude of the the input signal is always higher, I figured it would always be the peak of the magnitude spectrum.

If this is not correct, what is a correct way to look at this scenario?
 
Engineering news on Phys.org
Tim Condra said:
As long as my expected input signal has a higher amplitude than noise signals of other frequencies, then the plotted spectrum of the magnitude of the signal should always have the highest peak at my expected input signal's frequency, is this correct?
That is a truism.

It depends on the noise, is it white noise or is it intermods and RF interference? If the noise is white you can use power spectrum accumulation to drop the noise floor relative to the signal.

If you want an accurate frequency measurement it is important that the frequency is reasonably high, somewhere near the middle of the FFT spectrum.
 
The problem is I have no idea of the noise characteristics other than it being relatively high (but not quite as high as the expected input) at low frequencies compared to the expected input. We've been asked to design a system that calculates the frequency of the input signal from the sensor. Ideas of using phase locked loops and other things are being thrown around, and I am just puzzled as to why taking an FFT of the sampled signal would not be a viable solution given that the noise isn't at the amplitude of the input signal.
 
Is the signal a sinewave?

Tim Condra said:
and I am just puzzled as to why taking an FFT of the sampled signal would not be a viable solution given that the noise isn't at the amplitude of the input signal.
It is because frequency resolution is poor unless you have an enormous number of data points. Also you must first multiply your data by a window function such as Hann or similar, that widens the frequency bins while reducing the high frequency noise due to the step where the end wraps around to the start.

Maybe use an FFT to estimate the frequency, then do a least squares fit of a sine wave to the original data points. That will give you a more accurate measurement. You must model and fit in the DC offset, amplitude and frequency space.