fft/ifft: Fréquence d'Échantillonnage et la Durée du Signal

C'est en partie pris de la fft de Matlab-documentation:

Fs = 30;                    % Sampling frequency
T = 1/Fs;                   % Sample time
L = 130;                    % Length of signal
t = (0:L-1)*T;              % Time vector

x = sin(2*pi*1*t);          % 1 Hz sinus

plot(real(ifft(abs(fft(x))))); % fft then ifft

% Fs = 30, L = 60 /90 /120 ... : ok
% Fs = 20, L = 60 /80 /100 ... : ok
% Fs = 30, L = 50 /70 /80 ... : not ok

Il me semble qu'à chaque fois que la durée du signal est un multiple de la fréquence d'échantillonnage, la sinusoïde est reconstruit correctement (en dehors de quelques maj), par exemple ici Fs = 30, L = 60:

fft/ifft: Fréquence d'Échantillonnage et la Durée du Signal

Cependant, si par exemple Fs = 30, L = 80 (pas un multiple de), le résultat a l'air bizarre:

fft/ifft: Fréquence d'Échantillonnage et la Durée du Signal

Ce comportement est-il correct? Pourquoi est-ce qui se passe et comment puis-je éviter cela? Jeter une partie du signal telles que la longueur "s'adapte" la fréquence d'échantillonnage?

OriginalL'auteur Tobold | 2012-06-11