TP - Traitement Du Signal - SMP6 2022-2023
TP - Traitement Du Signal - SMP6 2022-2023
TP - Traitement Du Signal - SMP6 2022-2023
Traitement du signal
------------------------------
L
F
:
S
M
P
6
Filière : Sciences de la Matière Physique (SMP)
Parcours Electronique
Semestre : S6
Faculté des Sciences Appliquées, Route Nationale N°10 cite d’Azrou à côté de l'institut Agronomique et Vétérinaire
Hassan II Ait Melloul, Site web : cuam.uiz.ac.ma
Introduction à Matlab………………………………………………………….3
TP1 :
Calcul élémentaire en traitement du signal...…….…………..............20
TP2 :
Produit de convolution, Echantillonnage, Transformée de Fourier...26
TP3 :
Analyse spectrale par la TFD, Fenêtre d’observation et Filtrage…...32
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Modalités de fonctionnement
La présence aux T.P est obligatoire. Toute absence devra être valablement justifiée. Une
absence non justifiée conduira automatiquement à la note 0.
A chaque séance, un seul rapport devra être rendu pour les deux membres du binôme. Le
rapport devra être rédigé avec soin, sur une feuille double, avec nom/prénom de chaque
binôme. De plus, chaque rapport, devra comporter le numéro de la question à laquelle vous
répondez. Si ces conditions ne sont pas respectées, des points seront retirés.
2. Modalités d’évaluation :
3. Préparations théoriques :
2
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
1. Introduction à Matlab
2. Généralité
MATLAB (MATrix LABoratory) comprend de nombreuses fonctions graphiques, un système
puissant d’opérateurs s’appliquant à des matrices, des algorithmes numériques, ainsi qu’un
langage de programmation extrêmement simple à utiliser.
Matlab est un outil très efficace qui est largement utilisé pour le calcul numérique et la
visualisation graphique. Dans Matlab, les variables et les scalaires sont manipulés comme des
matrices de "n" colonnes par "m" rangées. MATLAB peut être aussi considéré comme un
langage de programmation adapté pour les problèmes scientifiques.
MATLAB est un interpréteur: les instructions sont interprétées et exécutées ligne par ligne.
MATLAB fonctionne dans plusieurs environnements tels que X-Windows, Windows,
Macintosh.
3. Principales caractéristiques
Matlab est un environnement logiciel de calcul et visualisation scientifique :
- Matlab (pour Matrix Laboratory) repose sur un langage interprété.
- La programmation est aisée car la syntaxe du langage est proche de l’écriture mathématique.
- La donnée de base est la matrice ou tableau (vecteur ou scalaire étant des cas particuliers).
- La dimension des données n’a pas besoin d’être spécifiée (ni leur type).
- L’interactivité de Matlab permet de programmer et simuler plus vite qu’en d’autre langage
comme C ou Fortran…
- Matlab est couramment utilisé dans la recherche et l’industrie.
- Les inconvénients éventuels sont la lenteur d’exécution et le coût en mémoire.
Matlab est fourni avec des Toolboxes (boîtes à outils) dédiées à des applications spécifiques :
- Ce sont des bibliothèques de fonctions (fichiers ASCII d’extension .m)
- Symbolic Math : calcul symbolique (intégrale, équation différentielle)
- Signal Processing : traitement de signal (filtrage, analyse spectrale, …)
- System Identification et Control System : automatique (identification, correcteur)
- Image Processing : traitement d’image
Le système interactif MATLAB comporte :
- Environnement de développement (fenêtres de commandes)
- Bibliothèque de fonctions mathématiques (algèbre, trigonométrie, transformées)
- Langage (contrôles de flux, fonctions, structures)
3
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
4
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Exemples d’instructions
- formation d’un vecteur-ligne t contenant des instants d’échantillonnage espacés d’une
période Te :
t=0:Te:T; %vecteur-temps échantillonné
- extraction des n premiers échantillons :
t(1:n);
- génération d’un vecteur x contenant les échantillons d’une sinusoïde :
x=A*sin(2*pi*f*t);
A, π , f étant des scalaires, x récupère la dimension de t (aucune déclaration de type ou de
dimension n’est nécessaire).
- transposition pour former le vecteur colonne correspondant :
y=x';
- formation d’une matrice M de taille 3x3 :
M=[a11 a12 a13 ; a21 a22 a23 ; a31 a32 a33];
- extraction du premier coefficient de la matrice :
coeff1=M(1,1);
3-4. Variables
On peut indiquer le nom de la variable dans laquelle le résultat doit être stocké (commence
par une lettre, moins de 19 caractères).
Attention, Matlab prend en considération les majuscules (x est différent de X).
>> x = pi/4
x = 0.7854
Le nom de cette variable ainsi que le résultat sont affichés.
Un point virgule à la fin de la ligne permet de ne pas afficher ce résultat. On peut taper
plusieurs commandes par ligne, séparées par un point virgule.
>> x = pi/2; y = sin(x);
Variables complexes
Matlab travaille indifféremment avec des nombres réels et complexes. Par défaut les variables
i et j sont initialisées à la valeur complexe. Naturellement si vous redéfinissez la variable i
ou j avec une autre valeur elle n'aura plus la même signification.
>> z = 3 + 2*i
z = 3.0000 + 2.0000i
Les fonctions usuelles de manipulation des nombres complexes sont prédéfinies dans Matlab :
real, imag, abs, angle (en radian), conj.
>> r = abs(z);
>> theta = angle(z);
>> y = r*exp(i*theta);
5
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
6
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
7
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
cumprod et sort renvoient une matrice dont chaque colonne contient les sommes et
produits cumulés et un tri des colonnes de la matrice initiale.
D’autres fonctions sont très utiles sur les matrices :
>> poly(A) % Polynôme caractéristique de A
>> det(A) % Déterminant de A
>> trace(A) % Trace de A
>> [V, D] = eig(A) % Renvoie les valeurs propres et les
vecteurs %propres de A (eigenvalues, eigenvectors)
Exemple 1:
Tapez:
>>clear
>>clc
>>test= input('S.V.P entrer un chiffre\n');
>>2
8
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
>>test=
2
>>
Exemple 2:
Tapez:
>>clear
>>clc
>>test_string= input('Entrer un mot:\n', 's');
>>Ahmed
>>test_string=
Ahmed
>>
5-3. Graphique 2D
Une courbe 2D est représenté par une série d'abscisses et une série d'ordonnées. Le logiciel
trace généralement des droites entre ces points. La fonction de MATLAB s'appelle plot.
9
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Exemple :
>> t=0:0.01e-3:0.06;
>> y=10*exp(-60*t).*cos(120*pi*t);
>> z=10*exp(-60*t).*sin(120*pi*t);
>> plot(t,y,'r',t,z,'g'),grid
>> a=10*exp(-60*t);
>> hold
Current plot held
>> plot(t,a,'b--')
>> plot(t,-a,'b--')
>> title('Fonctions sinusoidales amorties')
>> xlabel('Temps , s'),ylabel('Tension , V')
10
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
3- Titre
C'est l'instruction title à laquelle il faut fournir une chaîne de caractères. Le titre apparaît en
haut de la fenêtre graphique :
>> plot(x,cos(x),x,sin(x))
>> title('Fonctions sin et cos')
4-Labels
Il s'agit d'afficher quelque chose sous les abscisses et à coté de l'axe des ordonnées :
>> plot(x,cos(x))
>> xlabel('Abscisse')
>> ylabel('Ordonnée')
5- Légendes
Utilisation de l'instruction legend. Il faut lui communiquer autant de chaînes de caractères que
de courbes tracées à l'écran. Un cadre est alors tracé sur le graphique, qui affiche en face du
style de chaque courbe, le texte correspondant. Par exemple :
>> plot(x,cos(x),':',x,sin(x),'-.',x,sqrt(x),'--')
>> legend('cosinus','sinus','racine')
11
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Exemple :
12
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
>> subplot(221)
>> plot(x,sin(x))
>> subplot(222)
>> plot(x,cos(x),x,sin(x),'-.')
>> subplot(223)
>> plot(cos(x),sin(x))
>> subplot(224)
>> plot(sin(2*x),sin(3*x))
7- Traçage de courbes
On utilise l'instruction plot pour tracer un graphique 2D:
plot(x,y) : Tracer le vecteur y en fonction du vecteur x
plot(t,x,t,y,t,z) : Tracer x(t), y(t) et z(t) sur le même graphique
plot(t,z,'r--') : Tracer z(t) en trait pointillé rouge
8- Format de graphique
On peut choisir le format du graphique:
plot(x,y) : Tracer y(x) avec échelles linéaires
semilogx(f,A) : Tracer A(f) avec échelle log(f)
semilogy(w,B) : Tracer B(w) avec échelle log(B)
polar(theta,r) : Tracer r(theta) en coordonnées polaires
bar(x,y) : Tracer y(x) sous forme des barres
grid : Ajouter une grille
Exemple :
>> w=logspace(0,3,1000);
>> s=j*w;
>> H=225./(s.*s+3*s+225);
>> AdB=20*log10(abs(H));
>> phase=angle(H)*(180/pi);
>> subplot(2,1,1),semilogx(w,AdB),grid
>> xlabel('w , rad/s'),ylabel('Amplitude , dB')
>> subplot(2,1,2),semilogx(w,phase),grid
>> xlabel('w , rad/s'),ylabel('Phase , degre')
13
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
6. Programmation et algorithmique
6-1. Structure conditionnelles
A) Boucles
Boucle "for"
La boucle "for" s'écrit de la manière suivante:
for index = expression
…
…
…
end
où "expression" prend généralement la forme suivante:
Début: incrémentation: fin
14
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Exemple:
>>clear
>>clc
>>for x=1:2:9
>>y=x;
>> disp(x);
>>end
Boucle "while"
Dans Matlab, la boucle "while" s’écrit de la façon suivante:
while expression
…
…
…
end
Le code dans la boucle est exécuté aussi longtemps que la condition de départ est "vrai".
Exemple:
>>clear
>>clc
>>x=1;
>>while x<10
>>x = x+1;
>>end
>>disp(x)
"if" et "if-else"
"if" et "if – else" sont utilisés pour imposer des conditions. Si la condition est respectée, alors
le code qu’elle contient est exécuté. A noter qu’il faut toujours terminer le "if" par un
"end" en Matlab.
Forme :
if "expression"
---
---
elseif "expression"
---
---
else
---
---
15
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
end
Instruction "switch"
Dans Matlab, l’instruction "switch" prend la forme suivante:
SWITCH switch_expr
CASE case_expr,
statement, ..., statement
CASE {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
OTHERWISE,
statement, ..., statement
END
Dans Matlab, il n’est pas nécessaire d’inclure le "break" à la fin de chaque case de
l’instruction "switch ". Une fois qu’une case est "vrai", l’instruction "switch " est
automatiquement terminée.
Fonctions : ifft
Description : "Inverse Fast Fourier Transform"
Dans Matlab : x = ifft(X);
16
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Exemple:
Pour trouver des échantillons de la transformée de Fourier d'un signal, il faut utiliser la
fonction "fft". Tapez dans la fenêtre de commande:
>> figure(1)
>>T=0.01;
>>Fs=1/T; % fréquence d'échantillonnage de 100 Hz
>>t = 0:T:1;
>>x = sin(2*pi*10*t); % signal fréquence de 10 Hz
>>plot(t,x)
>>title('Signal')
>>xlabel('temps (ms)')
Résultat:
>>figure(2)
>>FFT_size=2048;
>>X=fft(x,FFT_size);
>>f=(0:FFT_size/2)/(FFT_size/2)*Fs/2;
>>plot(f,abs(X(1:FFT_size/2+1))); % on voit bien que le signal est à 10 Hz
>>title('Signal en fréquence');
>>xlabel('Fréquence(Hz)');
>>ylabel('Amplitude');
17
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
7. Signaux de base
- randn : génère un bruit aléatoire normal de moyenne nulle et de variance 1. Syntaxe :
randn(size(A)) pour avoir un vecteur de nombres aléatoires de même taille que A.
- y=sin(x) : fonction sinus (qui opère élément par élément dans le cas d'une matrice). où x est
un scalaire, un vecteur ou une matrice. y recupère la même dimension que x.
- square(t,duty) : génère un signal carré de rapport cyclique variable (fait partie du toolbox
Signal Processing) où t est le vecteur-temps et duty le rapport cyclique exprimé en % de la
période où le signal est positif (par défaut : duty=50 %).
Fonctions internes
fft : Calcul de la transfomée de Fourier discrète (TFD) avec l’algorithme rapide de
FFT (Fast Fourier Transform) si le nombre de points est une puissance de 2. Sinon, le calcul
utilise un algorithme plus lent de DFT (Discrete Fourier Transform). C’est pourquoi on a
intérêt à choisir un nombre N de points qui est une puissance de 2. Syntaxe :
z=fft(x,N);
où x est le vecteur contenant les échantillons du signal, N le nombre de points sur lequel on
veut calculer la FFT et z est le vecteur de sortie (a priori complexe) récupérant les
échantillons de la TFD. Signalons que N n’est pas nécessairement égal au nombre
d’échantillons du signal. Si
N est supérieur au nombre d’échantillons de signal disponibles, le calcul de la TFD se fait
après l’ajout automatique du nombre nécessaire d’échantillons nuls en queue de signal pour
compléter les échantillons manquant et obtenir au total N points. Cet artifice de calcul, qui
s’appelle zero-padding, est intéressant pour avoir un spectre discret (TFD) (évidemment,
puisqu’on travaille sur ordinateur) qui est une approximation très fine du spectre continu
(TFDT). Typiquement, on prend N = 1024. Cela rajoute sur le spectre échantillonné d’origine
des points intermédiaires qui réalisent une interpolation en sinus cardinal (donc exacte) entre
les points originels, au lieu de l’interpolation linéaire (donc fausse) faite par l’oeil. On
améliore ainsi la visualisation du spectre, mais cela n'ajoute évidemment pas d'information
utile d'un point de vue mathématique.
abs : calcul de la valeur absolue (resp. du module) des éléments d(une matrice réelle
(resp. complexe).
Fonctions externes
- sinus : génération d’une sinusoïde. Syntaxe :
[x,t] = sinus(Fe,T,f,A)
Cette fonction requiert 4 paramètres d’entrée : la fréquence d’échantillonnage Fe, la durée T
(en secondes), la fréquence f et l’amplitude A. Elle donne en sortie 2 vecteurs de même
dimension :
x contient les échantillons du signal sinusoïdal et t contient les instants d’échantillonnage.
- carre : génération d'un signal carré. Syntaxe identique à sinus.
18
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
19
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
TP1 :
Calcul élémentaire en traitement du signal
1. Introduction :
Un signal numérique est défini par un nombre d’échantillons N relevés à une fréquence
d’échantillonnage Fe. Les signaux sont toujours captés de manière temporelle, mais on
s’intéresse souvent à leur allure fréquentielle.
L’objectif de ce TP est de générer et de visualiser des signaux usuels tels que les signaux
types (sinusoïde, triangle, carré, …), puis d’effectuer leur analyse à l’aide des outils
disponibles sous Matlab et aussi l’analyse d’un signal bruité.
x(t) et X(f) sont deux descriptions équivalentes (temporelle ou fréquentielle) du même signal.
On peut définir trois spectres de x (t) :
20
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
2. Déroulement du TP
Une première séance est consacrée essentiellement à la familiarisation avec le langage de
programmation MATLAB (voir annexe) et à l’étude de différentes commandes ou fonctions
utiles en traitement du signal.
Vous devez tout d’abord effectuer un travail préparatoire qui consiste à calculer le
développement en séries de Fourier puis la transformée de Fourier des signaux types
(sinusoïdal, rectangle (carré), triangle, ….) présenté dans le cours. Il est évidemment
nécessaire de lire le sujet à l’avance.
3. Les Scripts
Plutôt que de taper les commandes au clavier les unes après les autres pour effectuer une
tâche, ce qui vous oblige à refaire la même chose à chaque utilisation de cette tâche, il est
préférable de grouper les commandes dans un fichier à extension .m, ainsi tous les
programmes auront pour nom nom.m .
Exemple 1 :
Créez un fichier qui s’appelle essai1.m, qui génère un signal sinusoïdal x(t) de n points, puis
visualisez-le à l’aide de la commande plot (x).
- Etape 1 : édition du fichier par la commande :
- edit essai1.m
- Etape 2 : saisie des commandes suivantes:
%ce fichier génère et affiche une sinusoïde
n=input(‘Entrer le nombre de points du signal : ’) ;
pas=2*pi/(n-1); %le pas dépend du nombre de points sur une période 2*pi
t=0:pas:2*pi; %la variable temps est un vecteur t de taille n couvrant une
période
x=sin( ω t); %le signal x est un vecteur de même taille que le vecteur t
plot(t,x) ; %dessine à l’écran x en fonction de t
Remarques :
1- Le texte débutant par % est un commentaire de votre choix, il est ignoré par le
logiciel. Vous pouvez supprimer ces commentaires, mais ils sont utiles lorsqu’on a plusieurs
programmes.
2- Chaque instruction doit être suivie d’un point virgule.
- Etape 3 : Sauvegardez le fichier dans le répertoire en cours ;
- Etape 4 : Exécutez le programme en entrant la commande suivante
>>essai1
21
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Exemple 2 :
Générez, à l’aide d’un programme essai2.m, cos( ω t) et sin( ω t) et visualisez les deux signaux
sur une même figure, l’une en rouge et l’autre en bleu à l’aide de la fonction :
plot(t,x,’b’,t,y,’r’).
Exemple 3 :
Visualisez sur une même figure, à l’aide d’un programme essai3.m, les 4 signaux cos( ω t),
sin( ω t), log10(t) et exp(t) en utilisant la fonction :
>>subplot(2,2,1),plot(t,x);
qui divise l’écran en quatre sous figures : (2,2,1),(2,2,2),(2,2,3) et (2,2,4).
Utilitaires graphiques
- L’instruction title(‘titre de la courbe ou la figure’) ajoute un titre à la figure visualisée.
- xlabel(‘unité des abscisses’) marque l’unité de la grandeur horizontale.
- ylabel(‘unité des ordonnés’) marque l’unité de la grandeur verticale.
- grid on et grid off quadrille ou non le graphique.
22
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Ecrire le code MATLAB pour générer et représenter graphiquement les quatre signaux
suivants signaux suivants :
x1 (t ) = cos(2* π * f1 * t + P1 )
x2 (t ) = cos(2* π * f 2 * t )
x3 (t ) = cos(2* π * f 3 * t + P3 )
x4 (t ) = x1 (t ) + x2 (t ) + 2* x3 (t )
1. Générer un vecteur temps t de 100 points entre t0 = 0s et t1 = 0.1s.
2. Tracer les xi(t). Utiliser la commande subplot afin de tracer les quatre courbes les unes en
dessous des autres.
3. Multiplier les signaux.
4. Si on veut isoler des échantillons d’indices bien spécifiés, il suffit de taper x(p :q). Essayer
d’isoler une partie de votre signal.
Notion de bruit
Le bruit B(N) est défini comme étant un signal indésirable se mêlant additivement ou
autrement à un signal s(t) qui intéresse l’observateur.
Le model le plus fréquent de bruit de mesure de grandeurs physiques est le bruit blanc
gaussien : c’est un bruit aléatoire B(N) dont les échantillons sont dé-corrélés.
La fonction B=randn(1,N) permet de générer un vecteur bruit B de taille N de moyenne nulle
et d’écart type 1. Un coefficient multiplié par randn permet d’augmenter à volonté la
puissance du bruit.
Ainsi pour générer un bruit blanc de taille N, de moyenne m et d’écart type σ la commande
est :
B(N)= m+σ *randn(1,N);
Dont la puissance est P = m 2 + σ 2 (Puissance de la moyenne plus celle des fluctuations autour
de cette moyenne)
23
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
⎛P ⎞
RSB = 10 log10 ⎜ s ⎟
⎝ Pb ⎠
On distingue trois cas de figure :
- RSB positif : le signal est plus puissant que le bruit.
- RSB nul : il y a autant de bruit que de signal.
- RSB négatif : le signal est dégradé, il ya plus de bruit que d’information.
Sinusoïde bruitée
Réaliser un seul programme pour cet exemple :
1. Générer une sinusoïde x(t) de fréquence 50Hz, d’amplitude 1, échantillonnée à
2.5KHz (Te=0.4ms) et de longueur 256 points.
2. Quelle est l’énergie de x(t) ? Utilisez la définition et comparez le résultat à celui
donné par std.
3. Générer un bruit d’amplitude de votre choix et visualisez-le. Quelle est son énergie?
4. Additionner le bruit à la sinusoïde et visualisez les trois signaux simultanément.
Quel est le RSB ?( σ = 0.3 et m=0, B=0.3* randn(1,N+1))
5. Choisissez trois bruits donnant des RSB négatif, nul et positif.
- L’énergie ou la puissance d’un signal est fournie sous Matlab par le carré de la fonction std
(standard deviation ou écart-type) ce qui donne en fait la variance dans le cas du bruit ou tout
autre signal aléatoire.
24
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
2. Montrer que :
8
a0 = bn = 0 et a2 p +1 =
π (2 p + 1) 2
2
25
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
TP2 :
Produit de convolution, Echantillonnage, Transformée de Fourier
Objectif :
L’objectif de ce TP est de générer, de visualiser quelques signaux analogiques, de déterminer
leur produits de convolutions, d’échantillonner et de déterminer la Transformée de Fourier en
utilisant Matlab.
Compte rendu du TP
• Le rapport écrit contiendra l’analyse des problèmes, le cheminement utilisé pour les
résoudre, le détail des calculs des solutions théoriques /mathématiques des problèmes posés,
les figures commentées, vos remarques et explications associées à chaque manipulation de
façon à montrer si les résultats obtenus correspondent oui ou non aux résultats attendus.
• La qualité du rapport (remarques, commentaires et explications), ainsi que les codes du
programme (utilisation de fonctions/ scripts Matlab, gestion des variables) seront au cœur de
l’évaluation.
• Chaque étudiant/binôme sera responsable de la sauvegarde de ses fichiers (Rapport
écrit+programmes)
Manipulation
1. Produit de convolution de deux signaux analogiques
La réponse y(t) d’un système linéaire ; ayant pour réponse impulsionelle h(t) ; à une entrée
x(t) est une superposition de réponses impulsionelle amplifiées par des valeurs instantanées de
x(t) ; cette opération est appelée : convolution de x par h et noté « * ».
+∞ +∞
y (t ) = x(t ) ∗ h(t ) = ∫ x(τ)h(t − τ)d τ = ∫ x(t − τ)h(τ)d τ
−∞ −∞
26
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Manip1 :
Le programme Matlab suivant calcule le produit de convolution (La commande : conv) de
deux signaux rectangulaires, l’un de durée 20s et d’amplitude 2v et l’autre de durée 20s et
d’amplitude
3v.
Programme :
1./ Tester le programme ci-dessus et vérifier théoriquement le résultat obtenu.
2./ Changer le programme pour avoir le produit de convolution de deux signaux
rectangulaires non identiques.
3./ Interpréter les résultats des deux questions.
« « clear
x=zeros(100,1);
for i=41:60,x(i)=2;end;
y=zeros(100,1);
for i=41:60,y(i)=3;end;
N=100;
a=-N/2:N/2-1;
b=-N:N-2;
subplot(2,2,1);plot(a,x);axis([-50,50,0,2.5]);grid;
title('premier signal');xlabel('t');ylabel('x(t)');
subplot(2,2,2);plot(a,y);axis([-50,50,0,3.5]);grid;
title('deuxième signal');xlabel('t');ylabel('y(t)');
subplot(2,2,4);plot(b,conv(x,y));grid;
axis([-60 60 0 140]);title('convolution');xlabel('t');
Manip2 :
Soit un système linéaire invariant dans le temps de réponse impulsionnelle h(t) (figure a), et
du signal d’entrée (figure b)( pulse de largeur finie).
1./ Générer et afficher sous Matlab le signal d’entrée x(t) et la réponse impulsionnelle h(t) ;
2./ Calculer l’expression du signal de sortie y(t) ((La commande : conv) ;
3./ Afficher le résultat de la convolution et les signaux x(t) et h(t) la commande subplot.
2. Echantillonnage
Principe
27
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
x(t )
xe (t )
La période d’échantillonnage Te est l’intervalle de temps entre deux valeurs prélevées sur le
signal analogique. La fréquence d’échantillonnage f e correspond donc au nombre de valeurs
prélevées par seconde.
1
fe =
Te
L’opération d’échantillonnage consiste à remplacer un signal analogique continu dans le
temps x(t), par un autre signal à temps discret. e(t)=x[nTe], qui n’est défini que pour des
valeurs discrètes du temps, multiples entiers d’une durée Te dite période d’échantillonnage.
n =+∞
x[nTe ] = ∑ x(t ).δ(t − nT )
n =−∞
e
Manip3 :
28
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
2. Affichage du spectre
4./ Rappeler (sans démonstration) l’expression théorique de son spectre (complexe)
d’amplitude.
5./ Représenter le spectre théorique du signal sur un intervalle allant de –fe à 2fe (en
considérant que sa durée est infinie).
6./ Afficher son spectre à l’aide de la fonction fft (l’algorithme FFT, pour Fast Fourier
Transform, est un algorithme de calcul rapide de la TFD, Transformée de Fourier Discrete).
3. Sous-échantillonnage
On simule un sous-échantillonnage de ce signal modifiant la fréquence d’échantillonnage.
7./ Donner l’expression théorique du signal non-tronqué échantillonné.
29
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Manip4 :
Générer un signal x(t) de durée 0.8 secondes sinusoïdal d’amplitude 1 de fréquence f0=100
Hz échantillonné à fe=1000 Hz.
1./ Combien y a t'il d'échantillons (Ne) ?
Quelle est la longueur du vecteur s ?
2./ Représenter le module de spectre de x(t) la commande :
plot(abs(fft(s))).
4. Générer le vecteur des fréquences freq = n. fe/Ne, avec n variant de 0 à Ne-1.
5. Représenter le module de la TFD en fonction du vecteur fréquences freq : commande
plot(freq,abs(fft(s))).
6. Vérifier qu’il y a bien une raie à la fréquence du signal.
3. Transformée de Fourier
Manip5 :
Soit le signal :
−a t
x(t ) = e avec a>0
Ecrire un script Matlab pour réaliser les opérations suivantes :
1./ Tracer le signal x(t) entre –5 et 5, avec un pas de temps Te = 0.01s, et pour a = 1.
2./ Tracer le spectre en amplitude de X(f) et son spectre d’amplitude en dB :
20.log10(|fft(s,N)|),
3./ Tracer le module et la phase de la transformée de Fourier (fonctions abs et angle) :
angle(fft(s,N))
4./ Calculer la transformée de Fourier Inverse de X(f). Retrouve t’on exactement le signal de
départ x(t)?
5./ Illustrer la propriété de décalage fréquentiel de la TF en représentant le module de la TF
de :
Notes Matlab :
1. fft(X,N) est la transformée de Fourier discrète sur N points du vecteur X, complété avec des
zéros si X a moins de N points et tronqué si X a plus de N points.
30
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
3. Pour approximer la Transformée de Fourier continue X(f) d’un signal x(t), représenté
suivant un pas Te, on utilise la commande : X(f)= fftshift(Te * fft(x)) ;
31
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
TP3 :
Analyse spectrale par la TFD, Fenêtre d’observation et Filtrage
Objectif :
Dans cette séance, nous allons voir un l’application de l’analyse fréquentielle par la TFD,
l’influence de la taille de la fenêtre d’observation et le filtrage.
On présente l’opération du filtrage comme celle de la multiplication du spectre du signal par
une fenêtre censée atténuer certaines composantes fréquentielles.
32
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
⎧⎪ 2 n si 0 ≤ n ≤
N
h[n] = ⎨ 2−N2 n N
≤n≤ N
2
⎪⎩ 0 N
si
2
sin on
1- Générer une triangulaire de longueur N=50 échantillons (50 points) et de valeur max 1.
2- Calculer la TFD de la porte sur M=1000 point fréquentiels.
3- Afficher le module de la TFD puis en dB.
4- Quelle est la largeur du lobe principale ?
5- Quel est le rapport en dB entre le max du lobe principal et le max du lobe secondaire.
⎧ 0.5(1−cos(2 π Nn si 0 ≤ n ≤ N
h[n] = ⎨ 0 sin on
⎩
1- Générer une triangulaire de longueur N=50 échantillons (50 points) et de valeur max 1.
2- Calculer la TFD de la porte sur M=1000 point fréquentiels.
3- Afficher le module de la TFD puis en dB.
4- Quelle est la largeur du lobe principale ?
5- Quel est le rapport en dB entre le max du lobe principal et le max du lobe secondaire.
⎧ 0.42−0.5cos(2π Nn )+0.08cos(4π Nn ) si 0 ≤ n ≤ N
h[n] = ⎨ 0 sin on
⎩
1- Générer une triangulaire de longueur N=50 échantillons (50 points) et de valeur max 1.
2- Calculer la TFD de la porte sur M=1000 point fréquentiels.
3- Afficher le module de la TFD puis en dB.
4- Quelle est la largeur du lobe principale ?
5- Quel est le rapport en dB entre le max du lobe principal et le max du lobe secondaire.
33
Pr. Mostafa LAABOUBI Année : 2022-2023
Licence fondamentale SMP6 : Parcours Electronique Travaux Pratiques
Faire changer la taille de la fenêtre d’observation (128, 256, 512,…), observer l’influence sur
l’allure du spectre, notamment au niveau des lobes secondaires et la largeur du lobe principal.
Pour cela comparer les effets sur les spectres en dB.
Manip5 : Filtrage
De nombreuses fenêtres de pondération ont été proposées pour l’analyse spectrale. Ces
fenêtres sont utilisées pour limiter (tronquer) la durée temporelle due signal x(t) à analyser.
En notant x(t) le signal. F(t) la fenêtre d’analyse et xtr(t) le signal tronqué, on obtient la
relation suivante :
xtr (t ) = x(t ).F (t )
Soit le signal x(t) défini par :
x(t ) = a cos(2πf 0t ) + b cos(2πf1t ) ,
1- Générer le signal x(t) échantillonné à 1 KHz de 1024points, constitué 2 sinusoïdes
d’amplitude 1 et de fréquences respectivement 100 Hz et 110 Hz.
2- Choisir la fenêtre et la taille (N= 50, …) pour tronquer le signal x(t) et afficher le signal
tronqué xtr(t) (figure ci-dessous).
34
Pr. Mostafa LAABOUBI Année : 2022-2023