% script pour générer les figures du slide 3
% Frederic Sur - 2015
% approximation d'un signal discret

clear all, close all

% signal Y sur la période [0,1]:
X=[0:0.01:0.99];
Y=zeros(size(X));
Y(1:10)=0:9;
Y(11:20)=9:-1:0;
Y(21:80)=10*sin(2*pi*2*(0:59)/60);
Y(81:100)=(0:19)/2;

% sur 4 périodes:
XX=[-2:.01:1.99];
YY=[Y Y Y Y];

% taille de l'écran
scrsz = get(groot,'ScreenSize');

% signal original
figure('Position',[1 scrsz(4)/2 2*scrsz(3)/3 scrsz(4)/2])
plot(XX,YY,'b','LineWidth',2)
title('signal périodique original')
grid on
axis([-2 2 -10.1 10.1])

% transformée de Fourier de Y:
fftY=fft(Y);

% on ne garde que trois coefficients
% (moyenne + une sinusoïde)
fftY1=fftY;
fftY1(3:end-1)=0;
Y1=ifft(fftY1);
YY1=[Y1 Y1 Y1 Y1];
figure('Position',[1 scrsz(4)/2 2*scrsz(3)/3 scrsz(4)/2])
plot(XX,YY,'b','LineWidth',2)
hold on
plot(XX,YY1,'r--','LineWidth',2)
grid on
title('reconstruction avec 1 sinusoïde')
axis([-2 2 -10.1 10.1])

% superposition de deux sinusoïdes
fftY2=fftY;
fftY2(4:end-2)=0;
Y2=ifft(fftY2);
YY2=[Y2 Y2 Y2 Y2];
figure('Position',[1 scrsz(4)/2 2*scrsz(3)/3 scrsz(4)/2])
plot(XX,YY,'b','LineWidth',2)
hold on
plot(XX,YY2,'r--','LineWidth',2)
grid on
title('reconstruction avec 2 sinusoïdes')
axis([-2 2 -10.1 10.1])

% superposition de cinq sinusoïdes
fftY5=fftY;
fftY5(7:end-5)=0;
Y5=ifft(fftY5);
YY5=[Y5 Y5 Y5 Y5];
figure('Position',[1 scrsz(4)/2 2*scrsz(3)/3 scrsz(4)/2])
plot(XX,YY,'b','LineWidth',2)
hold on
plot(XX,YY5,'r--','LineWidth',2)
grid on
title('reconstruction avec 5 sinusoïdes')
axis([-2 2 -10.1 10.1])

% superposition de dix sinusoïdes
fftY10=fftY;
fftY10(12:end-10)=0;
Y10=ifft(fftY10);
YY10=[Y10 Y10 Y10 Y10];
figure('Position',[1 scrsz(4)/2 2*scrsz(3)/3 scrsz(4)/2])
plot(XX,YY,'b','LineWidth',2)
hold on
plot(XX,YY10,'r--','LineWidth',2)
grid on
title('reconstruction avec 10 sinusoïdes')
axis([-2 2 -10.1 10.1])

% superposition de vingt sinusoïdes
fftY20=fftY;
fftY20(22:end-20)=0;
Y20=ifft(fftY20);
YY20=[Y20 Y20 Y20 Y20];
figure('Position',[1 scrsz(4)/2 2*scrsz(3)/3 scrsz(4)/2])
plot(XX,YY,'b','LineWidth',2)
hold on
plot(XX,YY20,'r--','LineWidth',2)
grid on
title('reconstruction avec 20 sinusoïdes')
axis([-2 2 -10.1 10.1])
