Académique Documents
Professionnel Documents
Culture Documents
Ce TP a pour but d’aborder les notions de corrélation et de convolution afin de bien les
comprendre et les différencier.
MANIPULATION 1 :
clear all ;
t=-5:0.1:5
for i=1 : length(t)
if t(i)>-2 & t(i)<2
u(i)=ones
else
u(i)=zeros(1)
end
end
figure (1)
plot(t,u);
axis ([-5 5 -0.041.2]);
title('u(t)');
xlabel('t');
le programme qui calculer le produit de convolution à l'aide de la fonction conv de MATLAB :
a. Deux signaux rectangulaires identiques (Rect (t/4))
clear all;
t=-5 :0.1 :5
for i=1 :length (t)
if t(i)<-2
u(i) = zeros(1)
elseif t(i)<2
u(i)=ones
else
u(i)=zeros(1)
end
end
m=conv(u,u)
figure (2)
plot(m)
figure(1)
plot(t,u) ;
axis([-5 5 -0.04 1.2]);
title('u(t)');
xlabel('t') ;
ylabel('Amplitude');
le produit de convolution de deux signaux
rectangulaires nous donne un signal triangulaire.
b. Deux signaux rectangulaires, l’un de durée 4s et amplitude 1V et l’autre de durée 7s et d’amplitude 1V.
clear all;
t=-5 :0.1 :5
for i=1 :length (t)
if t(i)<-2
u(i) = zeros(1)
elseif t(i)<2
U(i)=ones
else
u(i)=zeros(1)
end
if t(i)<-3.5
v(i) = zeros(1)
elseif t(i)<3.5
v(i)=ones
else
v(i)=zeros(1)
end
end
m=conv(u,v)
figure (3)
plot(m)
figure (2)
plot(t,v)
figure(1)
plot(t,u) ;
axis([-5 5 -0.04 1.2]) ;
title('u(t)');
xlabel('t') ;
ylabel('Amplitude');
• Vérifier théoriquement les résultats obtenus.
d. Calcule de la corrélation de deux signaux à l'aide de la fonction xcorr de matlab.
les deux résultats convolution et corrélation sur un même graphique.
clear all ;
t=-5 :0.1 :5
for i=1 :length (t)
if t(i)<-2
u(i) = zeros(1)
elseif t(i)<2
u(i)=ones
else
u(i)=zeros(1)
end
if t(i)<-3.5
v(i) = zeros(1)
elseif t(i)<3.5
v(i)=ones
else
v(i)=zeros(1)
end
end
m=conv(u,v)
figure (3)
plot(m)
figure (2)
plot(t,v)
figure(1)
plot(t,u) ;
axis([-5 5 -0.04 1.2]) ;
title('u(t)'); Nous notons;il n’y a eu aucun chengement dans le
xlabel('t') ; signal car le signal est pair et reel
ylabel('Amplitude’);
• Retrouve t'on bien les résultats théoriques ?
e
MANIPULATION 2 :
Le programme Matlab qui calcule et trace l’autocorrélation (commande xcorr) de deux signaux
sinusoïdaux.
t=0:0.001:0.1
x=cos(40*pi*t)
plot(t,x);
axis([0 0.1 -1.2 1.2])
grid;
xlabel('Temps(sec)');
ylabel('Amplitude');
• calcule et trace l’autocorrélation de deux signaux sinusoïdaux.
t=0:0.001:0.1
w=2*pi*20
x=cos(w*t)
subplot(2,1,1);
plot(t,x);
xlabel('t');
ylabel('frequence');
[r,lag]=xcorr(x,x);
plot(lag,r);
grid;
• Vérificqtion théorique de le résultat obtenu :
MANIPULATION 3 :
Soient deux signaux f et g définis de la manière suivante : g(t) eat(t) a 0
Sous Matlab, déclarer ces deux signaux sur l'intervalle temporel [-1, 5] on prend a =1:
t=-1:5;
u=[zeros(1,1) 1 ones(1,5)];
g=exp(-t).*u ;
figure(1);
plot(t,g);
grid;
t=-5 :0.1 :5
for i=1 :length (t)
if t(i)<-2
f(i) = zeros(1)
elseif t(i)<2
f(i)=ones
else
f(i)=zeros(1)
end
end
figure(2);
plot(t,f);
grid;
xlabel('temps');
ylabel('amplitude');
Calcule de la corrélation et la convolution de deux signaux à l'aide des fonctions xcorr et conv de Matlab.
Afficher les deux résultats sur un même graphique.
t1 = 1;
t2 = 5;
t = -1:0.1:5;
a = 1;
u = zeros(size(t));
u(t >= t1 & t < t2) = 1;
x = exp(-a * t) .* u
y = exp(-a * (t - 1)) .* u;
correlation_result = xcorr(x, y);
convolution_result = conv(x, y, 'full')
figure;
subplot(3,1,1);
plot(t, x);
subplot(3,1,2);
plot(t, y);
subplot(3,1,3);
correlation_time = -length(x)+1:length(x)-1;
plot(correlation_time, correlation_result);
hold on;
plot(convolution_result);
title('Corrélation et convolution de x(t) et
y(t)');
xlabel('Décalage temporel');
ylabel('Corrélation / Convolution');
legend('Corrélation', 'Convolution');
grid;
• les résultats théoriques
la corrélation de deux signaux la convolution de deux signaux
• TF et Plancherel
Le théorème de Plancherel est un résultat mathématique lié à l'analyse de Fourier. Il énonce que l'intégrale de la
transformée de Fourier d'une fonction au carré est égale à l'intégrale de la fonction elle-même au carré. En
d'autres termes, il relie la norme L2 d'une fonction à celle de sa transformée de Fourier, fournissant ainsi une
équivalence entre le domaine temporel et le domaine fréquentiel.
• calcule de la transformée de Fourier de chacun des signaux, en prenant N = le nombre d'échantillons temporels des
signaux. Puis calculer la transformée de Fourier de la convolution des deux signaux, en prenant le même N.
clear all; N = length(g);
t = -1 :5; G = fft(g);
u = [zeros(1, 1) 1 ones(1, 5)]; frequencies = (0:N-1) / (t(end) - t(1));
g = exp(-t) .* u; figure(2);
figure(1); plot(frequencies, abs(G));
plot(t, g); grid;
grid;
xlabel('Frequency');
N = length(g); ylabel('Magnitude');
G = fft(g); title('FFT of g(t)');
frequencies = (0:N-1) / (t(end) - t(1)); t = -5:0.01:5;
figure(2); for i=1 :length (t)
plot(frequencies, abs(G)); if t(i)<1
grid; f(i) = zeros(1)
t = -5:0.01:5; elseif t(i)<3
for i=1 :length (t) f(i)=ones
if t(i)<1 else
f(i) = zeros(1) f(i)=zeros(1)
elseif t(i)<3 end
f(i)=ones end
else figure(3);
f(i)=zeros(1) plot(t, f);
end grid;
end N = length(f);
figure(3); F = fft(f);
plot(t, f); frequencies = (0:N-1) / (t(end) - t(1));
figure(4);
grid;
plot(frequencies, abs(F));
grid;
Représenter sur un même graphique :
- le spectre d'amplitude de la TF du produit de convolution
- le spectre d'amplitude du produit des deux TF.
Conclusion ?
clear all;
t=-1 :5
u=[zeros(1,1) 1 ones(1,5)];
g=exp(-t).*u ;
figure(1);
subplot(2,1,1)
plot(t,g);
grid;
t=-1 :0.01 :5
for i=1 :length (t)
if t(i)<1
f(i) = zeros(1)
elseif t(i)<3
f(i)=ones
else
f(i)=zeros(1)
end
end
subplot(2,1,2)
plot(t,f);
grid;
w=conv(g,f)
figure(2)
plot(w)
grid;
N = length(f);
TF = fft(f);
frequencies = (0:N-1) / (t(end) - t(1));
figure(3);
plot(frequencies, abs(TF));
grid;
• Conclusion