I have a signal X(n) of length 24. But I want to find 1024 point FFT of this signal. I can do this by padding 1000 0s in x(n). But this requires huge memory which actually will be having only 24 valid data points.

Is there any way I can avoid this extra padding and yet be able to perform FFT. To be very specifica I am using CUFFT for finding FFT on the GPU. The padding 1000 0s means I have to allocate this extra memory on the GPU and also do copying operations from GPU to CPU and CPU to GPU etc.

Any hint?

  • $\begingroup$ What is the reason for doing a 1024 point FFT on only 24 points ? Why not just use a smaller FFT, e.g. 32 or 64 points ? Are you using this for interpolation or something like that ? $\endgroup$ – Paul R Jan 24 '13 at 15:12

From a programming point of view I don't see any possibility of avoiding the copy operation for 1024 values because the CUFFT library expects a pointer to an array containing NX (FFT size) values. If you don't initialize all of them, the result of the FFT operation will be random.

From a DSP point of view you could easily use a 32- or even 24-FFT without loosing information. Zeropadding in time domain corresponds to an interpolation in frequency domain, where the interpolated frequency bins can be different from the actual spectrum. You should check if you really need the frequency resolution of a 1024-FFT.


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.