Azzera filtri
Azzera filtri

Interpolation in time-domain vs frequnecy domain

7 visualizzazioni (ultimi 30 giorni)
Rene Riha
Rene Riha il 11 Feb 2018
Modificato: Rene Riha il 11 Feb 2018
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.

Risposte (1)

Image Analyst
Image Analyst il 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 Commento
Rene Riha
Rene Riha il 11 Feb 2018
Modificato: Rene Riha il 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.

Accedi per commentare.

Categorie

Scopri di più su Fourier Analysis and Filtering in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by