fft/ifft: Частота дискретизации и длина сигнала

Это частично взято из fft-документации Matlab:

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

Мне кажется, что всякий раз, когда длина сигнала кратна частоте дискретизации, синусоида восстанавливается правильно (кроме сдвиг), например здесь Fs = 30, L = 60:

enter image description here

Однако, если, например, Fs = 30, L = 80(не кратно), результат выглядит нечетный:

enter image description here

Правильно ли такое поведение?Почему так происходит и как этого избежать?Просто отбросить какую-то часть сигнала так,чтобы длина "подходила" под частоту дискретизации?

5
задан Tobold 11 June 2012 в 15:20
поделиться