1
$\begingroup$

Given the output of some FFT (lets call it X) with N bins (lets say 2048) is it possible to recover the values in between the bins in the same way that I can recover the values in between samples of a real signal?

I've used the various popular estimators (like Jain's and Quinn's first and second) to extract frequency peaks from the FFT for detecting musical pitches. This works great! I've also used the sinc function to reconstruct an audio signal of only real numbers to detect clipping. However I have not found such a method for reconstruction of a complex signal. I've tried using the sinc method on the real/imag parts of the FFT as well as just using sinc for |X| but this leads to incorrect results. I know the results are incorrect because I generate the input signal from pure sine waves so I know where the peaks should be.

Edit: I forgot to add that I have also tried evaluating the the Fourier transform directly for given points. This has been my most successful approach right now but the results vary wildly given how I go about evaluating the integral.

$\endgroup$

1 Answer 1

1
$\begingroup$

Yes it is possible. Add zeros (zero pad) to the time domain samples and then take the DFT.

Zero padding the N sample waveform in the time domain out to M samples will provide an M sample DFT with the additional M-N samples as interpolated values between the N sample DFT results of the original N sample sequence without zero padding. If we zero pad to infinity we can get the DTFT which is a continuous waveform in the frequency domain. Anything less than infinity provides us samples on that same DTFT.

Similarly, we can do time domain interpolation from frequency domain samples by zero padding in the frequency domain prior to the Inverse DFT. The “zero padding” is done in the center of the FFT values (as I demonstrate in this post) since the first half represents DC and the “positive frequencies” and the second half represents the "negative frequencies". Conjugate symmetry of the positive and negative frequencies is required to get a real time domain result (if that was important). The zero padding added in the center is equivalent to a higher sampled waveform with no energy in the higher frequency bins.

$\endgroup$
2
  • $\begingroup$ The zero-padding out to infinity converging on the continuous function has given me a bit of an ah-ha! moment and something to think about. Thanks! $\endgroup$ Apr 17 at 3:32
  • $\begingroup$ And see this related answer with more details on zero padding: dsp.stackexchange.com/a/93571/21048. You can use it to easily determine the fractional spacing of a single tone very accurately! $\endgroup$ Apr 17 at 7:55

Your Answer

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

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