63 0 1MB
ELE109, HTO & FOD
Filtrage numérique
TP2 : Filtrage numérique RIF et RII : mise en œuvre de quelques applications en utilisant le logiciel MATLAB
Ce TP se déroulera en trois séances. Le but des deux premières séances est de vous familiariser avec quelques outils de traitement numérique du signal en utilisant le logiciel MATLAB. La troisième séance sera dédiée à l’implémentation de quelques exemples de filtres numériques sur une plateforme matérielle. Ce TP porte plus particulièrement sur la mise en place d’opérations de filtrage numérique par structures transverses (RIF) et récursives (RII). Pour chaque structure de filtrage et après rappels de quelques notions utiles, nous étudierons des applications sur des exemples concrets et sur des signaux audio.
I
1
Chaîne de traitement de signal numérique
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
Le traitement numérique des signaux est une technique dont la théorie et les avantages sont en fait connus depuis longtemps, mais qui n’est devenue vraiment exploitable que depuis peu grâce aux progrès des composants électroniques en puissance de calcul (ordinateurs, processeurs de signaux ……). De nombreux filtres ou traitements (en particulier les filtres à phase linéaire) ne peuvent s’effectuer qu’en numérique (ou du moins qu’au moyen d’échantillons du signal). I1
Eléments constitutifs La figure 1, schématise le synoptique d’une chaîne de traitement du signal. Echantillons numériques sur n bits:
xn
yn
Echantillonneur bloqueur
Lissage Anti-repliement CN A
Entrée analogique
x(t)
F1
F2
CA N
Calculateur
Sortie analogique
y(t)
Echantillons analogiques:
x’n Acquisition
Traitement
Restitution
Figure 1 : Chaîne de traitement numérique du signal • • • • •
L'échantillonneur-bloqueur "discrètise" le signal en prélevant des échantillons à une cadence d’échantillonnage Fech = 1/Tech et les envoie au CAN (signal x’n) Le CAN permet la numérisation de chaque échantillon et fournit les xn. Le « Calculateur » (microcontroleur, ordinateur, processeur de signal, ou circuit câblé …) permet de faire des traitements sur des données numériques. Un signal se sortie numérique peut être fourni sous formes d’échantillons yn, à la même cadence Fech de préférence. Ces échantillons peuvent restituer un signal de sortie analogique par passage par un CNA et un filtre F2 dit de lissage (jouant le rôle d’interpolateur).
Le rôle de F1 (filtre anti-repliement) est expliqué plus loin. Dans le cadre de ce TP, nous nous plaçons au niveau de l’étage de traitement situé entre les deux convertisseurs. Dans un dernier TP nous toucherons plus l’aspect expérimental en implémentant quelques traitements sur un processeur de signal numérique ou DSP (pour Digital Signal Processor).
2
2017 - 2018
ELE109, HTO & FOD I2
Filtrage numérique
Echantillonnage et reconstitution
I2a
Rôle de l'échantillonneur bloqueur Soit un signal x(t) sinusoïdal à échantillonner, de fréquence F. Et soit Fech la cadence de prise en compte des échantillons. signal d'entrée sinusoidal avec F < Fech/2 Echantillonnage sans maintient Tech = 1/Fech Ve
V'e
T=1/F
Echantillonnage avec maintient Ve
V'e
Tech = 1/Fech
Figure 2 : Principe de l’échantillonneur-bloqueur Le maintient entre deux échantillons permet: -En acquisition pour avoir le temps de convertir en binaire les valeurs -En restitution pour avoir un signal d'énergie suffisante I2b
Spectre du signal échantillonné, reconstitution
Soit un signal Ve sinusoïdal, de fréquence F, on montrerait qu'il fournit après échantillonnage toute une série de fréquences supplémentaires Fech-F Fech+F 2.Fech-F 2Fech+F 3.Fech-F 3.Fech+F ...... Fech Pour deux fréquences F1 et F2 < , on aura donc: 2
3
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
F2 idéal Non réalisable filtre réel F2 de lissage
F2
Fech-F2
F1
Fech+F2 2.Fech-F2
2.Fech+F2
2.Fech-F1 2.Fech+F1
Fech-F1 Fech+F1
etc ... F Fech/2
2.Fech
Fech
Figure 3 : Traitement de deux raies sans repliement spectral Tant que les raies Fech _Fi sont au delà de Fech/2, on voit donc que par suppression des fréquences élevées au delà de Fech/2, on peut reconstituer le signal de départ. Le filtre à utiliser est un passe bas dit de "lissage". Cas limite F = Fech/2:
1/Fech F = Fech/2 Limite théorique de Shannon
Il faut donc toujours avoir F < Fech/2 (sauf cas très particulier de "sous échantillonnage"). C'est le théorème de Shannon. ➢ Le filtre de lissage : Un filtre idéal laisserait tout passer à Fech /2 et rien au delà, ce n’est évidemment pas possible. La reconstitution est en fait très facile pour F1, et un peu moins pour F2 qui est plus proche de Fech/2 .
mauvais lissage
bon lissage
Pour reconstituer proprement (avec très peu de distorsions) le signal de départ jusqu’à des fréquences proches de Fech/2, le filtre de lissage réel devra donc être performant : - Le plus plat possible ou très peu oscillant jusqu’à presque Fech/2 - Atténuer déjà à Fech/2 de 40 à 50dB. On choisit des filtres classiques analogiques de Butterwoth ou Tchebycheff, souvent d’ordre assez élevé (6 ou 7 pour avoir une coupure raide du signal). I2c
Repliement de spectre
➢ Cas d’un signal sinusoïdal Pour une sinusoïde de fréquence F2 à l'entrée et si F2 > Fech /2 :
4
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
filtre analogique F2 de lissage réel
Fech-F2
2.Fech-F2
F2
Fech+F2
2.Fech+F2
etc ... F Fech/2
2.Fech
Fech
Figure 4 : effet du repliement spectral sur la reconstruction d’un signal sinusoïdal Le filtrage récupère la fréquence Fech-F2 et non F2 !! Etude qualitative autour de Fech: V'e
Battement Très Basse Fréquence
Ve F
Fech
Figure 5 : filtrage d’une raie avec repliement spectral Pour F Fech, la fréquence de V'e est Fech - F 0 !!!. C'est un "battement" à très basse fréquence ou à fréquence nulle (si F = Fech ), que l'on voit sur la figure ci-dessus. Ce phénomène se retrouverait autour de 2.Fech de 3.Fech ... de k.Fech ! Application du repliement de spectre: Ce phénomène de battement en basse fréquence est mis à profit par les oscilloscopes à échantillonnage (permettant de visualiser des signaux de 50Mhz à plusieurs dizaines de GHz). On l'utilise maintenant également dans certaines techniques de démodulation AM FM en radiocommunication. On peut citer aussi l'effet stroboscopique qui est en fait un échantillonnage par éclairs lumineux.
5
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
➢ Cas d'un signal de largeur de bande F: Filtre de lissage parfait
Le filtre de lissage (F2 du schéma général), limitant la bande à Fech/2, ne permet de reconstituer le signal analogique de départ que dans le cas ou Fmax < Fech/2.
Pas de repliement: Reconstitution possible
-F
F
-F
+F
etc ... F
Fech/2
Le rôle du filtre F1 optionnel (du schéma général) est de limiter la bande à Fech/2 avant échantillonnage, afin d'éviter l'apparition de fréquences parasites, on le nomme filtre "anti repliement". Il sert aussi, dans le cas d'un passe bande, à supprimer la composante continue qui doit souvent être nulle en traitement de signal.
+F
2.Fech
Fech
Fmax
Repliement de spectre Reconstitution impossible
-F
F
+F
-F
+F
Fech/2 Fmax
Figure 6 : filtrage d’un signal large bande Le signal de la figure du haut à un spectre avec Fmax < Fech/2 donc F1 n’est pas utile. Le signal de la figure de bas à un spectre dépassant Fech/2, si on l’échantillonne sans filtrage initial, des battements parasites surviendront et ceux ci ne pourront plus être éliminés par la suite, reconstitution impossible ! Ce filtre anti repliement est ainsi indispensable dans de nombreuses applications, comme par exemple avant échantillonnage du signal audio en vue d'enregistrement sur compact disque. I2d Traitements temps réel ➢ Traitement "en ligne" ou "au fil de l’eau" Soit Tech la période d'échantillonnage du signal X à traiter. Ce traitement consiste en trois phases: acquisition d’un échantillon Xn, traitement (à partir de Xn, et d’un certain nombre d’échantillons précédents pouvant provenir de différentes sources), sortie d’un échantillon Yn du signal de sortie Y. On doit toujours conserver la même cadence d'échantillonnage pour le signal de sortie traité Y (Fech entrée = Fech sortie), l’échantillon Yn devra être fourni avant l’acquisition du nouvel échantillon Xn+1. Il faudra donc que : Tacquisition + Tcalcul + Tsortie < Tech Filtre sur N = 3 échantillons
Ve FechVe = 1/Te=Fech Echantillons de Vs FechVs = FechVe = Fech si Tc < Te ! temps réel
Te
Vs Filtre de lissage à Fech/2 Fmax = Fech/2
Tc Tc = Temps acquisition d’un échantillon +durée calculs + temps sortie
Figure 7 :principe du traitement temps réel au fil de l’eau
6
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
➢ Traitement par bloc On fait l'acquisition de N valeurs du signal X. Le traitement s'effectue ensuite. On travaille parfois ainsi. Fech de sortie est inférieure à Fech d’entrée. N = 4 échantillons
Te
Ve FechVe = 1/Te Tc Echantillons de Vs FechVs FechVe/N FechVs FechVe/N si Tc < Te Tc = Temps acquisition du dernier échantillon + Temps calculs + Temps sortie Vs Filtre de lissage à FechVe/2 ! Vs Nouveau Filtre de lissage à FechVs/2 Mais Fmax entrée limitée à FechVs/2 !
Figure 8 :principe du traitement temps réel par bloc
7
2017 - 2018
ELE109, HTO & FOD
II II 1 a
Filtrage numérique
La convolution Système linéaire
x
Système linéaire
y
Te
instants d'échantillonnage identiques pour tous les signaux: t = nTe = n/Fe Figure 9 :système linéaire invariant dans le temps Linéarité: si x = x1+k.x2 alors y = y1 + k.y2 Invariant dans le temps: x(t-) donne y(t-) Certains systèmes varient dans le temps, mais si cette variation est lente, on peut les classer dans cette catégorie. On ne s'intéresse désormais qu’aux valeurs aux instants d'échantillonnage nTe. II 1 b Réponse impulsionnelle (d'un système linéaire) Si l'entrée x est une seule impulsion valant 1 pour t = 0, la réponse du système se nomme la réponse impulsionnelle H . Elle peut être de durée finie ou infinie : On distingue en effet deux types de filtres : - FIR / RIF : Finite Impulse Response / Réponse Impulsionnelle finie - IIR / RII : Infinite Impulse Response / Réponse Impulsionnelle Infinie II 1 c Construction de la réponse yn à une suite d’échantillons xn : la convolution Chaque échantillon xk, d'amplitude xk, donne une réponse égale à xk.H Toutes ces réponses sont à sommer avec le décalage approprié. On peut représenter cela très facilement au moyen de l’exemple 1 suivant qui est un filtre à réponse impulsionnelle finie de N = 3 échantillons: Une réponse de trois échantillons (les suivants éventuellement négligeables ou nuls)
entrée x x0 =1
Sortie y = réponse impulsionnelle H h0 h1 h2
t = 0 Te 2Te t=0 Ce filtre est évidemment « à réponse impulsionnelle finie » ou « FIR »
8
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
Signal xn: h0 h1 Il faut sommer:
x0 x1 x2 x3 x4 x5 .... ..... xn
h2
x0 h0
h1 h2
+ x1 Réponse yn:
h0 h1 h2
+ x2 etc ...
h0 h1 h2
+ x3 h0
h1
+ x4
h2 etc
On a
y0 = x0.h0 y1 = x1.h0 + x0.h1 y2 = x2.h0 + x1.h1 + x0.h2 y3 = x3.h0 + x2.h1 + x1.h2 y4 = x4.h0 + x3.h1 + x2. h2 etc ... yn = xn.h0 + xn-1.h1 + xn-2.h2
terme général
Soit N la taille du filtre. Pour un filtre à réponse impulsionnelle finie, l’expression finale sera identique avec N tendant vers l’infini. A partir de y3 (indice = taille N de la réponse impulsionnelle H), on obtient y en sommant toujours N=3 termes. On voit que la sortie se calcule en permanence à partir de xn et des N-1 = 2 échantillons précédents, par l’expression: Cette expression se nomme la Convolution de x avec h. On écrit parfois y = x * h (produit de convolution). N 1
yn xn k .hk k 0
Conclusion : A l’arrivée d’un signal xn, un régime transitoire dure donc exactement NTe soit la durée de la réponse impulsionnelle. A tout instant, la sortie est fonction de la nouvelle entrée xn et de N-1 valeurs de l’entrée précédente. Donc prédictive exactement. Pour un filtre IIR, N est infini, le régime transitoire est ‘théoriquement’ infini, mais heureusement pas en pratique ! c’est un peu comme une exponentielle en analogique qui bien que théoriquement infinie, ne varie pratiquement plus au bout de 4 à 5 constantes de temps
9
2017 - 2018
ELE109, HTO & FOD II 1 d
Filtrage numérique
Etude d’un exemple
On désire effectuer la convolution entre : Les échantillons xn La réponse impulsionnelle H
0 1 2 3 4 5 5 5 5 5 0 0 0 0 0,6 0,3 0,1 (trois échantillons h0 h1 h2)
L’entrée s’établit à t = 0 en rampe (de pente 1), puis est constante (à 5) et enfin est constante (à 0). Le signal d’entrée se modifie donc 3 fois, on devra donc observer 3 régimes transitoires et trois régimes permanents ➢ Etude théorique à la main 1) Compléter le tableau en annexe (détacher celui fourni en dernière page …), en s’inspirant de l’explication physique toute simple de la convolution, somme de réponse impulsionnelle, donc ligne par ligne, on ajoutera ensuite verticalement. 2) Tracer sur un même chronogramme (également sur la feuille en dernière page) les valeurs des Xn et des Yn (marquer bien les différents points et les relier par une ligne pointillée pour mieux observer l’allure générale du signal. Bien indiquer sur ce chronogramme les régimes permanents et les régimes transitoires. Remarque : les transitoires durent théoriquement NTe = 3Te mêmes si certains paraissent plus courts… 3) Que vaut la valeur maximale de Yn, est-ce normal et pourquoi ? ➢ Vérification avec MATLAB 1) Ecrire le programme suivant x = [ 0 1 2 3 4 5 5 5 5 5 0 0 0 0 ]; h = [0.6 0.3 0.1]; y = conv(x,h); plot(x,'k*-'); grid on; hold on; plot(y,'r*:'); hold off;
(Vous n’êtes pas obligé d’écrire les commentaires…) % Tableau des xn % Réponse impulsionnelle de trois coefficients % Convolution de x et de h
% Tracé des xn, en noir, étoiles, reliés par trait % Quadrillage % Pour tracer une seconde courbe sur la même figure % Tracé des yn, en rouge, étoiles, reliés par pointillés
2) Exécuter le programme. Est ce Ok rapport à construction manuelle précédente ? 3) Taper y et vérifier les valeurs obtenues manuellement. 4) Indiquer sur la figure obtenue les régimes permanents, et vérifier bien la durée des transitoires 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 ?
10
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
III
Réponse en fréquence et fonction de transfert
III 1
Etude générale avec X sinusoïdal, et filtrage de réponse impulsionnelle H X = A.cos(2ft) xn = A.cos(2nf/Fe) ou xn = A.cos(2n.fTe)
On pose x = fréquence normalisée: x = f/Fe = fTe sans dimension. xn = Acos(2nx)
0 x 0.5 0 f Fech/2
Comme en analogique, pour calculer une fonction de transfert G qui apportera atténuation et déphasage en fonction de f, on introduit la notation complexe: Soit Xn = Ae2inx avec xn = Reel(Xn) Yn G( x ) .ei. ( x ) Xn G(x) est la fonction de transfert complexe du système Le module du gain |G(x)| peut s'exprimer en dB: GdB=20.log(|G(x)|) Le déphasage est (x )
Alors : G( x )
N 1
Pour une réponse impulsionnelle H, on obtient la sortie par la convolution : Yn X n k .hk k 0
2inx
-2ikx
Or : Xn-k = Ae .e Donc Xn-k signifie donc déphasage de –2kx = -2kfTe Rappel : Si une sinusoïde sin2ft est retardée de , elle s’écrit : sin2f(t-) = sin(2ft – 2f) = sin(2ft-) Un retard provoque donc un déphasage de –2f. Donc Xn-k signifie un retard de k.Te Il vient N 1
N 1
N 1
k 0
k 0
k 0
Yn X n k .hk Ae 2inxe 2ikx .hk Xn e 2ikx .hk
D’où Yn N 1 2ikx e .hk Xn k 0 On pose souvent (pour une étude plus générale dite transformée en z) : z e2ix Yn N 1 k Et alors : G( z ) z .hk avec z e2ix Xn k 0 G( x )
III 2 Gain statique (pour f = 0) Valable donc seulement pour un passe bas ! N 1
On fait f = 0, donc x = 0 ou z = 1, il vient immédiatement : G0 hk k 0
Pour avoir donc un gain continu ou très basse fréquences, de 1, il faut que la somme des coefficients soit égale à 1 III 3
Valeur max du Gain pour tout filtre N 1
G0 hk
Pratique pour étudier tout débordement
k 0
11
2017 - 2018
ELE109, HTO & FOD
IV
Filtrage numérique
Les filtres RIF
IV 1
Description La structure (qui peut être câblée ou programmée) réalisant ce filtrage se nomme filtre "transversal" comme le suggère la figure suivante. Il est évident que si on présente à l'entrée un seul échantillon à 1, on récupère en sortie la réponse impulsionnelle du filtre. entrée des échantillons
xn
retards d'un échantillon à chaque fois
xn-1
xn-(N-1) HN-1 HN-2
yn
H1 H0
Figure 1 : synoptique d’un filtre FIR
En adoptant les même notations que celles utilisées dans le TP1, nous pouvons écrire l’équation de récurrence reliant la sortie yn aux entrées xn-k (k=0..N-1) par : N 1
yn hk xn k k 0
La sortie du filtre à un instant nTe est une combinaison linéaire de l’entrée au même instant (nTe) et des N-1 entrées précédentes. IV 2 Calcul de la fonction de transfert en régime sinusoïdal Soit X = A.cos(2ft) le signal analogique en entrée du filtre Le signal échantillonné s’écrit : xn = A.cos(2nf/Fe) = A.cos(2nfTe) On pose x : la fréquence normalisée (grandeur adimensionnelle): x=f/Fe=fTe Comme en analogique, pour calculer une fonction de transfert G qui apportera amplification, atténuation et déphasage en fonction de f (ou de x), on introduit la notation complexe : Xn Ae 2inx
avec xn = Reel(Xn) On définis la fonction de transfert complexe du filtre par : G( x )
Yn G( x ) .ei. ( x ) Xn
G(x) est la fonction de transfert complexe du système Le module du gain |G(x)| peut s'exprimer en dB: GdB=20.log(|G(x)|) Le déphasage est (x )
12
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
En utilisant les notations complexe, la convolution se réécrit : N 1
Yn X n k .hk k 0
Or : Xn-k = Ae2inx.e-2ikx = Xn.e-2ikx Xn-k est une version déphasée de –2kx = -2kfTe, de Xn Rappel : Si une sinusoïde sin2ft est retardée de , elle s’écrit : sin2f(t-) = sin(2ft – 2f) = sin(2ft-) Un retard provoque donc un déphasage de –2f.
Xn-k est une version retardée de k.Te par rapport à Xn Il vient : N 1
N 1
N 1
k 0
k 0
k 0
Yn X n k hk Ae 2inxe 2ikx hk Xn e 2ikx hk
D’où : G( x )
Yn N 1 2ikx e hk Xn k 0
On pose souvent (pour une étude plus générale) la transformée en z en utilisant le changement de variable z e2ix , on obtient : Yn N 1 k G( z ) z .hk Xn k 0 IV 3 Gain statique (pour f = 0) Ce gain correspond à f = 0, donc x = 0 ou z = 1, soit : N 1
G0 hk k 0
Pour avoir donc un gain continu ou très basse fréquences, de 1, il faut que la somme des coefficients de la réponse impulsionnelle soit égale à 1 IV 4
Valeur max du Gain pour tout filtre
Afin d’éviter tout débordement induit par une opération de convolution (filtrage), on calcul le gain max de celui-ci donné par : N 1
G0 hk k 0
13
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
IV 5
Linéarité de la phase On veut toujours réaliser des filtres ne déformant pas le signal dans la bande utile. Or on sait qu’un filtre (comme une ligne de transmission) provoque des distorsions non désirées si la phase n’est pas linéaire, les différentes fréquences constituant le signal ne se propageant alors pas à la même vitesses (dispersion). Tous les filtres analogiques sont par nature dispersifs. La condition pour limiter cela est de s’approcher le plus possible d’un déphasage proportionnel à la fréquence dans toute la bande utile. ➢
Réponse impulsionnelle de taille impaire (l’étude est plus aisée) et Symétrique : Ici taille N = 5 N 1
G( x) e 2ikx .hk =h0+h1.e-2ix+h2e-4ix+ h3e-6ix+ h4e-8ix
h2 h1 h0
h3 h4
0
En mettant e-4ix en facteur et en regroupant deux à deux les hi symétriques, il vient : Te(N-1)/2 = 2Te h1 h3 4ix h0 h4 G ( x) e ( cos 4x cos 2x h2) 2 2 Le premier terme est un déphasage de 4x = 4fTe, et donc un retard pur de 2Te Le second est réel. Un filtre à réponse impulsionnelle finie et symétrique permet donc de réaliser des filtres parfaitement à phase linéaire (et donc sans distorsion due à des temps de propagation différent selon la fréquence), comprenant : - Un gain réel - Un retard pur (obligatoirement mais ce qui n’est nullement un inconvénient …) égal à la N 1 moitié de la durée de la réponse impulsionnelle, soit Te 2 C’est le grand intérêt des filtres numériques à réponse impulsionnelle finie ! Un tel filtre n’as pas d’équivalent en analogique ! ➢ Réponse impulsionnelle Anti-symétrique : Ici taille N = 5 On retrouverait la même propriété mais un déphase supplémentaire de /2 (termes en sinus) qui peut servir dans certaines applications (modulation de phase en quadrature QAM).
h2 h3 h4 h0 h1
IV 6 Exemple : le filtre RIF à moyenne mobile C’est un filtre classique dont les applications sont, nous le verrons multiples selon ses paramètres.
14
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
➢ Réponse impulsionnelle Pour un filtre de taille N, tous les hk = 1/N 1/N
h0
hN-1
N 1
1 N 1 xnk qui est évidemment la moyenne N k 0 k 0 des N valeurs de xn-(N-1) à xn d’où le nom de filtre moyenneur. Différence avec une simple moyenne : Sans parler de convolution, on sait ce qu’est évidemment une simple moyenne ! on peut en effet acquérir N valeurs d’un signal et calculer ensuite la moyenne. La différence réside ici dans le fait que l’on dispose en permanence de la moyenne de l’échantillon présent et des N-1 précédents, d’ou le nom de « moyenne mobile ».
La convolution yn xn k .hk donne alors yn
➢ Calcul de la fonction de transfert Par application de la formule de la somme des N premiers termes d’une progression N 1 1 qN k n géométrique un = aq : k 0 aq a on obtient : 1 q N 1 1 1 e 2iNx 1 eix eiNx e iNx 1 eix sin Nx G( x ) e 2ikx .hk . N 1 e 2ix N eiNx eix e ix N eiNx sin x k 0 On ne s'intéresse au module de G (qui représente un gain ou un affaiblissement) 1 sin Nx G( x) . N sin x Traçons pour différentes valeurs de N, le module de la fonction de transfert due à ce filtre. Remarque très importante : au delà de Fech/2, on observe mathématiquement une sorte de fonction de transfert « miroir ». Il faut se souvenir que l’on ne peut parler de Fonction de transfert que si la fréquence d’entrée est identique à celle de sortie (Système linéaire), donc seulement pour F Fech/2. Au delà de Fech/2, Shannon n’est plus respecté, il y a repliement de spectre. La sortie n’est plus de fréquence F, mais Fech-F, puis 2Fech-F …. f ech k0 N
Les zéros de |G| correspondent à Nx k donc à x = k/N ou f zeros k . N=2
N=3 1
1
0.833 0.75
0.666 0.5
0.5
0.333 0.25
0.166 0
15
0
0.2
0.4
0.6
0.8
1
0
0
0.2
0.4
0.6
0.8
1
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
N=9
N=100 1
1
0.9
0,888
0.8 0.7
0.666
0.6 0.5
0,444
0.4 0.3
0.222
0.2 0.1
0
0
0.2
0.4
0.6
0.8
0 0
1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figure 11 : réponse en fréquence d’un filtre moyenneur FIR en fonction de N Les maximums correspondent presque au numérateur sinNx = 1. D’ou l’équation approchée de la courbe des maximums :
Max( x)
1 1 . N sin x
1 0.9 0.8 0.7 0.6
N = 21
0.5 0.4
La fonction de transfert est très proche d’un |sinx/x| classique, surtout au début. Exemple pour un filtre à N = 21 coefficients :
0.3
Enveloppe d’un classique Sinx/x
0.2 0.1 0 0
0.05 0.1
0.1 5
0.2
0.2 5
0.3
0.3 5
0.4
0.4 5
0.5
La phase du filtre, correspond à l’argument de G et est donné par : N 1 Te2f 2 C’est la réponse en phase du filtre. On a donc une phase linéaire (évolution affine en fonction de f).
( x ) ( N 1)x
Le retard induit par ce filtre est égal à :
N 1 Te 2
Utilisation : C’est donc un filtre passe bas, qui atténue les fréquences élevées et provoque donc un lissage plus ou moins prononcé du signal. Il permet de calculer une valeur moyenne, une valeur efficace (si on l’applique sur les carrés des échantillons). On s’en sert aussi couramment dans d’autres domaines, par exemple pour lisser les courses de bourse (avec des moyennes mobiles sur 1 semaine, 1 mois ou plus, et trouver certaines tendances des marchés).
16
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
➢ Application Soit à t = 0 un signal sinusoïdal de 500Hz, échantillonné à 10000 Hz, il est envoyé vers un filtre de réponse impulsionnelle h formé par 7 coefficient égaux à 1/7. Dans ce qui suit le listing du programme à reprendre pour la suite des traitements. fe=10000; duree = 50 ; t = 0:1/fe:duree/fe; f = 500; x = cos(2*pi*f*t); h=1/7*[ 1 1 1 1 1 1 1 ]; y =conv(x,h); plot(x,'k*-'); grid on; hold on; plot(y,'r*:'); hold off;
% Fréquence d’échantillonnage 10000 Hz % Durée en nombre de points % duree points espacés de Te = 1/fe % Fréquence du Signal, 370 Hz % Signal sinusoïdal % Réponse impulsionnelle : 7 coefficients égaux à 1/7 % Convolution % Tracé des xn
% Tracé des yn sur même figure
1) Observer les courbes obtenues. Bien marquer sur les chronogrammes les deux régimes transitoires et le régime permanent. Pour celui-ci, on observera simplement gain et déphasage. 2) Vérifier la durée des régimes transitoires ? 3) Retrouver les valeurs des gains statiques, des gains aux extremums 4) A partir de la courbe de phase retrouver la valeur du retard induit par ce filtrage. 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 Appliquer la fonction « moyenne_FIR.m » au signal en cosinus à f0=500Hz. 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. 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) 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. 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. 2ème partie : filtrage d’un signal audio : lissage On se propose dans cette partie d’étudier le filtrage d’un enregistrement audio. Copier dans votre répertoire de travail les fichiers « stereo1.wav » ou « stereo2.wav ».
17
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
12) Lire le fichier « stereo1.wav » ou « stereo2.wav » en utilisant la commande « wavread ». 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 ». 13) Appliquez la fonction précédente « moyenne_FIR.m » aux signaux donnés par waveraed (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)). 14) Générer à partir du signal filtré un nouveau fichier « stereo1_traite.wav ». Pour cela utilisez la command « wavwrite ». 15) Faite une écoute comparative ; signal original vs signal traité. Quelle différence constatez-vous ? Expliquez ? 3ème partie : filtrage d’un signal sinusoïdal : retard Les applications les filtres FIR en traitement du signal sont diverses et variées. Dans ce paragraphe, nous allons essayer d’implémenter une simple ligne à retard à partir de convolution du signal par un retard pure 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. 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 ?
V
Les filtres RII
V1
Description
Ce sont des filtres récursifs dont la sortie à l’instant nTe est fonction des échantillons en entrée (présents et passés) ainsi que des sorties précédentes. L’équation de récurrence correspondante est donnée par : N 1
M 1
k 0
k 1
yn xn k .bk yn k .ak
La synoptique de ce filtre est donnée par la figure 2.
xn
yn an, bn
Figure 2 : synoptique d’un filtre RII
18
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
La boucle de rétroaction des sorties sur les entrées, fait que ces filtres peuvent être instables. ➢ Fonction de transfert et réponse en fréquence Pour z e2ix et x
f , la fonction de transfert s’écrit : Fe N 1
G( z )
Yn Xn
z k .bk
k 0 M 1
1 z k .ak k 1
➢ Gain pour f = 0 : x = 0 ou z = 1, il vient : N 1
G ( f 0)
bk
k 0 M 1
1 .ak k 1
V2
Quelques avantages / inconvénients des filtres RII par rapport aux filtre RIF
Avantage : filtres à pentes raides possibles avec peu de coefficients, du fait de la rétroaction, la durée de la réponse impulsionnelle peut être longue mais avec très peu de coefficients. Ce filtre est toujours stable. Inconvénient : Par construction, un filtre RII ne peut pas être à phase linéaire (la réponse impulsionnelle est forcément dissymétrique). Ce filtre peut être instable. V3 V3a
Exemple 1 : filtre passe bas de premier ordre Fonction de transfert
Pour un filtre de premier ordre l’équation de récurrence s’écrit : 1
1
k 0
k 1
yn xn k .bk yn k .ak
Ainsi, n’interviennent dans cette équation que les termes des entrées et sorties d’ordre 1. Soit l’exemple suivant :
yn = (1+a)xn - a yn-1 La fonction de transfert du filtre est donnée par :
G( z )
Yn 1 a Xn 1 a. z 1
Afin de garantir la stabilité du filtre nous supposons que -1< a < 0
19
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
La réponse en amplitude de ce filtre récursif est donnée par : G( x)
V3b
1 a 1 2a. cos(2x ) a 2
Gain statique
Nous constatons que ce filtre passe les signaux continus et que pour f=0 ou z = 1, il vient : G( f 0) 1
V3c
Approximation pour x (ou f petit)
Par développement du terme en cosinus, on obtient : (2x ) 2 cos(2x ) 1 2 Il vient donc : 1 G( x) x2 1 (1 a )2 ( 4a 2 ) 1
C’est le module d’une fonction de transfert du premier ordre de la forme
1 j
Le fréquence de coupure à 3dB f c est donnée par f c Fe xc Fe V3d
20
x xc
1 a 2 a
Application : simulation sur MATLAB
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
clc; close all; clear all; a=-0.5; resfreq=2048; Fs=48000; N=100; b0 = 1+a b1 = 0 a0 = 1 a1 = a b=[b0 b1]; a=[a0 a1]; % réponse en fréquence du filtre [H,f] = freqz(b,a,resfreq,Fs); % synthèse d'une impulsion delta=zeros(1,N); delta(1)=1; rep_impuls=filter(b,a,delta); % synthèse d'un échelon echelon=ones(1,N); rep_echelon=filter(b,a,echelon); figure (1) semilogx(f,20*log10(abs(H)),'b'); xlabel('Fréquence(Hz)');ylabel('Amplitude(dB)'); grid on title('Réponse en amplitude du filtre de premier ordre') figure (2) plot(rep_impuls(1:N),'k*-'); grid on; hold on; plot(rep_echelon(1:N),'r*:'); xlabel('Temps en échantillons'); ylabel('Amplitude'); legend('Réponse à une impulsion','Réponse à un échelon') title('Filtre de premier ordre')
1)
2)
21
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. 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é.
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
theta=0:0.01:2*pi P=roots(a); x=cos(theta); y=sin(theta); z=x.^2+y.^2; figure(3) polar(theta,z,'r'); hold on polar(angle(P),abs(P),'*') title('zeros de H(z)'); xlabel('partie réelle'); ylabel('partie imaginaire'); axis([-1.5 1.5 -1.5 1.5]); grid; 3)
V4
Tracez les réponses impulsionnelle et indicielle (réponse à un échelon) de ce filtre et discutez les résultats obtenus. Exemple 2 : filtre de second ordre
Pour ce filtre l’équation de récurrence fait intervenir les termes de second ordre des entrées et des sorties. Soit l’exemple suivant : yn (1 a1 a2 ) xn a1 yn1 a2 yn2 V4a
Fonction de transfert
La fonction de transfert est donnée par : G( z )
Yn 1 a1 a2 Xn 1 a1 z 1 a2 z 2
Dans la pratique a1 < 0 et a2 > 0. La réponse en amplitude du filtres est la suivante : G( x )
V4b
1 a1 a2 1 a12 a22 2a1 (1 a2 ). cos 2x 2a2 . cos 4x
Gain pour f = 0
On fait z = 1, il vient directement : G( f 0) 1
22
2017 - 2018
ELE109, HTO & FOD V4c
Filtrage numérique
Etude des extremums
On obtient les extremums en dérivant l’expression précédente par rapport à x. On obtient donc pour :
2a1 (1 a2 ).2 . sin 2x 2a2 .4 . sin 4x = 0 On utilise la formule trigonométrique : suivante comme suit :
sin(2x) = 2sin(x)cos(x), pour réécrire l’égalité
sin(2x).a1 (1 a2 ) 4a2 cos 2x 0 Donc soit: sin(2x) 0 ou x k / 2 , donc x = 0,5 ou a1 (1 a2 ) 4a2 cos 2x 0 donc :
(max utile avant repliement de spectre)
a1 (1 a2 ) 4 a2 Nous avons donc deux régimes possibles selon que cette dernière équation peut se résoudre ou non. cos 2x
V4d 1)
Application : simulation sur MATLAB 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 G( z )
2) 3)
V5
Yn 1 a1 a2 Xn 1 a1 z 1 a2 z 2
Pour a1=-1.2. Discutez pour différentes valeurs de a2 le comportement du système. 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. Exemple 3 : filtre à encoche de second ordre : notch filter
C’est un filtre qui présente un intérêt pratique pour plusieurs applications, notamment en audio. Dans ce domaine, ils sont plutôt connus sous le l’appellation « filtres paramétriques» et utiliser pour corriger des défauts (pics) sélectifs au niveau de la réponse d’un système acoustique (enceinte, salle …) V5a
Fonction de transfert
Ce filtre est une cellule de second d’ordre dont la fonction de transfert est donnée par: G( z ) filtre(G 0 , f 0 , bw)
23
b0 (G 0 , bw) b1 (bw, f 0 ) z 1 b2 (G 0 , bw) z 2 1 a1 (G 0 , bw) z 1 a2 (G 0 , bw) z 2 2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
où : f 0 : fréquence centrale G 0 : gain du filtre à f 0 bw : ouverture du filtre à G 0 3dB La réponse en amplitude de filtre à la forme d’une encoche. Appliqué à un signal donné, ce filtre permet d’atténuer le niveau du signal autour d’une certaine fréquence et avec un certain facteur de qualité. Un exemple de réponse en amplitude de ce filtre est donné par la figure 3.
Figure 3: Réponse en fréquence d’un filtre à encoche V5b Application Reprenez le programme ci-dessous permettant d’implémenter un filtre à encoche générique clc; close all; clear all; resfreq=4096; Fs=48000; G=-20; % central gain f0=1000; % central frequency fw=1000; % bandwidth (in Hz) at -3db from G bw=2*pi*fw/Fs;w0=2*pi*f0/Fs;lambda=tan(w0/2); M=10^(G/20);P=sqrt(1-2*M^2); b=[P*(1+lambda^2)/M]*tan(bw/2); a=M*b; C=1+lambda^2+b; b0=(1+lambda^2+a)/C; b1=2*(1-lambda^2)/C; b2=(1+lambda^2-a)/C; a1=b1; a2=(1+lambda^2-b)/C; a0=1; B=[b0 -b1 b2]; A=[a0 -a1 a2]; [H,f]=freqz(B,A,resfreq,Fs); figure semilogx(f,20*log10(abs(H)),'b'); xlabel('Fréquence(Hz)'); ylabel('Amplitude(dB)'); grid on; 1) Appliquez le à l’un des enregistrements « stereoi.wav » (i=1,2) . Visualisez les résultats avant et après traitement. 2) Comparez sur casque les signaux avant et après traitement. Que constatez-vous ?
24
2017 - 2018
ELE109, HTO & FOD
Filtrage numérique
Annexe Xn
0 1 2 3 4 5 5 5 5 5 0 0 0 0 Yn
Te 0
2Te 0 0,6
0
0,6
3Te 0 0,3 1,2
4Te
5Te
0,1 0,6
0,2
6Te
7Te
8Te
9Te
10Te
11Te
12Te
1,5
5.5 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 Te
25
2Te 3Te 4Te 5Te 6Te 7Te 8Te 9Te 10Te 11Te 12Te 13Te
2017 - 2018