Вы находитесь на странице: 1из 36

This document contains text automatically extracted from a PDF or image file.

Formatting may have


been lost and not all text may have been recognized.
To remove this note, right-click and select "Delete table".
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
TABLE DES MATIERES
_____________________________________________________________________________________________
________
TP I INITIATION au logiciel MATLAB 03
Manipulation des variables
Programmation : Les scripts, les fonctions
Partie théorique
_____________________________________________________________________________________________
________
TP II NOTIONS de SIGNAL NUMERIQUE 09
Convolution
Signaux harmoniques
Bruit : Rapport signal sur bruit
Partie théorique
_____________________________________________________________________________________________
________
TP III TRANSFORMEE de FOURIER discrète 13
Echantillonnage
Repliement du spectre
TFD
Partie théorique
_____________________________________________________________________________________________
________
TP IV CALCUL et ANALYSE SPECTRALE 16
Analyse par TFD
Fenêtres d’analyse
Résolution fréquentielle
Analyse par autocorrélation
Partie théorique
_____________________________________________________________________________________________
________
TP V NOTIONS de TRAITEMENTS AUDIO 19
Le système acoustique humain
Qualité des données audio
Le son sous matlab
_____________________________________________________________________________________________
________
TP VI MODULATIONS NUMERIQUES 24
Modulations analogiques (amplitude-phase)
Modulations numériques (QAM-PSK)
Partie théorique
_____________________________________________________________________________________________
________
1
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
_____________________________________________________________________________________________
________
TP VII ESTIMATION et DETECTION 27
Estimation des deux premiers moments
Détection par moyennage
Détection par intercorrélation
Partie théorique
_____________________________________________________________________________________________
________
TP VIII FILTRAGE NUMERIQUE 29
Analyse de filtres
Synthèse de filtres
Filtrage d’harmoniques
Réduction de bruit
Partie théorique
_____________________________________________________________________________________________
________
TP IX NOTIONS de TRAITEMENT d’IMAGES 32
Lecture et écriture d’une image
Opérations sur les images
Filtrage d’une image
Seuillage d’une image
Détection de contours
_____________________________________________________________________________________________
________
2
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
TP I INITIATION au logiciel MATLAB
_____________________________________________________________________________________________
________
Ce TP a pour but d’apprendre à utiliser le logiciel Matlab afin de pouvoir développer
des applications simples en traitement du signal.
Entrer d’abord la commande diary(‘initiation’) pour garder les traces de votre
travail ; à la fin de la séance entrer la commande diary() ;
I- Manipulation des variables
On distingue les variables scalaires et les variables vectorielles (matricielles en
général).
1- Variables scalaires
Dans un premier temps on génère trois variables scalaires a, b et c de la manière
suivante :
>> a=2 ;
>> b=3;
>> c=4 ;
On peut consulter la valeur d’une variable en entrant son nom :
>> a
La réponse serait :
a=
2
Cela signifie que les valeurs des variables sont mémorisées automatiquement avec
leurs noms.
2- Taille des variables dans la mémoire
La taille d’un scalaire de type « double » est 8 Bytes = 8 Octets = 64 Bits
3- Commandes de base :
• who et whos :
Affiche la taille mémoire et types de toutes les variables utilisées.
• cd :
Affiche le répertoire (directorie) où vous opérez en ce moment.
• what, dir :
Affiche la liste les noms des fichiers contenus dans le répertoire actuel.
• help nom_fonction :
Donne un descriptif de la fonction et ses arguments d’entrée sortie.
4- Opérations sur les variables
>>d=a+b+c
>>e=a+b*c
>>f=(a+b)*c
3
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
>>g=(a/b)*c
>>h=a^2
5- Les matrices et les variables vectorielles
Matlab est optimisé pour l’usage matriciel : Eviter les formulations non matricielles.
• [ a b c ] est un vecteur ligne.
• [a ;b ;c ;] est un vecteur colonne.
• V’ est le transposé du vecteur V
• u=1:5 est le vecteur [1 2 3 4 5] (de même que [1 :5] et (1 :5).
• t=0 :2 :15 est le vecteur [0 2 4 6 8 10 12 14]
• sin(t) est le vecteur [sin(0) sin(2) …sin(14)]
• zeros(1,N) est le vecteur ligne nul à N éléments.
• Ones(1,N) est le vecteur ligne à N éléments égaux à 1.
6- Opérations sur les vecteurs
§ Il faut respecter les dimensions des vecteurs et matrices.
Génération automatique d’un vecteur
V=début:pas:fin;
§ On définit une valeur de début : début
§ On définit une valeur de fin : fin
§ On définit un pas de progression linéaire ou logarithmique
(incrémentation) : pas ;
§ si le pas n’est pas spécifié, il est égal à 1 automatiquement.
>>v3=1:10
>>v4=1:-0.5:-1
>>debut=0;fin=256;pas=8;
>>v5=debut:pas:fin
>>debut=0;fin=2*pi;pas=0.1; où pi désigne le nombre 3.14…
>>v5=debut:pas:fin
Une liste des fonctions les plus courantes est disponible dans l’aide en ligne en
tapant la commande (elfun désigne elementary functions : sin, cos, log, exp…)
>>help elfun
7- Les matrices
Saisir la matrice 3x3 suivante :
a=[1 2 3 ;4 5 6 ;7 8 9]
Noter que deux lignes sont séparées par un point virgule.
Si vous entrez la commande a(:) vous obtenez le vecteur colonne [1 4 7 2 5 8 3 6 9]’.
La fonction eig donne les valeurs propres de la matrice a.
4
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
zeros(N) est la matrice nulle NxN, eye(N) est la matrice identité NxN.
II- ROGRAMMATION
1-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 name.m. Il suffit alors de
taper name pour que la tâche s’exécute.
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 : taper les commandes suivantes dans la fenêtre d’édition :
%ce fichier génère et affiche une sinusoïde
t=0:0.1:2*pi; % t est le vecteur temps avec un pas d’échantillonnage 0.1
x=sin(t); % le signal x est un vecteur de même taille que le vecteur t
plot(t,x) ;grid on % 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
2- Utilitaires graphiques
§ L’instruction title(‘titre de la courbe ou la figure’) ajoute un titre à la
figure visualisée.
§ xlabel(‘titre des abscisses’) affiche un titre horizontal suivant x.
§ ylabel(‘titre des ordonnés’) affiche un titre vertical suivant y.
§ grid on et grid off quadrille ou non le graphique.
Exemple 2 :
Générez,à l’aide d’un programme prog1.m, deux périodes des deux signaux
x(t)=cos(t) et y(t)=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’). Mettre une légende.
5
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
Exemple 3 :
Visualisez sur une même figure,à l’aide d’un programme prog2.m, les quatre
signaux cos(t), sin(t),log10(t) et exp(t) en utilisant la fonction subplot(.,.,.) qui divise
l’écran en quatre sous figures : (2,2,1),(2,2,2),(2,2,3) et (2,2,4).
>>subplot(2,2,1),plot(t,x);
Saisie d’une donnée au clavier :
Pour saisir une variable x à partir du clavier, on utilise l’instruction :
x=input(‘x=’) ;
Affichage d’un message à l’écran :
Pour afficher à l’écran un message personnel suivi d’un retour à la ligne :
fprintf(‘message personnel \n’) ;
Affichage de la valeur d’une variable :
Pour afficher à l’écran la valeur d’une variable x :
fprintf(‘x=’%d) ;
III- LES FONCTIONS
Si plusieurs de vos programmes personnels utilisent en commun une liste
d’instructions, il est préférable de regrouper ces instructions sous forme d’un
programme indépendant. A chaque besoin on appelle le dit programme par son
nom : c’est une fonction.
Une fonction possède des paramètres d’entrée et des paramètres de sortie, dont la
syntaxe de déclaration est la suivante :
function [sortie1,sortie2,…]=nom_fonction(entrée1,entrée2,…)
Le programme matlab correspondant à la fonction doit porter le même nom que la
fonction : nom_fonction.m
Exemple 1 :
Calcul de la moyenne arithmétique m d’un vecteur v de dimension n :
m= 1

=
La fonction moyenne.m comportera les instructions suivantes :
function resultat=moyenne(v,n); %déclaration de la fonction
r=0; %initialisation de la moyenne
for
k=1:n r=r+v(k);
end
resultat=r/n;
On note la présence de la boucle itérative :
6
n
n
i
1
v
(
i)
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
for indice=debut:pas:fin
instruction ;
end
Qui est équivalente à :
indice=debut ;
(B) instruction;
debut=debut+pas;
si debut=fin aller à B;
Mise en œuvre de la fonction
>>moyenne(1:100,100)
Comparer avec la fonction matlab mean.
Exemple 2 :
Créez une fonction puissance.m qui donne la valeur efficace s et la puissance
moyenne p d’un signal.
x étant un vecteur de composantes x(i) , i=1..n, la valeur efficace de x est :
s= p = 1
n

n
i
=
1
7
x
2(
i ) Testez cette fonction sur un signal sinusoïdal d’amplitude A et de période 1.
Comparer avec la fonction matlab std.
Exemple 3 : Diagramme de bode.
1- Créez une fonction spectre(f,H) qui affiche à l’écran le spectre
d’amplitude 20log|H(f)| et le spectre de phase Arg(H(f)) en fonction de f
en Hertz avec indication du titre de chaque courbe ; Les paramètres
d’entrée sont le vecteur fréquence f=0:f
max
et le vecteur complexe H.
Fonctions conseillées :abs(x),angle(x) et log10(x).
2- Utilisez la fonction spectre dans un programme indépendant myfilter.m
pour tracer les diagrammes de Bode des filtres passe bas et passe haut
dont les fonctions de transferts sont définies par :
H
1
j
.
f
1
+
.f
c
(f)=
1
1
+
j. f
f
c
f
c
,H
2
(f)=
j
f
f
c
étant la fréquence de coupure demandée par le programme et fournie par
l’utilisateur à l’exécution.
Exemple 4 : vitesse de convergence d’une série
Considérons la série en N suivante (qui converge vers exponentiel de x) :

ff
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
s
(
x,N)=

N
k
k
=
0
8
x
k
Réaliser :
• Une fonction factoriel(n) qui calcule le factoriel d’un entier naturel.
• Une fonction somme(x,n) qui calcule s(x,n).
• Un programme prog3.m qui calcule la valeur de l’exponentiel de 2 avec
une précision (incertitude relative) supérieure à 95% (incertitude inférieur à
5%).
PARTIE THEORIQUE
1. En utilisant
!
e j.nα= [ e j.α]
n
, Trouver les expressions de cos(na) et sin(na) pour
n=2 et n=3.
2. De même retrouver les expressions de cos(a+ß) et sin(a+ß).
3. Calculer la somme∑

n
=1
s(
n ) , avec s(n)=
2
1
n
+
j
3
1
n 4. Même question pour s(n)= (
3
j
)
n
5. Trouver les complexes z tels que : z N =
z − N 6. trouver les racines cubiques de 1.
7. Calculer le produit infini ∏

=1
e jπ
n
8. Calculer =
∫/
2n
π
2/
In
0
π
/
2n
x dx J n
0
n
x dx ________________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est
fournie et doit contenir en plus de la partie théorique :
Un listing des programmes :
prog1.m
prog2.m
puissance.m
spectre(f,H)
myfilter.m
factoriel(n)
somme(x,n)
prog3.m
sin
( ) et =
∫ cos
()
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
TP II NOTIONS DE SIGNAL NUMERIQUE
________________________________________________________________________________________________________
_________
I- Définition
Un signal numérique s(k) est une suite de N échantillons régulièrement espacés de
T
e
secondes :
s(0,),s(T
e
),s(2T
e
),…,s((N-1)T
e
)
La grandeur F
e
=1/T
e
est appelée fréquence d’échantillonnage : c’est le nombre
d’échantillons par seconde.
Le nombre d’échantillons N est le plus souvent une puissance de 2 : N= 2 p où p est
un entier naturel.
Signal numérique
100
80
60
40
20
0
Te 2Te 3Te 4Te kTe
kTe (secondes)
II- Visualisation du signal s
Pour visualiser s(kTe) correctement à l’écran, il faut préciser l’axe du temps t=k T
e:
t=0:T
e
:(N-1)*T
e
;
plot(t,s);
Remarque : la commande plot(s), dessine s(k) en fonction de 1,2,…,N ; c’est-à-dire
T
e
=1, ce qui est rarement le cas.
Exemple 1 : Signal rectangulaire
• On considère le signal rectangulaire Rec(k) égal à l’unité pour
k=1…N/4 et nul pour k=N/4+1…N.
Pour N=512 et T
e
=0.01s visualisez à l’aide d’un programme
Rec(k) en précisant sur la figure l’axe du temps avec l’unité de
mesure.
• Visualisez deux périodes de l’onde carrée de période 2π
fournie par Matlab square(t) pour plusieurs pas
d’échantillonnage : t=0 :pas :4*pi
Exemple 2 : convolution de deux signaux
x(k) et y(k) étant deux signaux numériques de même durée N.T
e
, la convolution de x
et y est un signal z(k) de durée (2N-1).T
e
défini par :
z(k)=x*y(k)=∑
k
m
=
9
x
(m)y(k−
m + )1 , k=1…2N-1
1
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
Remarque :
§ Le nombre de points de z(k) est généralement N+M-1 où N et M
désignent le nombre d’échantillons respectifs de x et y.
§ L’expression générale de la convolution est un peu différente si la
variable temps débute à zéro au lieu de un (ce qu’exige Matlab).
1- Réalisez un programme prog1.m qui effectue la convolution de x(k)=Rec(k) avec
lui-même et visualisez Rec(k) et z(k) résultant. On prendra N=512.
Observez la forme de z(k) ainsi que sa largeur par rapport à celle de Rec(k). A quel
instant k, z(k) est-il maximal ? Quel est la valeur de ce maximum ? Interpréter.
2- comparer z(k) et le résultat de z2=conv(x,x)
Exemple 3 : Signaux harmoniques
On considère les deux signaux :
s
1

(t)= ∑
4
k
=
1
2
1
k
.
sin( 2 π
2. kf
t)s
2
10
1

(t)= ∑
k
k
4
=
1
(
− )1 k
.
cos( 2 π
.k
. f . t ) Avec : N=1024, f
1
2
=50Hz, F
e
=8Khz pour s
1
et f
2
=1/2 Hz , F
e
=100Hz pour s
2
,.
Générez et visualisez en même temps, à l’aide d’un programme prog2.m, les deux
signaux s
1
et s
2
.
§ Quelles remarques pouvez vous faire sur la forme des signaux?
§ Que constatez vous lorsque les sommations vont plus loin que 4?
§ A quel type de signaux connus pouvez vous comparer les signaux
générés (comparer à sawtooth (t) et square (t))?
III- NOTION de BRUIT
Le bruit b(k) 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(k) dont les échantillons sont dé-corrélés
(entendez par cela que même si on connaît b(k1), b(k2) reste aussi imprévisible
qu’avant).
La fonction b=randn(1,N) permet de générer un vecteur bruit b de distribution
pseudo normale (de Gauss) 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 vecteur bruit blanc de taille N, de moyenne m et d’écart
type σ la commande est :
bruit= m+σ *randn(1,N);
Dont la puissance est P
b
= m 2 σ+ 2 (Puissance de la moyenne plus celle des
fluctuations autour de cette moyenne).

Вам также может понравиться