% Tracer le signal cr?neau pair de fr?
quence f = 1/T avec T = 1s, entre 0 et 2
avec un pas de
% T/300 par la commande square.
T=1;
f=1/T;
t=0:T/300:2;
y=square(2*pi*f*t);
figure(1);
plot(t,y)
% Tracer le signal s(t) = sin 1 4 4 4 ? ?? t + sin 3? t + sin 5? t cas o?
s1=(4/pi)*sin(1*2*pi*f*t)
figure(2);
plot(t,y,'b',t,s1,'r')
s2=s1+(4/(3*pi))*sin(3*2*pi*f*t)
figure(3)
plot(t,y,'b',t,s2,'r')
s3=s2+(4/(5*pi))*sin(5*2*pi*f*t)
figure(4)
plot(t,y,'b',t,s3,'r')
% Tracer le signal cr?neau pair par l?utilisation de la d?composition de
Fourier
% trigonom?trique, o? vous utilisez cette fois ci une boucle for (pour n = 15,
30, 100 et 500
n=input('entrer une valeur ')
S=0;
for i=1:2:n
S=S+(4/(i*pi))*sin(i*2*pi*f*t);
end
figure(5)
plot(t,y,'b',t,S,'r')
% Ecrivez un script Matlab qui vous permet de calculer les 3 premiers
coefficients de Fourier
% exponentielle du signal
A=1;
T=1;
w=2*pi/T;
syms t
for n=0:3
n
Sn=(1/T)*int(((A*t)/T)*exp(-j*n*w*t),t,0,T)
end
for n=0:3
n
an=(2/T)*int(((A*t)/T)*cos(n*w*t),t,0,T)
end
for n=0:3
n
bn=(2/T)*int(((A*t)/T)*sin(n*w*t),t,0,T)
end
% TP2 Tracer le signal s(t) entre -5 et 5 pour a = 1, avec un pas de temps Te
= 0.01s.
Te=0.01;
a=1;
t=-5:Te:5;
s=exp(-a*abs(t));
1
figure(1)
plot(t,s)
grid
% La transform?e de Fourier de s(t) est Tracez S(f) sur une autre figure
Fe=0.01;
f=-5:Fe:5;
S=(2*a)./(a^2+(2*pi*f).^2);
figure(2)
plot(f,S)
grid
% Tracer le module (en utilisant la commande abs) et la phase (en utilisant la
commande
% angle) de la TF
% %un titre
% figure(3)
% plot(f,abs(S))
% grid
% %un titre
% figure(4)
% plot(f,angle(S))
% grid
% %un titre
x1=-1/(2*Te)
x2=1/(2*Te)
N=1001
x=linspace(x1,x2,N)
ff=fft(s)
figure(3)
plot(f,ff)
grid
fx=fftshift(Te*fft(s));
f1=linspace(-1/(2*Te),1/(2*Te),length(s))
figure(4)
plot(f1,abs(fx),'r',t,S,'b')
grid
xt=ifft(fx)/Te;
figure(5)
plot(t,abs(xt),'r',t,s,'b*')
grid
%% TP3 : %% I) CONVOLUTION :
%% Q1 : Sous Matlab, cr?er une porte p comportant N = 100 ?l?ments, ouverte
pour les ?l?ments compris entre les indices 20 et 30.
p=[zeros(1,19) ones(1,11) zeros(1,70)];
%% Q2 : Cr?er une impulsion de Dirac comportant N =100 ?l?ments et dont le
premier a pour valeur 1.
dirac = [ones(1,1) zeros(1,99)];
2
%% Q3 : Tracer en utilisant la fonction conv, la convolution : p * Dirac.
p=[zeros(1,19) ones(1,11) zeros(1,70)];
dirac = [ones(1,1) zeros(1,99)];
figure(1)
subplot(3,1,1)
plot(1:100,p)
subplot(3,1,2)
plot(1:100,dirac)
resultat= conv(p,dirac);
subplot(3,1,3)
plot(1:199,resultat)
%% II) Convolution d?une porte par elle m?me :
%% Reprendre la porte d?finie pr?c?demment (L?impulsion de Dirac est ?l?ment
neutre de la convolution) et repr?senter sa convolution par elle-m?me.
resultat2 = conv(p,p);
figure(2)
plot(1:199,resultat2)
figure(3)
plot(1:100,p)
%% III) Création d’un ?cho (d?caler un signal par convolution) :
%% Q1 : Créer sous Matlab un signal ? rampe ? de N = 1000 ?l?ments tel que
rampe(i)=i /20 pour i=1:50 (i est l?indice des ?l?ments de rampe) et rampe=0
ailleurs.
i=1:50;
rampe(i) = i/20;
rampe1=[rampe zeros(1,1000-51+1)];
figure(4)
plot(1:1000,rampe1)
%% Q2 : Cr?er le signal echo de N ?l?ments, partout nul sauf pour les indices
= 200, 400, 600 et 800
%% pour lesquels on a rampe(200)=2, rampe(400)=1, rampe(600)=0.75 et
rampe(800)=0.60. Il
%% s?agit d??tudier: echo = 2.d(t-t1) + 1.d(t-t2) + 0.75.d(t-t1) + 0.60.d(t-
t2).
echo = zeros(1,1000);
close all
figure(5)
subplot(3,1,1)
plot(1:1000,rampe1)
subplot(3,1,2)
plot(1:1000,echo)
resultat3 = conv(rampe1,echo);
subplot(3,1,3)
plot(1:1999,resultat3)
3
%TP4
freqsin=100.;
Tfen=1/20;
Nech1=128;
Te1=Tfen/Nech1;
t1=Te1.*(0:1:Nech1-1)';
sinusoide1=sin(2.*pi.*freqsin.*t1);
Nech2=64;
Te2=Tfen/Nech2;
t2=Te2.*(0:1:Nech2-1)';
sinusoide2=sin(2.*pi.*freqsin.*t2);
Nech3=32;
Te3=Tfen/Nech3;
t3=Te3.*(0:1:Nech3-1)';
sinusoide3=sin(2.*pi.*freqsin.*t3);
Nech4=8;
Te4=Tfen/Nech4;
t4=Te4.*(0:1:Nech4-1)';
sinusoide4=sin(2.*pi.*freqsin.*t4);
figure(1)
subplot(2,2,1)
plot(t1,sinusoide1,'b-',t1,sinusoide1,'r.')
subplot(2,2,2)
plot(t2,sinusoide2,'b-',t2,sinusoide2,'r.')
subplot(2,2,3)
plot(t3,sinusoide3,'b-',t3,sinusoide3,'r.')
subplot(2,2,4)
plot(t4,sinusoide4,'b-',t4,sinusoide4,'r.')
%% le 3eme n'est pas correctement ?chontillonn? car il ne respecte pas le
%% theoreme de shannon
%%%%%%%%%TP5%%%%%%%%
df=1/Tfen;
Fe1=1/Te1;
f1=df.*(0:1:Nech1-1)';
Fsin1=fft(sinusoide1);
df=1/Tfen;
Fe1=1/Te1;
f1=df.*(0:1:Nech1-1)';
Fsin1=fft(sinusoide1);
df=1/Tfen;
Fe1=1/Te1;
f2=df.*(0:1:Nech2-1)';
Fsin2=fft(sinusoide2);
4
df=1/Tfen;
Fe1=1/Te1;
f3=df.*(0:1:Nech3-1)';
Fsin3=fft(sinusoide3);
df=1/Tfen;
Fe1=1/Te1;
f4=df.*(0:1:Nech4-1)';
Fsin4=fft(sinusoide4);
figure(2)
subplot(2,2,1)
plot(f1, abs(Fsin1)./Nech1, 'b-', f1,abs(Fsin1)./Nech1, 'r.' );%%plot(f1,
abs(Fsin1)/Nech1, 'b-', f1,abs(Fsin1)/Nech1, 'r.' );
subplot(2,2,2)
plot(f2, abs(Fsin2)./Nech2, 'b-', f2,abs(Fsin2)./Nech2, 'r.' );
subplot(2,2,3)
plot(f3, abs(Fsin3)./Nech3, 'b-', f3,abs(Fsin3)./Nech3, 'r.' );
subplot(2,2,4)
plot(f4, abs(Fsin4)./Nech4, 'b-', f4,abs(Fsin4)./Nech4, 'r.' );
energietemp1= sum(abs(sinusoide1).^2)
energiefreq1= sum(abs(Fsin1).^2)
energietemp2= sum(abs(sinusoide2).^2)
energiefreq2= sum(abs(Fsin2).^2)
energietemp3= sum(abs(sinusoide3).^2)
energiefreq3= sum(abs(Fsin3).^2)
energietemp4= sum(abs(sinusoide4).^2)
energiefreq4= sum(abs(Fsin4).^2)
% partie 2
G=4;
f0=25;
Tfen=1;
Nech=256;
Te=Tfen/Nech;
t=Te*(0 :1 :Nech-1);
sinam=sin(2*pi*f0*t).*exp(-(pi*G*t));
figure(1)
plot(t,sinam)
df=1/Tfen;
Fe=1/Te;
f=df.*(0:1:Nech-1);
Fsinam=fft(sinam)
Fasinam=(1/(4*pi))*[(1./(f0-f+i*(G/2)))+(1./(f0+f-i*(G/2)))]
figure(2)
% plot(f,abs(Fasinam))plot(f,abs(Fsinam)/Nech,'r',f,abs(Fasinam),'b+')
5
% partie 3
Rect1=[ones(10,1);zeros(54,1)];
Rect2=[zeros(10,1);ones(10,1);zeros(44,1)];
t=(0 :1 :63);
figure(1)
plot(t,Rect1,'r',t,Rect2,'b')
• Série de Fourier Matlab
syms x ou x = sym(‘x’) : Créer un variable symbolique.
syms f(x1,x2,x3) ou f = symfun(sym ('f(x1 ,x2,x3)'), [x1,x2,x3]) : Créer une fonction à plusieurs
variables.
syms x y z ensemble : Créer des variables symboliques qui appartiennent à un ensemble indiqué
(entiers(Z) integer, réels(R) real, rationnels(Q) rational, positif positive).
Int(f(x), x, [a b]) : Calculer l’intégrale ∫𝑎𝑏 𝑓(𝑥)𝑑𝑥.
Square(2*pi*f*t) : Fonction carré de la même période et même amplitude comme la fonction
sinus(2*pi*t).
fftshift(T0*fft(st)) : Décaler la composante de fréquence zéro vers le centre du spectre (=Transformée
de Fourier).
fft(st) : Transformée de Fourier discrète.
ifft(TF)/T0 : Transformée de Fourier discrète inverse.
hilbert(st) : Signal analytique à temps discret via la transformée de Hilbert.
%%exam Exercice 1 :
% Question 1 :
e = [ 0 2-2j 0 2+2j ]
E = fft(e)
Module = abs(E)
% Question 2 :
en = [ 1 1 1 -1 -1 -1 ]
En = fft(en)
Ek = abs (En) % ==> Les valeurs de la TFD de en (N=6) .
% Question 3 :
en = [ 1 1 1 -1 -1 -1 0 0 ]
En = fft(en)
Ek = abs (En) % ==> Les valeurs de la TFD de en (N=8, on rajoute 2 zéro-padding) .
%% Exercice 2 :
6
% Question 1 :
% numéro 1 :
dt=0.001;
% numéro 2 :
t=0:dt:2*2*pi;
% numéro 3 :
x=cos(t);
% numéro 4 :
f=fftshift(fft(x));
% numéro 5 :
N=length(f);
% numéro 6 :
n=-(N-1)/2:(N-1)/2;
% numéro 7 :
w=2*pi*n/N/dt;
% numéro 8 :
figure(1)
stem(w,real(f)./N);
%% Exercice 3 :
% Question 1 :
t=-1:0.00001:1;
x1=rectpuls(t); % la commande
figure(2)
plot(t,x1);
% Question 2 :
x = [ 1 0 0 0]
y = [ 1 1 0 0]
z = conv(x,y)
%% Exercice 4 :
Ts=1/8;
fs=8;
Ta=5;
t=0:0.01:Ta-Ts;
s=t.^2.*exp(-3.*t)% pour le tracage de s(t)
figure(2)
plot(t,s)
kTs=0:Ts:Ta-Ts;
N=length(kTs)%pour savoir la longeur du vecteur kTs
skTs=((kTs).^2).*exp(-3.*kTs)
figure(3)
stem(kTs,skTs)%pour le tracage de l'echantillon de s(t)