0
$\begingroup$

Apologies for the potentially simple question in advance. I have a limited understanding of the subject, but need to apply this to a project on short notice.

My goal is to run a DFT on a signal with N points and sample rate of R. The signal is often much shorter than 1 second, hence R is much larger than N. This causes the resulting DFT bins to skip many frequencies I'm interested in. As I understand, bin intervals are related to R/N, so I need to either increase N or decrease R. I was thinking about trying one of the following:

  • Stretch the signal by adding intermediate points which are averaged between real points so that N is large enough, then transposing the resulting frequencies back down by the stretch factor.

  • Appending to the signal with either 0s or another copy of itself to increase N.

  • Downsample the signal to lower R.

Are any of these ideas reasonable? I can not gather more points of the signal.

Edit: forgot to mention that the frequencies I'm interested in are very low (~20-300hz), so lowering the sample rate (usually 44.1k) shouldn't be an issue.

$\endgroup$
2
$\begingroup$

If all you want is a finer bin spacing, then the most straightforward thing to do is to increase $N$ by zero-padding. Note, however, that this will not increase your frequency resolution. Frequency resolution is limited by the total length of time that you observe the waveform. So, if you want to actually be able to resolve frequencies more finely, you need to observe the signal for a longer period of time.

Your first option (essentially interpolating the signal to a higher sample rate) won't do what you want at all; $N$ will be larger, but so will the sample rate of the interpolated signal. If you double the size of the dataset by interpolating by 2, then you'll have to do a DFT of twice the length in order to get the same bin spacing.

Downsampling the signal to a lower sample rate as you suggested in your third option can make sense if, as you said, you only care about frequencies below 300 Hz and your initial sample rate is 44.1 kHz. However, what I said above applies: this won't improve your frequency resolution at all; you'll need to either live with zero-padding to interpolate the DFT spectrum, or observe the signal for a longer period of time instead.

$\endgroup$
  • $\begingroup$ Thanks! I'll try zero-padding and downsampling to see if the results are good enough in either case. $\endgroup$ – NoviceEngineer Jun 12 '18 at 22:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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