Académique Documents
Professionnel Documents
Culture Documents
COMPTE RENDU
Traitement du Signal Analogique
Introduction :
Le traitement du signal, en tant que discipline essentielle de l'ingénierie, repose sur l'art de
comprendre, analyser et manipuler des signaux pour extraire des informations précieuses. Que ce
soit dans le domaine des communications, du traitement d'image, de la médecine ou d'autres
secteurs, le traitement du signal offre des outils puissants pour interpréter les données qui nous
entourent. Ce domaine s'appuie sur des techniques sophistiquées permettant de décomposer, filtrer
et interpréter des signaux, qu'ils soient analogiques ou numériques.
Au cœur du traitement du signal se trouve la capacité à transformer des informations complexes en
des formes plus compréhensibles, facilitant ainsi la prise de décision, la détection de modèles et la
résolution de problèmes divers. Grâce à des algorithmes avancés et à des méthodes mathématiques,
le traitement du signal a évolué pour devenir un pilier fondamental de nombreuses technologies
modernes.
la courbe :
Tracé du spectre :
Dans le domaine fréquentiel, la fréquence doit être représentée sous forme de vecteur : c'est-à-
dire le domaine fréquentiel doit également être discrétisé. En effet, MATLAB ne peut pas
calculer le contenu. La fréquence d'un signal ne se situe qu'à un nombre limité de points de
fréquence.
Pouvoir passer du domaine temporel au domaine fréquentiel, Les deux vecteurs sont identiques
en temps et en fréquence. Le vecteur fréquence est déclaré ainsi :
Après avoir défini le domaine temporel et le domaine fréquentiel, nous pouvons calculer la
transformée de Fourier, utilisez la fonction MATLAB fft. Cette fonction permet de calculer la
transformée de Fourier discrète signaux « discrets » : c'est pourquoi nous avons discrétisé le
domaine auparavant le temps et la fréquence.
On peut alors calculer la transformée de Fourier du signal sinusoïdal :
Script :
Fe=100 ;
Te=1/Fe ;
t=0 :Te :1 ;
f=linspace(-Fe/2, Fe/2, length(t));
x=sin(2*pi*10*t) ;
X=fftshift(fft(x)*Te) ;
plot(f,abs(X));grid;
xlabel('f');
ylabel('Spectre X(f)');
L'instruction fftshift transforme la sortie de fft pour remplacer les fréquences négatives avant
fréquence positive. Il faut aussi multiplier par Te pour considérer l'échantillonnage est effectué
dans les domaines temporel et fréquentiel.
la courbe :
2.2. MANIPULATION:
Exercise 1 :
On considère les quatres signaux suivants :
- x1(t) = cos (2πf1t+1)
- x2(t) = cos (2πf2t)
- x3(t) = cos (2πf3t+3)
- x4(t) = x1(t) + 3x2(t) + 2x3(t)
Avec :
- f1 = 40 Hz; 1 = π/4,
- f2 = 105 Hz;
- f3 = 125 Hz; 3 = π/3.
t=0: Te: T;
T=0.1;
Te=T/100;
t=0:Te:T;
f1=40;
f2=105;
f3=125;
x1=cos(2*pi*f1*t+pi/4);subplot(4,2,1);plot(t,x1);grid;xlabel('t');ylabel('x1(t)');
x2=cos(2*pi*f2*t);subplot(4,2,3);plot(t,x2);grid;xlabel('t');ylabel('x2(t)');
x3=cos(2*pi*f3*t+pi/3);subplot(4,2,5);plot(t,x3);grid;xlabel('t');ylabel('x3(t)');
x4=x1+3*x2+2*x3;subplot(4,2,7);plot(t,x4);grid;xlabel('t');ylabel('x3(t)');
La courbe :
On observe que le signal x4 exhibe des caractéristiques quasi-périodiques du fait de sa
composition résultant de la somme des signaux x1, x2 et x3
3. Calculer la transformée de Fourier (fonction fft ) de chaque signal et représenter le spectre
d’amplitude entre 0 Hz et 1000Hz . Utiliser la commande subplot afin de tracer chacun des
spectres à côté du signal temporel correspondant.
Script :
La courbe :
4- A l’aide de la commande fftshift, représenter le spectre entre -500 Hz et 500 Hz :
Script :
La courbe :
Exercice 2 :
Soit le signal 𝑧(𝑡) = 𝑒 −𝑎|𝑡| avec a > 0 Ecrire un code Matlab commenté pour réaliser les
opérations suivantes :
1. Tracer le signal z(t) entre –5 et 5s, avec un pas de temps Te = 0.01s, et a = 1 :
Script :
La courbe :
La courbe :
On peut bien remarquer que cette courbe est identique à celle du signal de départ
z(t) .
5. Tracer le spectre d’amplitude de 𝑧(𝑡). 𝑒 𝑗2𝜋𝑓0𝑡 qui illustre la propriété de
décalage fréquentiel de Z(f), avec f0=5 Hz :
Script :
La courbe :
Le résultat obtenu :
Exercices 3 : Spectres de signaux périodiques
1. Générer un signal carré de durée 1.5 secondes et de fréquence de 180 Hz avec un
pas temporel de 1/10.000 :
Script :
La courbe :
On remarque que le spectre du signal carré s’annule toute les n*f, avec n est un
nombre pair et que à partir de n=9 les harmoniques son négligeables.
3. Tracer l’évolution temporelle sur 0.2 secondes seulement des deux signaux
générés (utiliser les fonctions square et sawtooth qui se déclarent de la même
manière que les fonctions sin) :
Script :
La courbe :
3 resumer :
La bande fréquentielle occupé par un signal triangulaire de fréquence f0 est plus
étroite que la bande fréquentielle d’un signal carré de même fréquence f0.
L'impulsion rectangulaire a un spectre en forme de sinc, qui décroît lentement à
mesure que la fréquence augmente et est nul en dehors d'une bande limitée. Les
impulsions rectangulaires ont donc une large bande de fréquences, ce qui les rend
plus adaptées pour la transmission de signaux à large bande.
TP N0 2 : Systèmes Linéaires Continus Filtrage
Analogique.
But du TP :
L’objectif de ce travail pratique est de mettre en application les connaissances
acquises sur la Transformée de Fourier et le filtrage. Nous verrons, grâce à
Matlab, les différences existantes entre le filtrage idéal (Partie1) utilisé en
théorie et le filtrage réel (Partie 2 ) appliqué dans divers domaines tels que la
télécommunication, l’électronique, l’automatique…
%2%transformée de Fourier
f=linspace(-Fe/2, Fe/2,length(t));
X=fftshift(fft(x)*Te) ;
subplot(1,2,1);
plot(t,x);
axis([-5 5 0 1.2]) ;
xlabel('t');
ylabel('x');
title('x '); grid;
subplot(1,2,2);
plot(f,abs(X));
axis([-1 1 0 5.2]) ;
xlabel('f');
ylabel('X'); title('X ');grid
Remarque :
Dans un premier temps nous avons le signal rectangulaire dans le domaine
temporel, grâce aux fonctions fft et fftshift (qui réalisent la transformée de
fourrieren bilatéral), nous avons pu obtenir son équivalent dans le domaine
fréquentiel, ( le spectre), il s’agit de la fonction sinus cardinal en valeur absolue.
T=5;
Te= 40/4000;
t=-20:Te:20;
fc=2/T;
x=(((-T/2)<=t)&(t<=(T/2)));
figure(1)
grid
axis([-5 5 -0.05 1.05]) ;
f=linspace(-Fe/2,Fe/2,length(t));
X=fftshift(fft(x)*Te);
axis([-1 1 -0 6])
grid
H=((-fc<=f)&(f<=fc));
plot(f,H);
axis([-4 4 -0 1.5])
axis([-4 4 -0 1.5]);
T=5;
Te= 40/4000;
t=-20:Te:20;
fc=2/T;
Fe=1/Te;
x=(((-T/2)<=t)&(t<=(T/2)));
figure(1)
f=linspace(-Fe/2,Fe/2,length(t));
X=fftshift(fft(x)*Te);
subplot(3,1,1)
plot(f,abs(X));
title('TF[Rect(t)]') ;
xlabel('fréquence f') ;
ylabel('Amplitude du signal') ;
axis([-1 1 -0 6])
grid
H=((-fc<=f)&(f<=fc));
subplot(3,1,2)
plot(f,H);
axis([-1 1 -0 2])
title('H(f)') ;
xlabel('fréquence f') ;
ylabel('Amplitude') ;
Y=H.*X;
subplot(3,1,3) plot(f,abs(Y));
axis([-1 1 -0 6])
title('Y(f)') ; xlabel('fréquence f') ;
ylabel('Amplitude') ;
Fe=1/Te;
x=(((-T/2)<=t)&(t<=(T/2)));
figure(1)
subplot(3,2,1)
plot(t, x,'r' )
grid
axis([-5 5 -0.05 1.05]) ;
title('Rect(t)') ;
xlabel('Temps t') ; ylabel('Amplitude') ;
f=linspace(-Fe/2,Fe/2,length(t));
X=fftshift(fft(x)*Te);
subplot(3,2,2)
plot(f,abs(X));
title('TF[Rect(t)]') ;
xlabel('fréquence f') ;
ylabel('Amplitude du signal') ;
axis([-1 1 -0 6]);grid
H=((-fc<=f)&(f<=fc));
subplot(3,2,4)
plot(f,H);
axis([-1 1 -0 2])
title('H(f)') ;
xlabel('fréquence f') ;
ylabel('Amplitude') ;
Y=H.*X;
subplot(3,2,6)
plot(f,abs(Y));
axis([-1 1 -0 6])
title('Y(f)') ;
xlabel('fréquence f') ;
ylabel('Amplitude') ;
y=ifft(Y*Fe);
subplot(3,2,5)
plot(t,abs(y));
axis([-5 5 -0 1.5])
title('TFinv[Y(f)]') ;
xlabel('temps t') ;
ylabel('Amplitude') ;
On remarque qu’après filtrage dans le domaine fréquentiel, une partie de
l’information (du signal) est perdue, c’est la raison pour laquelle on a pas
retrouvé le signal de départ.
7/ On cherche à observer l’effet de la valeur de la fréquence de coupure fc sur le
signal desortie du filtre. Pour cela on tracera y(t) pour des valeurs croissantes de
la fréquence de coupure : 2/T, 1Hz,5Hz, 15Hz, 50Hz.
Programme en Matlab :
T=5;
Te=40/40
00;
Fe=1/Te;
t=-20:Te:20;
x=(((-T/2)<=t)&(t<=(T/2)));
%transformée de Fourier
f=linspace(-Fe/2, Fe/2,length(t));
%Xf=fftshift(fft(x)*Te) ;
fc=[2/T,1,5,15,50]; %La fréquence de coupure prendrarespectivement les valeurs 2/T,
1Hz,5Hz, 15Hz, 50Hz
figure(6)
for k=1:5 %Boucle nous permettant de calculer et tracer y(t)
en fonction de fc
Hf=((-fc(k)<=f)&(f<=fc(k))); Yf=Xf.*Hf ;
Xf=fftshift(fft(x)*Te) ;
yt=abs(ifft(Yf)/Te); subplot(5,1,k) ; plot(t,yt); grid
axis([-10 10 -0.05 1.5])
if (k==1)
title('Représentation du signal d''entrée x(t) après un filtrage passe-bas idéalh(t) : y(t) =h(t) *
x(t)')
end
xlabel('Temps t')
ylabel('Amplitude') %|=> définition des axes
switch k %|
case 1, legend('fc = 2/T Hz') %|
case 2, legend('fc = 1 Hz') %|
case 3, legend('fc = 5 Hz') %|=> Affichage de la légende en fonction de k
case 4, legend('fc = 15 Hz') %| en fonction de fc)
case 5, legend('fc = 50 Hz')
end
end
On remarque que, plus la fréquence de coupure fc est grande, plus nous nous
retrouvons plus proche du signal de départ, ce qui est logique, car plus la
fréquencede coupure est grande plus nous gardons une grande partie de
l’information (du signal), autrement dit, plus la porte est grande, moins on rejette
de l’information et plus nous nous rapprochant du signal d’origine.
Conclusion :
On a bien trouvé que les spectres obtenus par Matlab correspondent à ceux
obtenus théoriquement. De plus on a constaté que le résultat d’un filtrage de
signal est le produit d’une convolution temporelle et une multiplication
fréquentielle. L’analyse spectrale est une méthode très importante dans la
compréhension et l'étude des signaux, puisqu’ elle offre plusieurs
techniques pour décrire ces signaux dans le domaine fréquentiel.
TP3: Convolution ET Corrélation
Objectif de TP :
Dans ce TP, on se propose d'aborder les notions de corrélation et de convolution
afin de bien les appréhender et les différencier, et illustrer le théorème de
Plancherel. Le but aussi est de connaitre l’utilité de la fonction d’intercorrélation
dans la détection d’un signal utile noyé dans du bruit.
Convolution et Corrélation:
Soit le signal x( t )= rect ( t )
1- Le produit de convolution z(t )= x( t )*x( t )
Script :
la courbe :
1-2 Calculer l’intercorrélation Cxx du signal x(t) :
Script :
la courbe :
Interprétation
On remarque que la convolution de deux signaux rectangulaires identiques et
intercorrélation sont les mêmes.
3- En utilisant le programme du produit de convolution ci-dessus, écrire un
programme Matlab qui calcule et trace l’inter-corrélation (commande xcorr) de
deux signaux rectangulaires, un de largeur 20s et d’amplitude 2 v et l’autre de
largeur 40s et d’amplitude 3v. Vérifier théoriquement le résultat obtenu :
Script :
la courbe :
5- A l’aide des fonctions xcorr et conv de Matlab, tracer sur le même graphique le
produit de convolution z(t) = x(t) x(t) et la fonction d’intercorrélation Cxx.
Retrouve t'on bien les résultats théoriques?
Script :
La courbe:
Théorème de Plancherel: