Vous êtes sur la page 1sur 27

Institut Des Sciences Appliquées et Économiques

Le cnam – Liban

Techniques avancées en électronique analogique et numérique (2)


ELE109

Manipulation n° 3

Filtrage numérique RIF et RII : mise en œuvre de quelques


applications en utilisant le logiciel MATLAB

Garen Arabkirlian
Contents
Etude d’un exemple .......................................................................................................................................................... 4
Etude théorique à la main............................................................................................................................................. 4
1- Tableau .............................................................................................................................................................. 4
2- Graph................................................................................................................................................................. 4
3- Valeur maximale de Yn ..................................................................................................................................... 4
Vérification avec MATLAB ............................................................................................................................................. 5
1- Ecrire le programme suivant ............................................................................................................................. 5
2- Exécuter le programme. Est-ce OK par rapport à construction manuelle précédente ? ................................. 5
3- Taper y et vérifier les valeurs obtenues manuellement. .................................................................................. 5
4- Indiquer sur la figure obtenue les régimes permanents, et vérifier bien la durée des transitoires. ................ 6
5- Si M et N sont respectivement la taille du tableau des Xn, et la taille de la réponse impulsionnelle. Quelle
est la taille de la convolution Y ?............................................................................................................................... 6
Réponse en fréquence et fonction de transfert ............................................................................................................... 7
Etude générale avec X sinusoïdal, et filtrage de réponse impulsionnelle H ................................................................. 7
1-Application ............................................................................................................................................................. 7
2- La durée des régimes transitoires......................................................................................................................... 7
3-Retrouver les valeurs des gains statiques, des gains aux extremums ................................................................... 7
4-A partir de la courbe de phase retrouver la valeur du retard induit par ce filtrage .............................................. 8
5-Modifier le programme pour simuler un signal moyenné sur un nombre N d’échantillons qui sera définis
comme paramètre. Utiliser la fonction « ones ». ..................................................................................................... 8
6-Réécrivez le programme pour le mettre sous forme d’une fonction « moyenne_FIR.m » qui reçoit en entrées x
et N et renvoie en sortie y. Cette fonction sera appelée par un programme principal « main.m », dans lequel
seront définis les paramètres d’entrée ainsi que les éventuels commandes pour tracer des figures. .................... 8
1ère partie : filtrage d’un signal sinusoïdal ................................................................................................................... 9
7-Pour une durée d’observation « duree » du signal, que doit vérifier le paramètre N pour Pouvoir calculer la
valeur moyenne sur, au moins, une période du signal. ............................................................................................ 9
8- Expliquez (sans le programmer) ce qu’il faut modifier au niveau de la fonction « moyenne_FIR.m » pour
pouvoir calculer la valeur efficace du signal. ............................................................................................................ 9
9- Tracez, on se basant sur le développement théorique précédent les réponses en fréquence (amplitude et
phase) de ce filtrage pour différentes valeurs de N. ................................................................................................ 9
10- Retrouver, pour une valeur de N=7, les valeurs des gains statiques et des gains aux extremums ainsi que le
nombre de ces derniers en fonction de N. Commentez le résultat obtenu. .......................................................... 11
11-Pour la même valeur de N, retrouvez à partir de la réponse en phase du filtre, la valeur du retard induit par
ce filtrage ................................................................................................................................................................ 11
2ème partie : filtrage d’un signal audio : lissage ........................................................................................................ 11
11- Lire le fichier « stereo1.wav » ou « stereo2.wav » en utilisant la commande « audioread ». Vous pouvez
extraire les caractéristiques de ce fichier (taille, fréquence d’échantillonnage et nombre de bits de
quantification). Pour écouter l’enregistrement sur le casque, vous pouvez utiliser la commande « sound ». ..... 11
13- Appliquez la fonction précédente « moyenne_FIR.m » aux signaux donnés par audioread (valeur de N=101).
Pour chaque canal (droite ou gauche), comparer les signaux en entrée (x) et en sortie (y). Vous avez le choix
entre appliquer le traitement à un ou aux deux canaux. A ce niveau vous pouvez également appliquer des gains
différents aux deux canaux droite et gauche. Attention de ne pas mettre des gains très importants. (Entre 0
(mute), 2 (amplification de 6dB), ½ (atténuation de 6dB))..................................................................................... 12
14- Générer à partir du signal filtré un nouveau fichier « stereo1_traite.wav ». Pour cela utilisez la command «
audiowrite ». ........................................................................................................................................................... 14
15- Faite une écoute comparative ; signal original vs signal traité. Quelle différence constatez-vous ? Expliquez ?
................................................................................................................................................................................. 14
3ème partie : filtrage d’un signal sinusoïdal : retard .................................................................................................. 14
16- Modifiez la fonction « moyenne_FIR.m » pour qu’elle provoque un retard de (N-1) Te au niveau du signal
original. Nommez « retard_FIR.m » la nouvelle fonction. ...................................................................................... 14
17- Appliquez cette fonction sur une des voies du fichier « enregistrement.wav ». Ajuster une la valeur de
retard (N) pour que le retard corresponde à 100ms. Régénérer le fichier .wav traité et l’écouter avec votre
casque. Que constatez-vous ?................................................................................................................................. 15
Les filtres RII .................................................................................................................................................................... 16
1- Tracez la réponse en amplitude de ce filtre pour différentes valeurs de a (par exemple a = [-0.5 -0.9 -0.99]).
Pour cela vous pouvez utiliser directement la fonction freqz. ............................................................................... 16
2- Que se passe-t-il lorsque « a » n’est plus dans l’intervalle [-1 0] ? Discutez la stabilité de ce filtre en fonction
de la valeur de « a ». Vous pouvez visualiser la position du pôle. Le programme ci-dessous vous permet de
visualiser la position du pôle par rapport au cercle unité. ..................................................................................... 17
3- Tracez les réponses impulsionnelle et indicielle (réponse à un échelon) de ce filtre et discutez les résultats
obtenus. .................................................................................................................................................................. 19
Application : simulation sur MATLAB.............................................................................................................................. 20
1-Reprenez le programme du paragraphe « II 3 d » et le modifier pour implémenter un filtre RII de second ordre
dont la fonction de transfert................................................................................................................................... 20
2- Pour a1=-1.2. Discutez pour différentes valeurs de a2 le comportement du système. ..................................... 22
3-Que se passe-t-il lorsque a2 devient grand ? Discutez la stabilité de ce filtre en fonction de la valeur de a2.
Vous pouvez, également, visualiser la position des pôles. ..................................................................................... 25
Filtre à encoche de second ordre : Notch filter .............................................................................................................. 26
Etude d’un exemple
Etude théorique à la main
1- Tableau

2- Graph

3- Valeur maximale de Yn
𝑌𝑛(max) = 5

Yn est max quand Xn est max puisque notre system est tel que la sortie Yn dépend de l’entrée Xn.

Xn Yn

Conv(x,h)
Vérification avec MATLAB
1- Ecrire le programme suivant

2- Exécuter le programme. Est-ce OK par rapport à construction manuelle précédente ?

Les courbes Yn(theorique) et plot(y,’r* :’) sont presques identiques.

3- Taper y et vérifier les valeurs obtenues manuellement.

Matlab output
of discrete Yn points
Comparaison des point Yn théoriques et Pratique générés par MATLAB. Ils sont identiques !

4- Indiquer sur la figure obtenue les régimes permanents, et vérifier bien la durée des transitoires.

𝑇(𝑇𝑟𝑎𝑛𝑠𝑖𝑡𝑜𝑖𝑟𝑒) = 13𝑇 − 10𝑇 = 3𝑇

5- Si M et N sont respectivement la taille du tableau des Xn, et la taille de la réponse impulsionnelle.


Quelle est la taille de la convolution Y ?
𝑡𝑎𝑖𝑙𝑙𝑒 𝑑𝑒 𝑌 = 𝑀 + 𝑁 − 1
Réponse en fréquence et fonction de transfert
Etude générale avec X sinusoïdal, et filtrage de réponse impulsionnelle H
1-Application

Regime transitoire

|𝑌𝑛| 0.8
𝐺𝑎𝑖𝑛 = = = 0.8
|𝑋𝑛| 1
∆𝑡 ∗ 2𝜋 (16 − 19) ∗ 2𝜋 −3 ∗ 2𝜋
∆∅ = = = = −0.3𝜋 𝑟𝑎𝑑
𝑇 (39 − 19) 20

2- La durée des régimes transitoires


𝑇(𝑡𝑟𝑎𝑛𝑠𝑖𝑡𝑜𝑖𝑟𝑒) = 7 𝑇

3-Retrouver les valeurs des gains statiques, des gains aux extremums
𝑝𝑜𝑢𝑟 𝑓 = 0 ==> 𝐺𝑎𝑖𝑛(𝑠𝑡𝑎𝑡𝑖𝑞𝑢𝑒) = 1
1 1
𝐺𝑎𝑖𝑛(𝑚𝑎𝑥) ≈ | |
𝑁 sin(𝜋𝑥)
Or aux extrêmes on a : 𝐺𝑎𝑖𝑛 = 1
1 1 𝜋 2𝑘+1
D’où, 1 = 𝑁 |sin(𝜋𝑥)|  𝜋𝑥. 𝑁 = 2 + 2𝑘𝜋  𝑥 = 2𝑁
pour 𝑥 > 0 (puisque à x=0 on a GainDC)

2(1)+1 1 1
Alors, pour 𝑘 = 1, 𝑥1 = = 0.214 𝐺(𝑥1) = ∗ = 0.23
2∗7 7 sin(3.14∗0.214)

2(2)+1 1 1
pour 𝑘 = 2, 𝑥2 = 2∗7
= 0.357 𝐺(𝑥2) = 7 ∗ sin(3.14∗0.357) = 0.158

2(3)+1 1 1
pour 𝑘 = 3, 𝑥3 = 2∗7
= 0.5 𝐺(𝑥3) = 7 ∗ sin(3.14∗0.5) = 0.143

4-A partir de la courbe de phase retrouver la valeur du retard induit par ce filtrage
1
𝐷𝑒𝑙𝑎𝑦 = 3 ∗ 𝑇𝑒 = 3 ∗ = 0.3 𝑚𝑠
10000
5-Modifier le programme pour simuler un signal moyenné sur un nombre N d’échantillons qui sera définis
comme paramètre. Utiliser la fonction « ones ».

6-Réécrivez le programme pour le mettre sous forme d’une fonction « moyenne_FIR.m » qui reçoit en
entrées x et N et renvoie en sortie y. Cette fonction sera appelée par un programme principal « main.m »,
dans lequel seront définis les paramètres d’entrée ainsi que les éventuels commandes pour tracer des
figures.
1ère partie : filtrage d’un signal sinusoïdal
7-Pour une durée d’observation « duree » du signal, que doit vérifier le paramètre N pour Pouvoir calculer la
valeur moyenne sur, au moins, une période du signal.
Pour qu’on puisse calculer la valeur moyenne, (ici nulle pour le signal sinusoïdal), N doit être un multiple de Fe/f.

8- Expliquez (sans le programmer) ce qu’il faut modifier au niveau de la fonction « moyenne_FIR.m » pour
pouvoir calculer la valeur efficace du signal.
1
Valeur efficace du signal : 𝑦 = √𝑁 ∗ 𝑥 2

9- Tracez, on se basant sur le développement théorique précédent les réponses en fréquence (amplitude et
phase) de ce filtrage pour différentes valeurs de N.
10- Retrouver, pour une valeur de N=7, les valeurs des gains statiques et des gains aux extremums ainsi que
le nombre de ces derniers en fonction de N. Commentez le résultat obtenu.
𝐺𝑎𝑖𝑛𝑠𝑡𝑎𝑡𝑖𝑞𝑢𝑒 = ∑𝑁−1
𝑘=0 ℎ𝑛 = 1

2𝑘+1
Or on a déjà démontré que, 𝑥 = 2𝑁
pour 𝑥 > 0 (puisque à x=0 on a GainDC)

2(1)+1 1 1
pour 𝑘 = 1, 𝑥1 = = 0.214 𝐺(𝑥1) = ∗ = 0.23
2∗7 7 sin(3.14∗0.214)

2(2)+1 1 1
pour 𝑘 = 2, 𝑥2 = 2∗7
= 0.357 𝐺(𝑥2) = 7 ∗ sin(3.14∗0.357) = 0.158

2(3)+1 1 1
pour 𝑘 = 3, 𝑥3 = 2∗7
= 0.5 𝐺(𝑥3) = 7 ∗ sin(3.14∗0.5) = 0.143

11-Pour la même valeur de N, retrouvez à partir de la réponse en phase du filtre, la valeur du retard induit
par ce filtrage
𝑁−1 1
𝜏= 𝑇𝑒 = 3 ∗ = 0.3𝑚𝑠
2 10000
Pareille au pratique !

2ème partie : filtrage d’un signal audio : lissage


11- Lire le fichier « stereo1.wav » ou « stereo2.wav » en utilisant la commande « audioread ». Vous pouvez
extraire les caractéristiques de ce fichier (taille, fréquence d’échantillonnage et nombre de bits de
quantification). Pour écouter l’enregistrement sur le casque, vous pouvez utiliser la commande « sound ».

Code :

Output :

En plus on entend le file audio ‘Sterio1.wav’


13- Appliquez la fonction précédente « moyenne_FIR.m » aux signaux donnés par audioread (valeur de
N=101). Pour chaque canal (droite ou gauche), comparer les signaux en entrée (x) et en sortie (y). Vous avez
le choix entre appliquer le traitement à un ou aux deux canaux. A ce niveau vous pouvez également
appliquer des gains différents aux deux canaux droite et gauche. Attention de ne pas mettre des gains très
importants. (Entre 0 (mute), 2 (amplification de 6dB), ½ (atténuation de 6dB)).
Code :
14- Générer à partir du signal filtré un nouveau fichier « stereo1_traite.wav ». Pour cela utilisez la command
« audiowrite ».
On ajoute de plus au code de l’exercice 13, le suivant :

15- Faite une écoute comparative ; signal original vs signal traité. Quelle différence constatez-vous ?
Expliquez ?
On constate que les signaux traités sont beaucoup plus silencieux en une sorte que les signaux avec des fréquences
hautes sont annulées. Ceci est un comportement d’un filtre passe bas.

En plus, le signal traité avec le Gain augmenté à Gain=2, on constate que le volume est plus élevé que celle de
l’originale.

3ème partie : filtrage d’un signal sinusoïdal : retard


16- Modifiez la fonction « moyenne_FIR.m » pour qu’elle provoque un retard de (N-1) Te au niveau du signal
original. Nommez « retard_FIR.m » la nouvelle fonction.
Code :

La fonction :
17- Appliquez cette fonction sur une des voies du fichier « enregistrement.wav ». Ajuster une la valeur de
retard (N) pour que le retard corresponde à 100ms. Régénérer le fichier .wav traité et l’écouter avec votre
casque. Que constatez-vous ?

Pour que le retard = 0.1 s

𝑁 = 0.1/0.0001 = 1000
On remarque une sorte d’écho entre les deux signaux, ceci est causé par le retard de 0.1 ms.

Si on augmente N, le retard augmente, et par suite l’écho devient de plus en plus notable.

Les filtres RII

1- Tracez la réponse en amplitude de ce filtre pour différentes valeurs de a (par exemple a = [-0.5 -0.9 -
0.99]). Pour cela vous pouvez utiliser directement la fonction freqz.
Code :
Pour 𝑎 = −0.5

Pour 𝑎 = −0.9

Pour 𝑎 = −0.99

2- Que se passe-t-il lorsque « a » n’est plus dans l’intervalle [-1 0] ? Discutez la stabilité de ce filtre en
fonction de la valeur de « a ». Vous pouvez visualiser la position du pôle. Le programme ci-dessous vous
permet de visualiser la position du pôle par rapport au cercle unité.
Pour a=-0.5

Pour a=-0.9

Pour a=-0.99

Pour a qui est hors de l’intervalle [-1 0], le système devient instable.
3- Tracez les réponses impulsionnelle et indicielle (réponse à un échelon) de ce filtre et discutez les résultats
obtenus.
Pour 𝑎 = −0.5

Pour 𝑎 = −0.9
Pour 𝑎 = −0.99

Application : simulation sur MATLAB


1-Reprenez le programme du paragraphe « II 3 d » et le modifier pour implémenter un filtre RII de second
ordre dont la fonction de transfert

Code :
2- Pour a1=-1.2. Discutez pour différentes valeurs de a2 le comportement du système.
Les résultats :
3-Que se passe-t-il lorsque a2 devient grand ? Discutez la stabilité de ce filtre en fonction de la valeur de a2.
Vous pouvez, également, visualiser la position des pôles.
Pour 𝑎1 = −1.2

Pour 0 ≤ 𝑎2 < 0.2  System instable

Pour 0.2 ≤ 𝑎2 < 0.4  System stable, 2 pôles réelles, pas de résonnance

Pour 0.4 ≤ 𝑎2 < 1  System stable, 2 pôles complexes, avec résonnance

Pour 𝑎2 ≥ 1  System instable


Filtre à encoche de second ordre : Notch filter

On compare le signale d’entrée (bleu) avec celle de la sortie (rouge), sur semilog.

Vous aimerez peut-être aussi