2
Exercices — 08 1 Lissage d’un signal bruit´ e Commandes Matlab utiles pour cet exercice : convn 1. Cr´ eez un vecteur contenant le signal f 0 = exp(-(x - x 0 ) 2 /(2s 2 ) avec x 0 = 50 et s = 20, pour x allant de 0 ` a 100 par pas de 1. Tracez ce vecteur en fonction de x 2. Ajoutez a f 0 un bruit gaussien d’amplitude 0.2, le r´ esultat sera nomm´ e f . Tracez f sur la mˆ eme figure. 3. Cr´ eez un vecteur R 1 contenant N = 5 fois le nombre 1 (utilisez la commande ones). Normez ce vecteur pour que son int´ egrale soit 1. 4. R´ ealisez la convolution de f avec R 1 (moyenne glissante), et tracez le r´ esultat (on l’appellera h 1 ) en fonction de x (superposez ` a celui de f 0 ). 5. Cr´ eez cette fois un vecteur R 2 contenant un triangle de N points : [1 2... N+1 2 ...2 1]. Normez ce vecteur, convoluez-le avec f 0 (appelez le r´ esultat h 2 ) et tracez h 2 . 6. Pour avoir une id´ ee de l’efficacit´ e des deux lissages, tracez sur une autre figure les courbes h 1 - f 0 et h 2 - f 0 . Y-a-t’il une grosse diff´ erence entre les deux lissages, et si oui lequel semble le plus “fort” ? 7. Calculez les distances euclidiennes (celle des moindres carr´ es) de h 1 et f 0 , puis de h 2 et f 0 et concluez sur l’efficacit´ e des 2 lissages. 2 ebruitage d’un son 1. Lisez le fichier son FR.wav (disponible sur le BV). L’amplitude du son sera plac´ ee dans un vecteur y, La fr´ equence d’´ echantillonnage sera plac´ ee dans la variable fs. 2. Cr´ eez un vecteur temps t qui commence ` a 0, qui a mˆ eme taille que y, et de pas 1/fs. Tracez l’amplitude y du son en fonction du temps t. 3. Jouez ce son au moyen de la commande wavplay. 4. Bruitez y avec un bruit gaussien d’amplitude 0.05, tracez le r´ esultat en fonction du temps sur une seconde figure. Jouez le son pour ´ ecouter l’influence du bruit. 5. Convoluez ce son par le masque R = [11111]/5. A nouveau, tracez le son ainsi liss´ e, et ´ ecoutez l’effet du lissage. 3 Mesure d’une fonction de transfert en fr´ equences Une mani` ere de caract´ eriser un appareil est de mesurer sa “fonction de transfert” en fr´ equences. Cel`a peut se faire en faisant passer ` a travers l’appareil des signaux sinusoidaux de fr´ equences croissantes, et de mesurer l’amplitude du signal en sortie de l’appareil (g´ en´ eralement cette amplitude dimimue lorsque la fr´ equence augmente, c’est le cas de l’oreille humaine qui n’entend plus rien (amplitude nulle) pour des fr´ equences sup´ erieures ` a 20000 Hertz (cas d’une oreille neuve et en bonne sant´ e). Le but de l’exercice est de r´ ealiser une simulation de mesure d’une fonction de transfert (on connait la r´ eponse impulsionnelle de l’appareil, disponible dans le fichier de donn´ ees psf.txt sur le BV). 1. Lire la r´ eponse impulsionnelle dans une variable h. Tracer h en fonction du temps (cr´ eez un vecteur t 1 pour le temps, sachant que le pas d’´ echantillonnage temporel est δt =0.01 s) 2. Cr´ eez un nouveau vecteur de temps t allant de 0 ` a 10 s par pas de δt. 3. Cr´ eez un signal f contenant la sinusoide f = cos(2πνt) de fr´ equence ν = 1. Tracez f en fonction de t 4. Convoluez f par h (on l’appellera g) et tracez le r´ esultat sur la mˆ eme figure. V´ erifiez que la fr´ equence de g est la eme que celle de f . 5. Calculer l’amplitude maximale de g, v´ erifiez que vous obtenez un nombre compris entre 0 et 1 (g correspond en fait ` a la valeur de la fonction de transfert pour ν = 1). 6. Au moyen d’une boucle for, faites varier ν entre 1 et 40 Hz par pas de 0.1 Hz. Pour chaque valeur de ν , calculer f , puis g et stocker l’amplitude maximale de g dans un vecteur T . 7. Tracer en T en fonction de la fr´ equence (utilisez une ´ echelle log-log). 8. Pour quelles valeurs de ν l’amplitude du signal de sortie sera-t-elle plus faible que le dixi` eme de celle du signal d’entr´ ee ? 1

exos_08 (1)

Embed Size (px)

DESCRIPTION

exer

Citation preview

Page 1: exos_08 (1)

Exercices — 08

1 Lissage d’un signal bruite

Commandes Matlab utiles pour cet exercice : convn

1. Creez un vecteur contenant le signal f0 = exp(−(x − x0)2/(2s2) avec x0 = 50 et s = 20, pour x allant de 0 a 100

par pas de 1. Tracez ce vecteur en fonction de x

2. Ajoutez a f0 un bruit gaussien d’amplitude 0.2, le resultat sera nomme f . Tracez f sur la meme figure.

3. Creez un vecteur R1 contenant N = 5 fois le nombre 1 (utilisez la commande ones). Normez ce vecteur pour queson integrale soit 1.

4. Realisez la convolution de f avec R1 (moyenne glissante), et tracez le resultat (on l’appellera h1) en fonction de x(superposez a celui de f0).

5. Creez cette fois un vecteur R2 contenant un triangle de N points : [1 2...N+1

2...2 1]. Normez ce vecteur, convoluez-le

avec f0 (appelez le resultat h2) et tracez h2.

6. Pour avoir une idee de l’efficacite des deux lissages, tracez sur une autre figure les courbes h1−f0 et h2−f0. Y-a-t’ilune grosse difference entre les deux lissages, et si oui lequel semble le plus “fort” ?

7. Calculez les distances euclidiennes (celle des moindres carres) de h1 et f0, puis de h2 et f0 et concluez sur l’efficacitedes 2 lissages.

2 Debruitage d’un son

1. Lisez le fichier son FR.wav (disponible sur le BV). L’amplitude du son sera placee dans un vecteur y, La frequenced’echantillonnage sera placee dans la variable fs.

2. Creez un vecteur temps t qui commence a 0, qui a meme taille que y, et de pas 1/fs. Tracez l’amplitude y du sonen fonction du temps t.

3. Jouez ce son au moyen de la commande wavplay.

4. Bruitez y avec un bruit gaussien d’amplitude 0.05, tracez le resultat en fonction du temps sur une seconde figure.Jouez le son pour ecouter l’influence du bruit.

5. Convoluez ce son par le masque R = [11111]/5. A nouveau, tracez le son ainsi lisse, et ecoutez l’effet du lissage.

3 Mesure d’une fonction de transfert en frequences

Une maniere de caracteriser un appareil est de mesurer sa “fonction de transfert” en frequences. Cela peut se faire enfaisant passer a travers l’appareil des signaux sinusoidaux de frequences croissantes, et de mesurer l’amplitude du signalen sortie de l’appareil (generalement cette amplitude dimimue lorsque la frequence augmente, c’est le cas de l’oreillehumaine qui n’entend plus rien (amplitude nulle) pour des frequences superieures a 20000 Hertz (cas d’une oreille neuveet en bonne sante). Le but de l’exercice est de realiser une simulation de mesure d’une fonction de transfert (on connaitla reponse impulsionnelle de l’appareil, disponible dans le fichier de donnees psf.txt sur le BV).

1. Lire la reponse impulsionnelle dans une variable h. Tracer h en fonction du temps (creez un vecteur t1 pour letemps, sachant que le pas d’echantillonnage temporel est δt = 0.01 s)

2. Creez un nouveau vecteur de temps t allant de 0 a 10 s par pas de δt.

3. Creez un signal f contenant la sinusoide f = cos(2πνt) de frequence ν = 1. Tracez f en fonction de t

4. Convoluez f par h (on l’appellera g) et tracez le resultat sur la meme figure. Verifiez que la frequence de g est lameme que celle de f .

5. Calculer l’amplitude maximale de g, verifiez que vous obtenez un nombre compris entre 0 et 1 (g correspond en faita la valeur de la fonction de transfert pour ν = 1).

6. Au moyen d’une boucle for, faites varier ν entre 1 et 40 Hz par pas de 0.1 Hz. Pour chaque valeur de ν, calculer f ,puis g et stocker l’amplitude maximale de g dans un vecteur T .

7. Tracer en T en fonction de la frequence (utilisez une echelle log-log).

8. Pour quelles valeurs de ν l’amplitude du signal de sortie sera-t-elle plus faible que le dixieme de celle du signald’entree ?

1

Page 2: exos_08 (1)

4 Bord du disque solaire

Une image d’une partie du Soleil a ete realisee au foyer d’un telescope equipe d’une camera CCD. L’image est disponiblesur le BV (bord.jpg). On souhaite mesurer precisement la position du bord du disque solaire pour une ligne de l’image.Ce bord n’est pas “franc”, c’est a dire que la luminosite croit de maniere progressive quand on s’approche du bord. Unemaniere de definir le bord solaire est de calculer le point d’inflexion (maximum de la derivee) du profil de luminosite.

1. Visualisez-l’image avec imshow ou imagesc .

2. Seconde etape : extraction du profil de luminosite. Pour cela mettez dans un vecteur profil la ligne de votre choix(il sera peut-etre necessaire de convertir les valeurs du profil en nombres reels grace a la commande double). Tracezle profil.

3. Calculez et tracez la derivee numerique du profil (convoluez par le masque de Prewitt [1, 0,−1]). Eliminez le dernierpoint, aberrant (remplacez-le par l’avant-dernier).

4. Vous constatez la presence de bruit, filtrez-le par une moyenne glissante sur 5 points. Puis determinez, a l’aide dela commande find, l’abcisse du maximum de cette derivee filtree. Verifiez sur l’image que ca correspond bien al’abcisse du bord du Soleil.

5. L’image bord.jpg etait une image a faible bruit. Essayez maintenant de determiner la position du bord du Soleilsur une image a faible temps de pose, beaucoup plus bruitee : bord 0722.bmp. Vous aurez besoin de lisser le profilavand calcul de la derivee.