This is partly taken from the Matlab fft-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
It seems to me that whenever the length of the signal is a multiple of the sampling frequency, the sinusoid is reconstructed correctly (apart from some shift), e.g. here Fs = 30, L = 60
:
However, if for example Fs = 30, L = 80
(not a multiple), the result looks odd:
Is this behaviour correct? Why is this happening and how can I avoid this? Just throw away some part of the signal such that the length "fits" the sampling frequency?