TP2 Filtrage Numerique
TP2 Filtrage Numerique
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.
1 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
Lissage
Anti-repliement
CN A F2
Entrée analogique
x(t) F1 CA N
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 Filtrage numérique
I2 Echantillonnage et reconstitution
Tech = 1/Fech
Ve
V'e
T=1/F
Ve
V'e
Tech = 1/Fech
3 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
F2 idéal
Non réalisable
filtre réel F2 de lissage
etc ...
F
Fech/2 Fech 2.Fech
1/Fech
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.
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.
4 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
etc ...
F
Fech/2 Fech 2.Fech
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 !
5 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
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.
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
6 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
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 !
7 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
II La convolution
II 1 a Système linéaire
x Système linéaire
y
Te
instants d'échantillonnage identiques pour tous les signaux: t = nTe = n/Fe
8 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
Signal xn:
h0
h1
h2
x0 x1 x2 x3 x4 x5 .... Il faut sommer: x0
..... xn 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 Filtrage numérique
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
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 ?
1) Ecrire le programme suivant (Vous n’êtes pas obligé d’écrire les commentaires…)
x = [ 0 1 2 3 4 5 5 5 5 5 0 0 0 0 ]; % Tableau des xn
h = [0.6 0.3 0.1]; % Réponse impulsionnelle de trois coefficients
y = conv(x,h); % Convolution de x et de h
10 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
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
Alors : G( x ) 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 )
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
Yn X n k .hk Ae 2inxe 2ikx .hk Xn e 2ikx .hk
k 0 k 0 k 0
D’où
Yn N 1 2ikx
e
G( x ) .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
11 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
H1
H0
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.
xn = A.cos(2nf/Fe) = A.cos(2nfTe)
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 :
Yn
G( x ) G( x ) .ei. ( x )
Xn
12 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
N 1
Yn X n k .hk
k 0
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.
Il vient :
N 1 N 1 N 1
Yn X n k hk Ae 2inxe 2ikx hk Xn e 2ikx hk
k 0 k 0 k 0
D’où :
Yn N 1 2ikx
G( x ) 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
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
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.
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 !
14 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
➢ Réponse impulsionnelle
h0 hN-1
N 1
1 N 1
La convolution yn xn k .hk donne alors yn xnk qui est évidemment la moyenne
k 0 N 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 ».
f ech
Les zéros de |G| correspondent à Nx k donc à x = k/N ou f zeros k . k0
N
N=2 N=3
1 1
0.833
0.75
0.666
0.5 0.5
0.333
0.25
0.166
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
15 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 0.2 0.4 0.6 0.8 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
N 1
( x ) ( N 1)x
Te2f
2
C’est la réponse en phase du filtre. On a donc une phase linéaire (évolution affine en
fonction de f).
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.
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.
17 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
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
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
yn xn k .bk yn k .ak
k 0 k 1
xn yn
an, bn
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.
f
Pour z e2ix et x , la fonction de transfert s’écrit :
Fe
N 1
Yn z k .bk
G( z ) k 0
M 1
1 z k .ak
Xn
k 1
N 1
bk
G ( f 0) k 0
M 1
1 .ak
k 1
V2 Quelques avantages / inconvénients des filtres RII par rapport aux filtre RIF
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.
1 1
yn xn k .bk yn k .ak
k 0 k 1
Ainsi, n’interviennent dans cette équation que les termes des entrées et sorties d’ordre 1.
yn = (1+a)xn - a yn-1
Yn 1 a
G( z )
Xn 1 a. z 1
19 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
1 a
G( x)
1 2a. cos(2x ) a 2
Nous constatons que ce filtre passe les signaux continus et que pour f=0 ou z = 1, il vient :
G( f 0) 1
20 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
a=-0.5;
resfreq=2048;
Fs=48000;
N=100;
b0 = 1+a
b1 = 0
a0 = 1
a1 = a
b=[b0 b1];
a=[a0 a1];
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')
21 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;
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
Yn 1 a1 a2
G( z )
Xn 1 a1 z 1 a2 z 2
1 a1 a2
G( x )
1 a12 a22 2a1 (1 a2 ). cos 2x 2a2 . cos 4x
G( f 0) 1
22 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
On obtient les extremums en dérivant l’expression précédente par rapport à x. On obtient donc
pour :
Donc soit:
sin(2x) 0 ou x k / 2 , donc x = 0,5 (max utile avant repliement de spectre)
ou a1 (1 a2 ) 4a2 cos 2x 0 donc :
a1 (1 a2 )
cos 2x
4 a2
Nous avons donc deux régimes possibles selon que cette dernière équation peut se résoudre
ou non.
Yn 1 a1 a2
G( z )
Xn 1 a1 z 1 a2 z 2
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 …)
Ce filtre est une cellule de second d’ordre dont la fonction de transfert est donnée par:
23 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.
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;
24 2017 - 2018
ELE109, HTO & FOD Filtrage numérique
Annexe
Xn Te 2Te 3Te 4Te 5Te 6Te 7Te 8Te 9Te 10Te 11Te 12Te
0 0 0 0
1 0,6 0,3 0,1
2 1,2 0,6 0,2
3
4
5
5
5
5
5
0
0
0
0
Yn 0 0,6 1,5
5.5
4.5
3.5
2.5
1.5
0.5
0
Te 2Te 3Te 4Te 5Te 6Te 7Te 8Te 9Te 10Te 11Te 12Te 13Te
25 2017 - 2018