% -------------------------
% smooth_fft.m
% Data smoothing using fft
% -------------------------
clear all;close all;
N=128;x=linspace(-N/2,N/2,N);
y = (3*sin(x)-2*cos(x)).*exp(-x.*x./10);
ran = 0.1*sin(10*x);
ybad=y+ran;
subplot(2,2,1);
plot(x,y,x,ybad);
Fybad=fft(ybad);
subplot(2,2,2);
plot(x,real(Fybad),'r-',x,imag(Fybad),'b-');
cut=20;
Fybad(N/2-cut:N/2+cut)=0; % cut away noise
%Fybad(1:N/2-cut)=0;Fybad(N/2+cut:N)=0; % cut away signal :^)
subplot(2,2,3);
plot(x,real(Fybad),'r-',x,imag(Fybad),'b-');
ysmooth=real(ifft(Fybad));
subplot(2,2,4);
%plot(x,y,x,ybad,x,ysmooth);
plot(x,y,x,ysmooth);