Clear Filters
Clear Filters

Interpolation in time-domain vs frequnecy domain

7 views (last 30 days)
Hello, could you tell me or explain where is the difference between fft and ifft code when I use fft(x, n) with zero-padding to index n to interpolate frequency domain, but to interpolate time-domain I have to use ifft(ifftshift(padarray((fftshift(X)), [0 n/2]))) (with n/2 zeros on both sides of vector) to get right results? Why ifft(X, n) is not working? Thanks for your answers.

Answers (1)

Image Analyst
Image Analyst on 11 Feb 2018
You don't have to. You don't have to use padarray and fftshift at all. Just doing a round trip of fft() and ifft() should get you the original vector x. Shifting is only needed if you want to visualize the zero frequency at the middle of your vector instead of at the first element. If you want, you could keep a separate copy, X_shifted, just for display but do all your computations on the original X.
  1 Comment
Rene Riha
Rene Riha on 11 Feb 2018
Edited: Rene Riha on 11 Feb 2018
But I was interesting rather in interpolation problem. When I use command ifft(X, n) I get this obviously wrong result.
But when I write ifft(ifftshift(padarray((fftshift(X)), [0 n/2]))) the results are what I would expect (a sinusoid).
The principal idea is why I can't pad with n zeros before ifft operation at the end of array as in fft, but I have to pad with n/2 zeros at the both ends after fftshift, again ifftshift padded array and finally perform ifft operation.

Sign in to comment.

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!