I am sampling short bursts of signal (20ms length) in 30ms buffers in time domain. The 30ms buffer consists from 4096 I/Q samples from which roughly 2550 cover the actual signal. Now I do in-place FFT on that. If carrier signal is in the sampled data then it is found by FFT but the power of frequency bin varies depending where inside of the samples the actual signal is located. If I have more noise after signal then FFT power is higher, if I have more before signal then it is weaker. How I can overcome this problem ? I understand FFT will interpolate signal over the noise samples in this case. I would like to have the same FFT power for signal frequency despite of location inside the processed samples. Thanks Michal

  • $\begingroup$ If the noise power is constant, then why would the location of the signal within the buffer affect the power? $\endgroup$ Feb 18, 2016 at 16:14
  • $\begingroup$ can't you analyse forwards reverse loops of the signal as longer signals and then take away the frequency of the loop itself and you will have the best possible source from which to get results based on the original samples. also try using spwvd for 20ms it will give you 1024 x 20ms graph much clearer than fft, and the analysis will take 1-2 seconds per sample: pseudo smoothed wigner ville distribution... free version: christoph-lauer.de/sonogram $\endgroup$ Mar 15, 2016 at 15:19

1 Answer 1


Eventhough you are asking for an answer about your problem with FFT usage, It seems to me, based on your definition of what you are looking for (detecting the presence of a carrier -a known signal?- inside a buffer of 4096 samples) that you would better use a "matched-filter" to detect the presence of that carrier, a known signal, inside the noisy 30ms measurement buffer.

Of course FFT would still help especially for high SNR cases, but for noisy data, matched filter is the optimal choice (under suitable conditions). And I have never heard of FFT by itself reducing noise. May be I am wrong.

To implement a matched-filter, you would simply convolve the time reversed carrier signal with the noisy observation and look for a thresholded peak.

  • $\begingroup$ Unfortunately my signal is encoded and carrier frequency is experiencing Doppler shift which I can predict only with certain accuracy. $\endgroup$ Feb 18, 2016 at 5:56
  • $\begingroup$ ok if the doppler shift prevents you from implementinig an accurate enough matched filter then may be a communications engineer might suggest you what to use, practically, to detect the presence of an semi-known frequency carrier inside a noisy signal. For noise reduction purposes the simplest you can do is passive filtering, provided that there is a bound on max and min frequencies of the carrier. $\endgroup$
    – Fat32
    Feb 18, 2016 at 9:57
  • $\begingroup$ @MichalMisiaszek You can hypothesize the Doppler offset and create a 2-D plot rather than a 1-D one. For instance, the x-axis would be the time (the output from the hypothesized matched filters) and the y-axis would be the Doppler offset. $\endgroup$ Feb 18, 2016 at 18:23
  • $\begingroup$ I have passive filter to reduce noise still I want to detect low CN0 signal for processing. Initially I was using FFT to get Doppler shift and then using found frequency create matching signal and perform correlation of know part of signal. $\endgroup$ Feb 19, 2016 at 5:22
  • $\begingroup$ There is one issue which I did not solved in this approach yet. How to determine the threshold of correlation magnitude to decide is signal is valid or I just correlate with some noise/interference giving me specific peak (I assume smaller). $\endgroup$ Feb 19, 2016 at 5:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.