123655151-37755305-Tp-Trait-Signal-Matlab
-
Upload
mayssa-rjaibia -
Category
Documents
-
view
290 -
download
40
Transcript of 123655151-37755305-Tp-Trait-Signal-Matlab
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
1
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
_____________________________________________________________________________________________________
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
2
_____________________________________________________________________________________________________
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
_____________________________________________________________________________________________________
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
3
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
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
4
>>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.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
5
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.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
6
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= ∑=
n
i
ivn 1
)(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 :
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
7
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 = ∑=
n
i
ixn 1
2 )(1
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:fmax 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 :
H1(f)=
cff
j.1
1
+ , H2(f)=
c
c
ff
j
ff
j
.1
.
+
fc é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) :
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
8
∑=
=N
k
k
kx
Nxs0 !
),(
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 [ ]njnj ee αα .. = , 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 ∑∞
=1
)(n
ns , avec s(n)=nn
j31
21
+
4. Même question pour s(n)= nj)
3(
5. Trouver les complexes z tels que : NN zz −= 6. trouver les racines cubiques de 1.
7. Calculer le produit infini ∏∞
=1
2/
n
j n
e π
8. Calculer ∫=2/
0
)(sinπ
dxxI nn et ∫=
2/
0
)(cosπ
dxxJ nn
________________________________________________________________________ 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
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
9
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 Te secondes :
s(0,),s(Te),s(2Te),…,s((N-1)Te)
La grandeur Fe=1/Te 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= p2 où p est un entier naturel.
Signal numérique
020406080
100
Te 2Te 3Te 4Te kTe
kTe (secondes)
s(kT
e)
II- Visualisation du signal s Pour visualiser s(kTe) correctement à l’écran, il faut préciser l’axe du temps t=k Te :
t=0:Te:(N-1)*Te; plot(t,s);
Remarque : la commande plot(s), dessine s(k) en fonction de 1,2,…,N ; c’est-à-dire Te=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 Te=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.Te, la convolution de x et y est un signal z(k) de durée (2N-1).Te défini par :
z(k)=x*y(k)= ∑=
+−k
m
mkymx1
)1()( , k=1…2N-1
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
10
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 :
s1(t)= ∑=
4
11 )2.2sin(.
21
k
tkfk
π
s2(t)= ∑=
−4
12 )...2cos(.
)1(
k
k
tfkk
π
Avec : N=1024, f1=50Hz, Fe=8Khz pour s1 et f2=1/2 Hz , Fe=100Hz pour s2,.
Générez et visualisez en même temps, à l’aide d’un programme prog2.m, les deux signaux s1 et s2.
§ 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 22 σ+= mPb (Puissance de la moyenne plus celle des fluctuations autour de cette moyenne).
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
11
IV- Rapport Signal sur Bruit (SNR )
Observons un signal y(k) bruité additivement : y(k) = s(k)+b(k)
Le SNR en dB définit le rapport de la puissance du signal Ps à celle du bruit Pb :
SNR=b
s
PP
10log.10
On distingue trois cas de figure :
§ SNR positif : le signal est plus puissant que le bruit. § SNR nul : il y a autant de bruit que de signal. § SNR négatif : le signal est dégradé, il ya plus de bruit que
d’information.
L’énergie d’un signal x(k) est fournie sous matlab par sum(x.^2). Concernant la puissance moyenne, il faut diviser l’énergie par le nombre d’éléments de x(k).
Exemple 1 : sinusoïde bruitée
Réalisez un seul programme prog3.m qui effectue les tâches suivantes :
§ Génère une sinusoïde s(k) de fréquence 50Hz, d’amplitude 1, échantillonnée à 2.5KHz (Te=0.4ms) et de taille n=256.
§ Calcule l’énergie de s(k). § Génère un bruit d’amplitude quelconque. § Additionne le bruit à la sinusoïde § Visualise les trois signaux simultanément. § Affiche le SNR à l’écran.
Exécuter trois exemples donnant des SNR négatif, nul et positif. PARTIE THEORIQUE
1- s(t) étant un signal défini sur [-T/2,T/2], on peut l’analyser sous la forme :
∑+∞
−∞=
=n
tnfjneCts 02)( π
Avec :
Cn= ∫−
−2
2
2 0)(1
T
T
tnfj dtetsT
π , f0=T 1−
(Cn)n constituent le spectre de Fourier du signal s(t) aux fréquences (harmoniques) nf0 multiples du fondamental f0. a) Montrer que C0 est la valeur moyenne du signal s(t) sur [-T/2,T/2]. On l’appelle aussi la composante continue, s(t)-C0 étant la composante oscillante ou variable. b) Exprimer s(t) en fonction de sin(2π nf0t) et cos(2π nf0t), n=0… ∞+ . c) Quelle relation lie C-n et Cn?
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
12
2- Soit le signal périodique de période T=2π : s(t)=0 si -π < t <0
s(t)=sin(t) si 0= t < π a) Tracer s(t). b) Calculer la valeur moyenne de s(t). c) Calculer la série de Fourier de s(t). 3- Soit le signal carré de période T défini par :
s(t)=A si |t|<T/4 s(t)=0 si T/4<|t|<T/2
a) Tracer s(t). b) Calculer la valeur moyenne de s(t). c) Calculer la série de Fourier de s(t). 4- Soit le signal s(t) de période T avec 0<θ <T/2 :
s(t)=A.sign(t) si T/4-θ /2 < |t| < T/4+θ /2 s(t)=0 si |t| < T/4-θ /2 ou T/4+θ /2 < |t|
a) Tracer s(t). b) Calculer la valeur moyenne de s(t). c) Calculer la série de Fourier de s(t). d) On définit le spectre de puissance du signal s(t) par Pn=Cn
2 , Cn désigne un coefficient de Fourier.
Calculer Pn. Pour quel rapport θ /T a-t-on P1=A 2
? _____________________________________________________________________________________________________
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, prog3.m
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
13
TP III TRANSFORMEE de FOURIER DISCRETE (TFD) _____________________________________________________________________________________________________
I- Echantillonnage des signaux analogiques
Considérons un signal analogique s(t) avec t ∈ R. Pour pouvoir manipuler ce signal par un logiciel tel que matlab on doit l’échantillonner, c’est-à-dire prélever à une cadence Te secondes des valeurs s(k) de s(t) :
s[-(N-1)Te]…s[Te],s(0),s[Te]…S[(N-1)Te]…
Après traitement du signal échantillonné et obtention des résultats projetés, on doit retrouver à partir des seuls échantillons de s le signal analogique en totalité : c’est possible si on respecte le théorème de Shannon.
Ce théorème stipule que si s(t) possède une transformée de Fourier de largeur de bande 2Fmax et si la fréquence d’échantillonnage Fe est telle que : 2Fmax<Fe alors on peut retrouver s(t) à partir des échantillons s(k) de la manière suivante :
s(t)= ∑+∞
∞−
− )].([sin)( ee TktFcks
Où : u
uuc
ππ )sin(
)(sin = .
Obstacles pratiques : § Les signaux physiques observés possèdent le plus souvent des
spectres de Fourier occupant des bandes fréquentielles illimitées, donc Fmax est infini.
§ L’observation d’un signal physique se fait durant un intervalle limité [0,T] ce qui donne le plus souvent un spectre très étalé.
Pour pallier ces difficultés, il faut noter que le spectre d’un signal physique tend vers zéro avec la fréquence (l’énergie du signal s’évanouit aux hautes fréquences). Ceci nous permet de limiter la bande significative du spectre et par la suite appliquer le théorème de Shannon.
II- Transformée de Fourier Discrète :
La TFD d’ordre N d’un signal numérique s(kTe), k=0…N-1 est définie par :
S(f)=S( eFNn
. )= ∑−
=
−1
0
]/2[)(N
k
NknjExpkTes π , n= -N/2…N/2-1
La transformation inverse :
s(t)=s(kTe)= ∑−
−=
12/
2/
]/2[)/(1 N
Nn
NknjExpNnFeSN
π , k=0…N-1
Remarques :
Par abus d’écriture et pour simplifier on note s(k) et S(n) le signal et sa TFD en omettant les facteurs Te et Fe.
N est souvent une puissance de 2 et dans ce cas il ya un algorithme rapide de calcul des N coefficients de la TFD, on parle de FFT (Fast Fourier Transform).
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
14
Ainsi aux coefficients s(1)…s(N) correspondent par TFD les coefficients S(1)…S(N).
Sous matlab la TFD est donnée par la fonction fft(s,N).
La transformée inverse est donnée par ifft(s,N).
Transformée de Fourier Discrète
0
10
20
30
40
Fe/N 2Fe/N 3Fe/N 4Fe/N (1-1/N)Fe
nFe/N (Hertz)
|S(n
Fe/
N)|
On définit les spectres d’amplitude et de phase du signal s(k) par :
20*log10(abs(fft(s,N))) angle(fft(s,N))
Repliement de spectre (aliaising)
§ Générez une sinusoïde de fréquence f0 échantillonnée à Fe=100Hz avec f0<fe/2.Observez le signal et sa TFD.
§ Augmentez la fréquence f0 de la sinusoïde de manière à dépasser Fe/2. En observant le spectre du signal donnez sa fréquence réelle fr.
§ Que se passe-t-il lorsque f0=Fe/2 ? § Exprimez fr en fonction de f0 et Fe. § Expliquez à l’aide d’un schéma ce qui se passe en général lorsque f0
dépasse Fe/2. Signal Chirp linéaire Générer le signal x(t)= )1.2.sin( 2 ++ tt ππ de durée une seconde avec Fe=1kHz. Visualiser x en fonction de t. Visualiser la TFD de x. Commenter. La fréquence instantanée de x(t) dépend de t, exprimer cette fréquence. Cela implique que le théorème d’échantillonnage ne pourra jamais être respecté : aliaising inévitable. Matlab permet de visualiser le spectre par tranches temporelles en fonction du temps : C’est le spectrogramme. Observer ce spectrogramme à l’aide de la fonction specgram(x) ;
prog1.m :
§ Générer et visualisez les n/8 points de la TFD d’ordre n d’une sinusoïde sin(t) ainsi que sa phase. Utiliser le zoom et « data cursor » pour lire les pics.
§ Faites de même pour une somme de sinusoïdes sin[(2k+1)t], k=0…4.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
15
prog2.m § Générer et visualisez Rec(k), sur 2 secondes. Visualisez les n/8
points des spectres d’amplitude et de phase de la TFD d’ordre n=512 en respectant les unités temporelle et fréquentielle.
§ Générer et visualisez la convolution z(k) de Rec(k) avec lui-même (utilisez la fonction conv(Rec,Rec)) ainsi que sa TFD et sa phase (Les n/8 points uniquement).
§ Comparez la TFD de z(k) et le carré de la TFD de Rec(k). § Générez wave(k) une onde carrée à l’aide de la fonction square( pour
l’utiliser correctement tapez help square). § Visualisez wave et sa TFD.
prog3.m § Générer et visualisez la TFD d’une sinusoïde bruitée de fréquence f0
en lui rajoutant un bruit blanc centré de puissance 2σ et observez si l’on distingue le pic correspondant à la fréquence de la sinusoïde. Testez plusieurs valeurs de 2σ et de f0.
PARTIE THEORIQUE I- Propriétés de la TFD On considère les signaux causals x(k) et y(k). 1. Déterminer la TFD de x(k-k0). 2. Déterminer la TFD de k.x(k). 3. Déterminer la TFD de x(k)*y(k). 4. Déterminer la TFD du produit xy. II- Modulation On considère un signal s(t) dont la transformée de Fourier S(f) occupe la bande de fréquences [-Fmax,Fmax].
1- Donner l’expression de la transformée de Fourier analogique de sm(t)=s(t).cos(2π fpt) en fonction de S(f).
2- Donner l’expression de la transformée de Fourier analogique du signal démodulé mais non filtré : sdm(t)=sm(t).cos(2 π fpt), en fonction de S(f).
3- Proposez une méthode pour extraire S(f) de sdm(t). _____________________________________________________________________________________________________
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, prog3.m
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
16
TP IV CALCUL et ANALYSE SPECTRALE _________________________________________________________________________________________________________________
I- Analyse du spectre par TFD
On va procéder à une étude de l’effet de la durée M d’observation d’un signal sur sa TFD ainsi que l’effet de la fréquence d’échantillonnage Fe.
On prendra soin de manipuler des signaux de tailles N=2 p :
2,4,8,16,32,64,128,256,512,1024,2028,4056…
1- Influence de la taille de la fenêtre d’observation (windowing).
Il est possible d’appliquer la TFD sur la totalité ou une partie d’un signal de taille N. La partie analysée est appelée fenêtre d’observation.
On va mettre en évidence le fait que la précision fréquentielle (résolution) augmente avec la taille de la fenêtre.
Réalisez prog1.m qui : § Génère une sinusoïde s(k) de fréquence 100Hz, de taille N=512
échantillonnée à 1kHz. § Visualise les modules des TFD d’ordres M=16, 32, 64, 128, 256, 512 et
donne à chaque fois la largeur ∆ f du lobe principal du spectre : Cette largeur est l’écart entre les fréquences où le max du spectre est divisé par deux (largeur à mi-hauteur) (utiliser la fonction find() sinon le zoom et « data cursor ».
§ Vérifiez que le produit p=M ∆ f est constant. Conclure.
2- Fenêtre d’analyse :
Une fenêtre d’analyse est une mise en forme que l’on donne au signal avant de l’analyser par TFD :
On multiplie s(k) terme à terme par une fenêtre w(k) de forme adéquate pour réduire les lobes secondaires afin que le spectre observé tende vers le résultat théorique qui est pour une sinusoïde de fréquence f0 une raie pure à la fréquence f0.
Les analyseurs de spectre (appareils qui donnent le spectre d’un signal) proposent de nombreuses fenêtres d’analyse, qui ont chacune des effets différents : Blackman, Hamming, Hanning…
Sous matlab on peut utiliser les fonctions hanning(N) et blackman(N) pour le fenêtrage (ce sont deux vecteurs colonnes de taille N).
Réalisez prog2.m qui :
§ Visualise sur une même figure les deux fenêtres citées et leurs spectres d’amplitude sur [0, 0.5Hz]. Conclure sur l’utilité de ces deux fenêtres.
§ Multiplie terme à terme la sinusoïde s(k) du prog1.m par chacune des deux fenêtres, et visualise les spectres résultants.
§ Observez l’effet du fenêtrage sur le spectre. Comparez l’effet des deux fenêtres proposées.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
17
II- Résolution fréquentielle de la TFD La résolution fréquentielle ∆ f nous informe sur la capacité à séparer les valeurs du spectre pour deux fréquences très proches :
On peut distinguer les spectres aux fréquences f et f+ ∆ f mais pas aux fréquences f et f+δ où δ < ∆ f. Plus ∆ f est petite plus la résolution est haute.
Cette résolution dans le cas de la TFD d’ordre N est déterminée par le nombre de points d’analyse N et la fréquence d’échantillonnage Fe :
∆ f=Fe/N On va essayer de voir les limites de l’analyse par TFD en essayant de détecter des sinusoïdes prôches.
Réalisez prog3.m qui : § Génère un signal échantillonné à 1kHz de 1024 points, résultat de l’addition
de deux sinusoïdes de même amplitude A et de fréquences respectives 100Hz et 105Hz.
§ Déterminez expérimentalement la durée d’observation en dessous de laquelle on ne distingue plus les lobes principaux des TFD des deux composantes.
§ Que vaut la taille théorique Nmin qui ne permet pas de séparer les deux raies ? § On double simultanément la fréquence d’échantillonnage et la taille de la
TFD : Est-ce qu’on obtient de meilleurs résultats ? § Un procédé physique génère un signal comportant deux raies 100Hz et 105Hz
présentes dans une bande [0,500Hz]. Quel serait le choix le plus économique de la longueur d’observation et de la fréquence d’échantillonnage de ce signal afin de pouvoir distinguer les deux raies ?
III- Calcul du spectre par auto-corrélation :
Réalisez prog4.m qui :
§ Visualise la TFD X(n) d’un signal rectangulaire x(k), sa fonction d’auto-corrélation R(n) et la TFD de R. Utiliser xcorr(x,x,’biased’) ;
§ Visualise un bruit blanc b(k), son auto-corrélation B(n) et la TFD de B. § En comparant R(n) et X(n), vérifiez le théorème de Wiener-kinchine.
PARTIE THEORIQUE
On désigne par u(t) l’échelon unité, nul pour t négatif et égal à 1 ailleurs. 1- Déterminer l’énergie Es et la densité spectrale de puissance sγ du signal
s(t)=u(t).exp(-at) avec a réel positif. 2- Déterminer la puissance moyenne Px et la dsp xγ du signal déterministe
x(t)=A.sin(2π f0t+ϕ ).
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
18
3- Déterminer la puissance moyenne Px et la dsp yγ du signal aléatoire y(t)=A.sin(2π f0t+ϕ ), où ϕ est une v.a. uniforme sur [0,2 π ].
4- Quelle est l’énergie ?E localisée dans la bande [f0- ∆ f/2, f0+ ∆ f/2] d’un signal s(t) à énergie finie. 5- Quelle est la puissance ?P localisée dans la bande [f0- ∆ f/2, f0+ ∆ f/2] d’un signal s(t) à puissance moyenne finie. Que se passe-t-il si ∆ f tend vers zéro ? _________________________________________________________________ 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 du programme :
prog1.m, prog2.m, prog3.m, prog4.m
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
19
TP V NOTIONS de TRAITEMENT AUDIO _____________________________________________________________________________________________________
I- Introduction au système acoustique humain
Le système de réception du son chez l’humain (l’oreille) comporte trois parties principales :
• Un canal externe en contact direct avec le milieu extérieur (l’air).
• Une membrane (le tympan) sensible aux variations de pression dans le canal externe.
• Une partie interne hétérogène qui détecte les hautes, moyennes et basses fréquences.
Un son audible est caractérisé par :
• Intensité : la puissance acoustique du son en Watts par centimètre carré.
Elle dépend de la direction (position relative à la source du son)
• Hauteur : la fréquence de la fondamentale en Hertz. Ne dépend pas de la distance à la source.
• Timbre : le contenu en harmoniques (les multiples du fondamental). Le même timbre correspond à plusieurs phases relatives ou formes temporelles.
1- La puissance acoustique
Watt/cm2 Décibels Exemple de son
10-16 0 dB Son bas audible à 3kHz
10-14 20 dB Son bas audible à 10kHz
10-12 40 dB Son bas audible à 100Hz
10-10 60 dB conversation normale
10-7 90 dB Limite du bruit industriel
10-5 110 dB Concert de Rock
P étant la puissance par cm2, la puissance en dB s’écrit : 0
10log.10PP
PdB = , avec
P0=10-16. La puissance est proportionnelle au carré de la pression subie par le tympan.
L’écart de puissance minimum distinguable par l’oreille est de l’ordre de 1dB soit à peu près 11% d’écart relatif en puissance (correspond à une pression minimale de 20 micropascales).
L’oreille possède une sensibilité logarithmique : un facteur deux ressenti correspond à un facteur dix en puissance.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
20
2- La hauteur du son
Le fondamental étant f, les harmoniques sont 2f, 3f, 4f, …liés respectivement aux modes fondamental (do3), second (do4), troisième (sol4)…
3. Le timbre
Il correspond au contenu spectral du son, peu importe son allure temporelle.
4. Echelle logarithmique
la séparation minimum entre niveaux distinguables étant de 1dB, pour coder la plage allant de 0dB à 120 dB il faudra coder la plage de puissance allant de 0 à 1012 soit sur 40 bits.
Du fait que l’oreille ait une sensibilité logarithmique, seuls 120 niveaux sont distinguables, d’où un codage sur 8 bits uniquement. Cela exige une quantification logarithmique des échantillons sonores (Echelle de quantification compensée).
X étant la donnée originale, la donnée quantifiée Y s’écrit :
)1ln().1ln(
µµ+
+=
XY , 0≤ X ≤ 1 (standard US, ex. µ =255)
)ln(1).ln(1
AXA
Y+
+= , 1/A ≤ X ≤ 1 (standard EU, ex. A=87.6)
5. Qualité des données audio
Qualité Bande Taux (kHz) codage Débit Commentaire
Musique HIFI 5Hz…20kHz 44.1 16 bits 706 K Audiophile Téléphone 200Hz…3.2kHz 8 12 bits 96 K La parole Téléphone 200Hz…3.2kHz 8 8 bits 64 K La parole : courant Parole codée LPC 200Hz…3.2kHz 8 12 bits 4 K Qualité pauvre
II- Le son sous Matlab
Windows propose un standard des fichiers son : Le format ‘.wav’ (‘.au’ est le standard chez unix). Ce format est rudimentaire et non compressé. Comme tout fichier formaté, un fichier .wav comporte une entête : Champs de 44 octets, suivie des données (le son proprement dit).
L’entête commence dès le premier octet (offset 0) et se compose des éléments suivants :
1 TAG1 4 Octets Constante « RIFF » (Ox52,Ox49,Ox46,Ox46)
2 SIZE1 4 Octets Taille du fichier moins 8 octets
3 FORMAT 4 Octets Format= « WAVE » (Ox57,Ox41,Ox56,Ox45)
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
21
4 TAG2 4 Octets Identifiant « fmt » (Ox66,Ox6D,Ox74,Ox20)
5 LGDEF 4 Octets Nombre d’octets utilisés pour définir le contenu
6 FORMAT 2 Octets Format de fichier (1 : PCM,….)
7 NBCANAUX 2 Octets Nombre de canaux : 1 pour mono et 2 pour stéréo
8 FREQ 4 Octets Fréquence d’échantillonnage en Hertz
9 BYTEPERSEC 4 Octets Nombre d’octets par seconde de musique
10 NBRBYTE 2 Octets Nombre d’octets par échantillon
11 NBBITS 2 Octets Nombre de bits par donnée
12 TAG3 4 Octets Constante « data » (Ox64,Ox61,Ox74,Ox61)
13 SIZE2 4 Octets Taille du fichier moins 44 octets
1. Lecture d’un fichier son
wavplay(‘son1.wav’,fs);
pour écouter, fs est la fréquence d’échantillonnage en Hertz. siz=wavread(‘son1.wav’,’size’) ;
siz(1) est le nombre d’échantillons et siz(2) le nombre de canaux.
y=wavread(‘son1.wav’) ;
y est un vecteur colonne si le son est mono et une matrice à deux colonnes si le son est stéréo qui contient les données. Les données sont dans la plage
[-1,1].
[x,fs]=wavread(‘son1.wav’) ;
x est identique à y; fs est la fréquence d’échantillonnage en Hertz.
[z,fs,bits]=wavread(‘son1.wav’) ;
bits est le nombre de bits par échantillon.
u=wavread(‘son1.wav’,N) ;
u contient les N premières données ou échantillons.
fid=fopen(‘son1.wav’,’r’) ;
Ouvre le fichier son en tant que flot de données non spécifiés pour sa lecture.
fid est le pointeur du fichier :pointe la donnée actuelle.
son_lu=fread(fid,inf,’int16’);
son_lu est un vecteur colonne constitué de données 16 bits ;
inf demande la lecture jusqu’à la fin du fichier.
fclose(‘fid’);
Ferme le fichier.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
22
Testez ces instructions sur un fichier son et en déduire la taille de l’entête.
2. Ecriture d’un fichier son
wavwrite(x,fs,’son2.wav’) ;
crée un fichier son son2.wav dont les échantillons (compris entre -1 et 1) se trouvent dans la matrice x avec une fréquence d’échantillonnage fs.
3. Enregistrement d’un fichier son
Brancher un micro à votre PC et saisir les commandes :
fs=44100 ; %fréquence d’échantillonnage
nbits=16 ; %bits par échantillon
mode=2 ; %mode stéréo
D=16 ; %Durée de l’enregistrement en secondes
x=audiorecorder(fs,nbits,mode) ;% x est une variable objet
recordblocking(x,D) ;
% Parler au micro pendant D secondes
play(x) ; % Ecouter le son enregistré
y=getaudiodata(x) ; % y contient les données son de type double
Ou:
x=audiorecorder (fs,nbits,mode);
record(x) ;
Parler au micro….
stop(x) ;
y=play(x) ;
Ecouter….
stop(y) ;
z=getaudiotata(x,’int16’);
prog1.m : sons purs
• Générer un son pure de fréquence audible x(t)= )2sin(. 0tfA π .
• Visualiser x et son spectre. Ecouter x.
• Ajouter à x des sons de fréquences multiples de f0 et visualiser le résultat y et son spectre. Ecouter y.
prog2.m
• Enregistrer un son x stéréo de durée 16 secondes.
• Visualisez sur deux systèmes d’axes différents les N=2048 premiers échantillons de chaque canal (un extrait y).
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
23
• Visualisez les spectres de phase et d’amplitude correspondant à y.
prog3.m
• Modifier le contenu de x, en effaçant quelques passages, puis visualisez le son et le spectre puis écouter le résultat.
prog4.m
• Mixage : Enregistrer deux sons différents x1 et x2 et fusionner les données alternativement (un morceau de x1 suivi d’un morceau de x2…etc) dans un fichier y.
• Afficher x1, x2, y ainsi que leurs spectres d’amplitude.
___________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et doit contenir un listing des programmes : prog1.m, prog2.m, prog3.m, prog4.m
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
24
TP VI MODULATIONS NUMERIQUES _____________________________________________________________________________________________________
I- Modulations analogiques La modulation en général est un procédé technique permettant de transmettre des signaux occupant une certaine bande spectrale de base [-fmax,fmax] d’un émetteur vers un récepteur tout en occupant dans le milieu de transmission les séparant une bande spectrale [fp-fmax,fp+fmax] très loin de la bande de base.
La fréquence fp est dite la fréquence porteuse. Evidemment on doit avoir fmax<fp/2 pour que les deux bandes ne chevauchent pas, afin que le récepteur puisse restituer le signal original émis.
Grâce aux propriétés de la TFD, il se trouve qu’en multipliant un signal s(t) par cos(2π fpt) à l’émission, le résultat est un signal sm(t) ayant la même bande spectrale que s(t), mais translatée de fp.
A la réception il suffit de multiplier par la même fonction cos(2π fpt) pour isoler la bande de s(t).
Programme à faire : prog1.m
Le programme réalise les tâches suivantes :
§ Génère un sinus, x(k), de fréquence 50 Hz échantillonné à 8kHz sur 512 points.
§ Module x(k)+2 par un cosinus, p(k), de fréquence porteuse 2500Hz, ce qui donne m(k).
§ Génère dm(k)=m(k).p(k) et affiche les spectres des trois signaux. § Comment restituer le signal x(k) à partir de dm(k).
Remarque : La multiplication échantillon par échantillon de deux vecteurs x et y sous matlab : x.*y On se propose de moduler un signal audio en utilisant les fonctions Matlab ammod et pmmod. 1- Modulation d’amplitude prog2.m
Fp = 5000; % fréquence porteuse [x,Fe] = wavread(‘son1.wav’) ;% signal audio à moduler y = ammod(x,Fp,Fe); % signal modulé z=amdemod(y,Fp,Fe) ;%démodulation du signal modulé
Visualiser les trois signaux x ,y et z ainsi que leurs spectres d’amplitude. 2- Modulation de phase
x = sin(2*pi*t) + sin(4*pi*t); Fp = 10; phasedev = pi/2; % deviation de phase pour la modulation de phase y = pmmod(x,Fc,Fs,phasedev); % Modulation
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
25
Visualiser les deux signaux x et y. Bruit du canal et démodulation On additionne du bruit blanc gaussien à y (bruit du au canal de transmission), puis on effectue la démodulation de phase. y = awgn(y,10,'measured',103); % additive white Gaussian noise à y z = pmdemod ( y, Fp, Fe, phasedev); % Demodulate. Visualisez les signaux x, y et z. II- Modulations numériques 1- Tracé des constellations Matlab permet d’effectuer le tracé des constellations des modulations les plus courantes (trace l’enveloppe complexe des symboles de l’alphabet). En voici deux exemples : PSK-16
M = 16; % Le nombre de symboles de l’alphabet à transmettre x = int16([0:M-1]); scatterplot (pskmod(x,M)); % effectue le tracage
QAM-32
M = 32; x = int16([0:M-1]); y = qammod(x,M); scale = modnorm(y,'peakpow',1); y = scale*y; % Scale the constellation. scatterplot(y); % Plot the scaled constellation.
2- Modulation QAM-16 M = 16; % taille de l’alphabet x = randint(5000,1,M); % message aléatoire y = qammod(x,M); % modulation Visualisez x et y. ynoisy = awgn(y,15,'measured'); % bruit additive du canal scatterplot(ynoisy); z = qamdemod(ynoisy,M); % démodulation Visualisez x, y, ynoisy et z PARTIE THEORIQUE Enveloppe complexe d’un signal
On considère un signal réel x(t) de transformée de Fourier X(f). Soit y(t) le signal réel défini par sa transformée de Fourier :
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
26
)(.)(
)( fXj
fsignfY =
y(t) est la transformée de Hilbert de x(t).
On appelle signal analytique de x(t) le signal complexe : )(.)()(~ tyjtxtx +=
1- quelle est la T.F. du signal analytique )(~ tx ? Faire un schéma des T.F.
2- Soit ).2cos(.)( 0 ϕπ += tfAtx .
Déterminer y(t) et )(~ tx , et représenter les trois signaux dans le plan complexe. En déduire l’analogie avec la notion de phaseur en électricité.
La forme polaire du signal analytique : )(.).()(~ tjetrtx ϕ=
Permet de définir l’enveloppe réel )(tr et la phase instantanées )(tϕ d’un signal réel x(t).
3- Donner l’enveloppe et la phase du signal ).2cos(.)( 0 ϕπ += tfAtx .
4- Donner l’enveloppe et la phase du signal modulé ).2cos().()( 0 ϕπ += tftatx , a(t) étant un signal réel. Faire un tracé qui illustre l’enveloppe de x(t).
L’enveloppe complexe d’un signal réel x(t) est définie, pour une pulsation arbitraire 0ω par : tjetxtr 0.).(~)(~ ω−=
On peut interpréter l’enveloppe complexe comme le résultat d’une modulation d’amplitude du signal analytique.
5- Exprimer les parties réelles et imaginaires a(t) et b(t) de )(~ tr en fonction de x(t), y(t) et les porteuses sin( 0ω t) et cos( 0ω t).
a(t) et b(t) s’appellent la composante en phase (IN) et en quadrature (Q) du signal réel x(t).
6- Inversement, exprimer x(t) et y(t) en fonction de a(t), b(t) et les porteuses.
7- On considère un signal x(t) réel, aléatoire ou non, à spectre passe bande symétrique :
1)( =fxγ , pour 21 fff ≤≤ Et nul ailleurs.
8- Exprimer les spectres de x(t), a(t) et b(t) en fonction du spectre de l’enveloppe complexe. Faites un schéma illustratif.
_____________________________________________________________________________________________________
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 et prog2.m
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
27
TP VII ESTIMATION et DETECTION I- Estimation de la moyenne Soit X une variable aléatoire stationnaire d’ordre un et x(1)…x(N) une série de N observations ou mesures de X décorrélées. On se propose d’étudier le comportement de l’estimateur de la moyenne µ =E[X] suivant (moyenne empirique):
∑=
=N
i
ixN
N1
)(.1
)(µ̂
prog1.m • Générez n=1000 points d’un signal aléatoire X en additionnant 4 périodes
d’une sinusoïde sin(t) et un bruit blanc de moyenne µ =5. • Calculez l’estimateur µ̂ (N) pour les valeurs de k = 1..n. Utiliser mean(). • Visualisez µ̂ (k), l’erreur ε (k)=( µ̂ - µ )(k) et l’erreur quadratique ε 2(k).
Est ce qu’il y a convergence? N.B. : Avant chaque génération de bruit il faut initialiser le processus de génération à l’aide de la commande rand('state',0); II- Estimation de l’écart type On considère les deux estimateurs de la variance [ ]22 )( µσ −= XE suivants (variances empiriques):
2
1
21 )](ˆ)([.
1)(ˆ Nix
NN
N
i
µσ −= ∑=
2
1
22 )](ˆ)([.
11
)(ˆ NixN
NN
i
µσ −−
= ∑=
prog2.m • Générez 1000 échantillons décorrélés d’une variable aléatoire X stationnaire
au second ordre en additionnant une sinusoïde et un bruit blanc de moyenne µ =5 et de variance 2σ =1.5.
• Calculez les deux estimateurs σ̂ (N) pour les valeurs de N = 1…1000. • Visualisez σ̂ 1(N), l’erreur ε (N)=( σ̂ 1-σ )(N) et l’erreur quadratique ε 2(N).
Est ce qu’il y a convergence? • Faites de même pour le deuxième estimateur.
III- Détection d’une composante continue par moyennage On considère un signal constant C noyé dans un bruit b(k) blanc centré de variance v, le signal résultant observé est s(k). On estime la valeur de la constante en prenant la moyenne de s(k). prog3.m : Réaliser un programme qui estime C, en utilisant la moyenne empirique étudiée au début du TP, ceci pour v=C/10, C/4, C/2, C.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
28
PARTIE THEORIQUE 1- Donner le biais et la variance de l’estimateur de la moyenne empirique :
∑=
=N
i
iXN
N1
)(.1
)(µ̂
2- Donner le biais et la variance de l’estimateur de la variance empirique : 2
1
21 )](ˆ)([.
1)(ˆ Nix
NN
N
i
µσ −= ∑=
3- Estimation empirique de la fonction de corrélation Soit N échantillons [x1,…xN] extraits d’un signal stationnaire X centré d’ordre deux de fonction de corrélation inconnue RX(n)=E[x(k).x(k+n)]. On peut généraliser l’estimation empirique pour n=0…N-1, sous la forme :
∑−
=+−
=−=nN
knkkXX xx
nNnRnR
1
..1
)(ˆ)(ˆ
a- Montrer que cet estimateur est non biaisé. b- Considérons le nouvel estimateur empirique :
∑−
=+=−=
nN
knkkXX xx
NnRnR
1
..1
)(ˆ)(ˆ
Calculer le biais de cette estimateur et montrer que la matrice de corrélation est définie positive.
_____________________________________________________________________________________________________
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 du programme : prog1.m, prog2.m, prog3.m
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
29
TP VIII FILTRAGE NUMERIQUE
Il existe de nombreuses méthodes de synthèse de filtres numériques. Le passage de l’analogique au numérique est tributaire de problèmes d’échantillonnage , surtout de quantification des échantillons, faisant souvent perdre au filtre numérique conçu les propriétés du modèle analogique.
I- Définition d’un filtre : Un filtre est défini par son gabarit qui donne les limites de tolérance pour les différents paramètres du spectre d’amplitude |H(f)| du filtre, à savoir :
§ La fréquence de coupure fc § Le module de ’atténuation de |H(f)| dans la bande coupée : ∆ attdB § Le module de l’ondulation de |H(f)| dans la bande passante : ∆ ond § La largeur de la bande de transition, située entre la fréquence de
coupure et la zone atténuée ∆ trans Remarques :
§ il peut y avoir plusieurs fréquences de coupure. § Les fonctions filter, fir1, fir2, remez…permettent la création de filtres
suivant plusieurs méthodes. § La réponse fréquentielle (RF) du filtre, égale à la TFD de la RI en dB,
doit être contenue dans le gabarit pour que le filtre soit utilisable correctement ; sinon on dit que la méthode diverge :il faut chercher une autre procédure.
§ Le module de H(f) étant déterminé, le choix de la phase se fait généralement en prenant tous les pôles et zéros de h(k) à l’intérieur du cercle unité (exigences de stabilité et de causalité).
II- Analyse de filtres numériques La fonction matlab y=filter(b,a,x) permet de filtrer le signal x(kTe), la sortie du filtre étant y(kTe). b et a sont les vecteurs dont les éléments sont les coefficients du numérateur et du dénominateur de la fonction de transfert du filtre :
H(z)=
∑
∑
=
−
=
−
N
n
nn
M
m
mm
za
zb
0
0 , b=[b0,..,bM], a=[a0,..,aN]
Par conséquent h=filter(b,a,d), où d est l’impulsion unité de Dirac.
|H(f)|
f1 fc Fe/2 f
coupée
passante|
∆ ond
∆ tra
∆ att
Passe haut
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
30
prog1.m
Pour chacune des fonctions de transfert H(z) suivantes :
0.5.(1-z 1− ), 0.5.(1+ z 1− ), 0.5.(1- z 2− ), 1
1
5.01 −
−
− zz
, 1
51
5.015.0
−
−−
−−
zzz
Déterminez et tracez les caractéristiques suivantes du filtre associé (entre parenthèses les fonctions matlab à utiliser):
§ réponse impulsionnelle h (N=32) (filter(b,a,d)) § réponse fréquentielle H (TFD d’ordre N=32) (semilogy,unwrap) § zéros et pôles (zplane(b,a)) § le retard de groupe en fonction de la fréquence (grpdelay(h)) § réponse à une sinusoïde pure de période 100. § réponse indicielle (réponse à un échelon unité) § Pour chaque filtre, indiquez de quel type de filtre s’agit-il (d’après la
forme de la réponse en fréquences) et donner les valeurs des fréquences de coupure ainsi que les paramètres de tolérance.
Remarques :
1- La fréquence d’échantillonnage est égale à un par défaut. 2- Le retard de groupe τ g d’un filtre est le retard moyen introduit par le filtre,
c'est-à-dire la durée moyenne qui sépare l’apparition du premier échantillon en sortie et l’apparition du premier échantillon à l’entrée. Ainsi le filtre z-1 a un groupe delay égal à une seconde : C’est un retard pure. Il est défini par :
ωωθ
τd
dg
)(−= , avec )()( ωωθ angleH=
Le retard de phase est défini par : ωωθ
τϕ)(
−= .
Conséquence : Lorsqu’on veut comparer les données (l’entrée) et les données filtrées (la sortie), il faut retarder l’entrée de τ g secondes (compensation).
II- Synthèse de filtres numériques : prog2.m : Créez par TFD un passe-bas de caractéristiques :
Fe Fc ∆ trans ∆ ond ∆ att
8kHz 1kHz 200Hz 1dB -40dB
§ Dessinez le gabarit théorique sur [0, Fe]. § Visualisez la réponse impulsionnelle h de taille n=64 déduite de
l’échantillonnage du gabarit (prendre pour h la partie réelle de la TFD inverse des échantillons) et vérifiez si la RF finale est bien dans le gabarit.
§ Filtrez deux sinusoïdes de fréquences respectives F2 supérieure et F1 inférieure à Fc. Quel effet a le filtre ?
§ Mesurez sur l’allure temporelle des signaux filtrés le décalage induit par le filtre, le retard de groupe, (fonction grpdelay (h)).
§ Comparez ce décalage à la longueur de la RI du filtre.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
31
Est-il identique pour les deux fréquences F1 et F2? § Quelle partie utile du signal filtré de même taille que le signal original
peut on garder ?
III- Filtrage d’harmoniques : L’opération de filtrage est réalisée par convolution du signal à filtrer x(k) avec la RI du filtre h(k).
En numérique la convolution y(k)=x(k)*h(k) introduit un décalage de l’ordre du filtre qui correspond au temps de réponse du filtre en analogique.
En considérant les spectres en dB, il est facile de vérifier que celui de la sortie du filtre est égal à la somme de la réponse fréquentielle du filtre et du spectre du signal d’entrée.
La distorsion harmonique est une forme de distorsion courante en musique. Elle consiste à ajouter des harmoniques (fréquences multiples de la fréquence fondamentale) au signal de départ.
prog3.m
§ Ajoutez à une sinusoïde pure (fondamental f0=100Hz) ses 5 premières harmoniques impaires de même amplitude avec Fe=8kHz et N=1024. Visualisez le signal et son spectre.
§ Réalisez le filtre adéquat pour extraire les harmoniques 5.f0 et 11.f0 en plus du fondamental f0.
§ Effectuez le filtrage par convolution. § Visualisez le signal filtré ainsi que son spectre. § Notez l’amplitude du signal filtré et interprétez sa valeur .
IV- Réduction du bruit :
On se propose de rehausser une sinusoïde noyée dans le bruit. Un bruit blanc possède un spectre étalé sur toute la bande fréquentielle, alors que celui du sinus est concentré autour de sa fréquence. prog4.m
§ Générez un sinus de fréquence 1kHz échantillonné à 10kHz § Ajoutez un bruit centré au sinus avec un RSB=10dB. § Quel gabarit pour atténuer le bruit ? § Réalisez le filtrage par moyenne mobile sur 5 points et comparez les
spectres et allures temporelles des signaux bruité et débruité. PARTIE THEORIQUE I- Filtre à phase linéaire On considère le filtre FIR défini par :
H(z)=1+2 1−z +3 2−z 1) Montrer que son auto-corrélation G(z)=H(z)H( 1−z ) est à phase linéaire. 2) Donner le group delay. 3) Déterminer la réponse impulsionnelle g(n) de G(z).
_____________________________________________________________________________________________________
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, prog3.m, prog4.m
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
32
TP IX NOTIONS de TRAITEMENT d’IMAGES
_____________________________________________________________________________________________________
I- DEFINITIONS
1- Une image à deux dimensions est définie comme une matrice I(N,N) de N ligne et N colonnes. 2- Le point (i,j) est appelé pixel (picture cell), sa valeur I(i,j) réelle traduit le degré de luminosité de l’image au point (i,j) : On l’appelle niveau de gris de l’image au point (i,j). 3- Généralement N est une puissance de 2 (32,64,…,1024..) et le niveau de gris des pixels varie entre 0 et 255=256-1=2 8 -1. 0 correspond au noir (luminosité minimum) et 255 au blanc (luminosité maximum) ; Tous les niveaux sont codables sur 8 bits (octet ou byte ). Ceci pour une image noir et blanc, pour une image couleur, il faut prévoir trois matrices qui correspondent aux niveaux du rouge, vert et bleu (RVB ou RGB).
),()1,(
),1()1,1(
NNN
Npixel
II- Mémoire occupée par une image :
Les images noir et blanc ou couleur occupent beaucoup d’espace mémoire, ceci est ressenti lors de la conception d’un programme manipulant plusieurs images. Ainsi une image telle que celle définie ci-dessus, va occuper NxNx8 bits ou encore NxN octets (un Kilo octets=1Kb=1024 octets=2 10 octets):
N Mémoire en bytes Mémoire en Kby
128 16.384 16 256 65.536 64 512 262.144 256 1024 1.048.576 1024=1Mby
III- Codage d’une image :
On parle aussi de compression d’une image. Vue la taille occupée par une image, surtout en couleur et lorsque les images sont animées, on a inventé des méthodes qui permettent de réduire considérablement la taille mémoire d’une image après compression : On distingue les images bitmap, tif, gif, epg, jpeg…suivant la méthode de compression utilisée.
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
33
MATLAB Dénomination
‘jpg' or 'jpeg' Joint Photographic Experts Group (JPEG) 'tif' or 'tiff' Tagged Image File Format (TIFF) 'gif' Graphics Interchange Format (GIF) 'bmp' Windows Bitmap (BMP) 'png' Portable Network Graphics (PNG) 'hdf' Hierarchical Data Format (HDF) 'pcx' Windows Paintbrush (PCX) 'xwd' X Window Dump (XWD) 'cur' Windows Cursor resources (CUR) 'ico' Windows Icon resources (ICO)
IV- Format d’une image : Comme tout fichier formaté, une image en mémoire est un fichier qui possède deux champs :
§ Une entête : c’est une suite d’octets spécifiant le nombre de lignes et de colonnes de l’image, le nombre d’octets par pixel, le genre de codage utilisé pour compresser l’image…
C’est justement le format induit par la méthode de compression : tif, gif, mpeg…
§ Les données : c’est la suite des niveaux de gris de tout les pixels de l’image tenant compte de la méthode de compression, ce qui exige pour lire l’image un programme spécifique connaissant le code de l’image.
V- Lecture et écriture d’une image : La fonction imread (‘nom de l’image’) permet de lire une image :
Si R est une matrice NxN, la commande imwrite (R,’nom.tif’) crée une nouvelle image
NxN nom.tif dont les pixels ont les niveaux de gris figurant dans la matrice r. Exemple 1 i=imread (‘cameraman.tif’) ; %lecture de l’image cameraman de format tif Cette instruction stock l’image cameraman.tif dans une matrice i de type uint8. Visualisation d’une image imshow (i) %affichage de l’image On peut visualiser une matrice R de type uint8 avec la même commande. Si R est de type double, il faut la convertir uint8(R) pour la visualiser. Exécutez la commande whos pour voir la taille de l’image, le nombre de lignes et de colonnes. Pour connaître les niveaux de gris de l’image, il suffit de taper la commande i. Les niveaux de gris de l’image sont disponibles maintenant dans la matrice i, ce qui nous permet d’effectuer toutes les transformations possibles sur cette image et de
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
34
sauver les résultats du traitement dans une autre image (il faut la convertir au type double avant de la manipuler x=double(i)). VI- Opérations sur les images Les opérations mathématiques nécessaires s’effectuent sur des variables de type double ; il serait indispensable de convertir les images sources avant leur traitement de la manière suivante : isource = fread (‘nom_image’) ; id=double (isource) ; C’est sur id que seront appliqués les traitements. 1- calcul de la moyenne et de l’écart type prog1.m : Calculer la moyenne arithmétique et l’écart type des niveaux de gris de l’image cameraman.tif ainsi que les caractéristiques suivantes : m=mean (i( :) ); % donne la moyenne de tous les niveaux de gris :un scalaire mc=mean (i) ; % donne la moyenne de chaque colonne de l’image : un vecteur ml=mean (i) ; % donne la moyenne de chaque ligne de l’image : un vecteur d=(i-m).^2 ; % écart quadratique : une matrice v=mean(d(:)) ; % variance des niveaux de gris : un scalaire s=sqrt(v) ; % écart type des niveaux de gris : un scalaire inf=min(x( :)) ; % Le niveau de gris le plus faible: un scalaire sup=max(x (:)) ; % Le niveau de gris le plus élevé: un scalaire 2- Filtrage d’une image On considère le pixel x(i,j) d’une image donnée, et on s’intéresse à ses 8 pixels proches voisins : x(i-1,j-1), x(i,,j-1), x(i+1,j-1), x(i-1,j), x(i+1,,j), x(i-1,j+1), x(i,j+1) et x(i+1,j+1). Ces neuf pixels forment une fenêtre locale :
+++−++−
+−−−−
)1,1(),1()1,1()1,(),()1,(
)1,1(),1()1,1(
jixjixjixjixjixjix
jixjixjix
On considère d’autre part « un masque » de taille 3x3 à coefficients ai,j donnés :
3,32,31,3
3,22,21,2
3,12,11,1
aaaaaaaaa
Un filtrage linéaire de l’image x(.,.) consiste à créer une nouvelle image y(.,.) en glissant le masque point par point et en effectuant une combinaison pondérée linéaire des niveaux de gris :
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
35
∑∑=
=
=
=
−+−+=3
1
3
1, )2,2(.),(
m
m
n
nnm njmixajiy
On voit bien que y est une convolution bidimensionnelle de x et a. Filtrage par la moyenne Les coefficients du masque sont tous égaux à 1/9 : Réalisez un programme prog2.m qui effectue le filtrage local 3x3 et visualisez le résultat pour plusieurs images. Quel est l’effet du filtre ? Filtrage médian Le filtrage médian est une opération non linéaire, qui consiste en deux étapes :
• Ranger les niveaux de gris de la fenêtre locale de x dans l’ordre croissant. • Affecter à y(i,j) le niveau de gris médian (qui se classe au cinquième rang
parmi les neuf niveaux). prog3.m Réalisez le filtrage médian et expliquez son effet en le comparant au moyennage. VII- Seuillage d’une image (Binarisation) Le seuillage d’une image consiste à choisir un nombre réel s (threshold) et de tester les pixels de l’image point par point et ligne par ligne : tout niveau de gris inférieur au seuil s est mis à zéro (noir) sinon il est mis à 255 (blanc) ou 1 : Binarisation. Matlab permet en une seule instruction de comparer les éléments d’une matrice M à un seuil donné s : a=(M>s), a est une matrice composée de 1 et de 0. prog4.m
§ Réalisez un programme qui effectue le seuillage d’une image. § Choisissez plusieurs seuils, y compris la moyenne de l’image. § Effectuez le seuillage sur plusieurs images. § Afficher l’image originale et l’image seuillée en même temps
VIII- Détection du contour d’une image Le contour d’une image Im(N,N) est lui-même une image C de même taille NxN : L’image C contient les limites ou frontières ou périmètres des objets contenus dans Im. Par exemple si Im est la photo d’un disque plein alors C sera une image contenant un cercle de même centre et rayon que le disque. La détection du contour est l’opération mathématique et informatique qui permet de déduire C à partir de Im. Méthode du gradient : Le calcul des pixels de C s’effectue en faisant la soustraction des pixels voisins de Im :
• Horizontalement (gradient horizontal): C(i,j)=Im(i, j+1)-Im(i,j) • Verticalement (gradient vertical): C(i,j)=Im(i+1, j)-Im(i,j)
Traitement du signal sous MATLAB – M. SABRI – Université Sultan My Slimane - 2008
36
Il faut prendre la valeur absolue des différences !! Le parcours d’une image ligne par ligne (ordre lexicographique) dans un programme s’effectue de la manière suivante : for i=1 :N %parcours des lignes i for j=1 :N %parcours des colonnes j traitement1 ; traitement2 ;… end end prog5.m
§ Réalisez un programme qui donne le contour horizontal d’une image et visualisez le résultat.
§ Réalisez un programme qui donne le contour vertical d’une image et visualisez le résultat.
§ Générez et visualisez l’image moyenne des deux contours précédents. § Testez le programme sur plusieurs images.
Original Saturn Image Edge Map
Original Image Corrupted Image Filtered Image
____________________________________________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et doit contenir :
Un listing des programmes : prog1.m, prog2.m, prog3.m, prog4.m, prog5.m