Why the time step series affect the noise in FFT results? I used Matlab to calculate a sinusoidal function:

Cy2 = 0.0226809015035037 - 0.235834694520537*sin(5.06307730580011 - 2*pi*2*t);


If I choose a set of Matlab generated data:

dt=5.305164999999997e-04;
t=[dt1:dt1:245];


Then conduct FFT on y(t), I have a nice and clean result (black line):


However, if I use my experimental data's time steps 't_exp' (download here)

t=t_exp %t_exp is the time steps corresponding my experimental data 


I get much more noisy data (black line):



I just wonder how come the extra noise while the function is exactly the same, and only a different time step series are chosen.

Conversely, I got noisy experimental data with such time step series (t_exp). Is it possible to make it cleaner by modifying the time step series? I almost mis-interpreted my exp data due to the noise.

Appreciate any help.

==========================

Appendix:
my code to do FFT:

function [f, P1]=fftzp2(t,y)
zpf=1;
%zpf=2;
L=length(t);
dt=t(20)-t(19);
Fs = 1/dt;
Y = fft(y,zpf*L);
%Y = fft(y,L);
P2 = abs(Y/L);
P1 = P2(1:ceil(L/2)+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:ceil(L/2))/(zpf*L);
%% energy conservation check
Ent=sum(y.^2)*dt;
df = Fs/L; 
Enf=sum(abs(Y*dt).^2)*df;
if Ent-Enf&gt;1e-9; disp('energy not conserved'); pause;end
end
Just use MATLAB's interp1 function before FFT