Take the 2-minute tour ×
Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. It's 100% free, no registration required.

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?

share|improve this question
    
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 ? –  Paul R Jan 24 '13 at 15:12

1 Answer 1

up vote 2 down vote accepted

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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