Bonsoir,
je ne sais pas si je suis sur le bon forum comme ça concerne les transformées de Fourier ...
je rencontre un problème sous Matlab à propos des FFT. Je calcule d'abord la FFT d'un signal simple ( y=cos(2*pi*f_signal*t) puis la transformée inverse pour essayer de retrouver le signal initial.
Je précise que pour avoir une meilleure précision, je fais du "zero padding" en rajoutant 100 points de plus au signal de départ avant d'effectuer la première FFT.
Voici le code :
J'essaie de voir l'effet produit par la fonction "fftshift" (qui centre le spectre obtenu autour de la fréquence 0) avant d'effectuer la transformée inverse.Code:% Frequency input signal and time vector f_signal=10; nb_points = 100; f_sampling=nb_points*f_signal; step_time=1/f_sampling; t=linspace(0,1/f_signal,nb_points); %% Original signal with 100 points y=cos(2*pi*f_signal*t); %% Adding 100 more points for y n_zero_padding=100; y_f=padarray(y,[0 n_zero_padding],'post'); %% No zero padding %y_f=y; % Plot Input Signal figure(1); plot(y); title('Input Signal'); % Perform Forward FFT z=real(fft(y_f)); % Center FFT z_centered=fftshift(z); figure(2); plot(z_centered); title('FFT centrered with zero padding'); % Without centering figure(3); plot(z); title('FFT with zero padding'); % Perform Inverse FFT z_inv=ifft(z); figure(4); plot(z_inv); title('Inverse FFT with zero padding'); % Inverse FFT with centered spectrum z_inv_centered=ifft(z_centered); figure(5); plot(z_inv_centered); title('Inverse FFT centered with zero padding');
Je m'aperçois malheureusement qu'en utilisant cette fonction, je ne retrouve pas le signal original.
Voici la figure représentant le spectre sans utiliser "fftshift" :
*** Image sur un hébergeur externe : merci de respecter les règles de ce forum ***
On distingue bien les 2 diracs convolués en 0 et f_sampling.
ici la figure représentant le spectre avec "fftshif" :
*** Image sur un hébergeur externe : merci de respecter les règles de ce forum ***
Maintenant la FFT inverse du spectre obtenu sans "fftshift" :
*** Image sur un hébergeur externe : merci de respecter les règles de ce forum ***
On retrouve bien le signal de départ.
Maintenant, la FFT inverse du spectre obtenu avec "fftshift" :
*** Image sur un hébergeur externe : merci de respecter les règles de ce forum ***
Je ne comprends pas pourquoi cette FFT inverse ne donne pas le signal de départ ?
Le spectre obtenu avec fftshift représente bien pourtant la Transformée de Fourier d'un signal cosinusoïdal avec les 2 dirac situés en f = - f-signal et f = f_signal .
Toute aide est la bienvenue
-----