Chapitre 3: Filtrage Numérique
1. Introduction
2. Synthèse des Filtres à Réponse Impulsionnelle Infinie
(RII)
3. Synthèse des Filtres à Réponse Impulsionnelle Finie
(RIF)
4. Exemples de programmes sous Matlab
Introduction (1/10)
1. Pourquoi des filtres numériques
• Souplesse (changement de coefficients)
• Mise en série de filtres
• Insensibilité au bruit
• Stabilité des caractéristiques avec le temps, la température …
Exemples de filtrage :
• Réduction de bruit pour des signaux radio, des images issues de capteurs, ou encore
des signaux audio.
• Modification de certaines zones de fréquence dans un signal audio ou sur une image.
• Limitation à une bande fréquentielle pré-définie.
• Fonctions spéciales (dérivation, intégration, transformée de Hilbert, ...).
TTSI
-50-
Introduction (2/10)
• Dans l’exemple du code DTMF (Digital Tone Multiple Frequency) utilisé en téléphonie,
le signal transmis est la somme de deux sinusoïdes dont les fréquences sont
normalisées. Il résulte du choix de la touche appuyée sur votre téléphone. Ce principe
est souvent qualifié de fréquences vocales. A la réception, pour reconnaître le numéro
composé, une série de bancs de filtres est utilisée. Une première discrimination de
deux zones fréquentielles est réalisée par un filtre passe haut et un filtre passe-bas.
Puis, dans chaque zone, une série de filtres passe-bande suivis d’un détecteur permet
de déterminer la présence d’une fréquence particulière.
TTSI
-51-
Introduction (3/10)
2. Représentation d’un filtre numérique
Un filtrage numérique peut être représenté en utilisant plusieurs types de spécifications.
o Fonction de transfert en z : ce mode de représentation est le plus usuel. Il permet de
lier l’entrée et la sortie dans le plan z par Y (z) = H(z).X(z). On posera dans la suite :
où N(z) est le polynôme du numérateur de la fonction de transfert, tandis que D(z) est son
dénominateur. N est ici l’ordre du filtre.
Si H(z) possède des pôles, on parlera de filtres RII (pour Réponse Impulsionnelle Infinie).
Si N(z) = 1, on parlera de filtre tous-pôles.
Si D(z) = 1, alors le filtre ne possède que des zéros. Cette famille de filtre correspond au cas
des filtres RIF (pour Réponse Impulsionnelle Finie).
TTSI
-52-
Introduction (4/10)
o Réponse impulsionnelle : la réponse impulsionnelle est la fonction en z inverse de
H(z).
Comme en filtrage analogique, la sortie d’un filtre y(nT) est le résultat de la convolution du
signal d’entrée représenté de manière temporelle x(nT) avec la réponse impulsionnelle du
filtre h(nT). On a alors y(nT) = x(nT)*h(nT), ou, si on fait abstraction de la période
d’échantillonnage T :
Dans le cas où x(n) est une impulsion δ(n), on retrouve bien y(n) = h(n).
Selon les cas où h(n) est à support infini ou fini, on retrouvera respectivement les deux
types de filtres RII et RIF.
TTSI
-53-
Introduction (5/10)
o Équation aux différences :
On identifie ici deux parties distinctes :
une partie fonction de la valeur courante et des valeurs précédentes de l’entrée
x(n),
et une partie fonction des valeurs précédentes de la sortie y(n).
Selon si les ai sont non nuls ou nuls, on parlera donc de filtres récursifs ou de filtres non
récursifs.
TTSI
-54-
Introduction (6/10)
3. Spécification d’un filtre numérique
Avant qu’un filtre numérique soit conçu et implanté, nous avons besoin de définir ses
spécifications. Un filtre doit laisser passer certaines fréquences, alors qu’il doit en atténuer
(voire éliminer) d’autres.
Il y a quatre filtres de bases :
• les filtres passe-bas laissent passer les fréquences inférieures à une fréquence de
coupure fc et bloquent celles qui lui sont supérieures.
• les filtres passe-haut bloquent les fréquences inférieures à une fréquence de coupure
fc et laissent passer celles qui lui sont supérieures.
• les filtres passe-bande laissent passer les fréquences autour d’une fréquence centrale
f0 (ou comprises entre f1 et f2) et bloquent les autres.
• les filtres réjecteur-de-bande bloquent les fréquences autour d’une fréquence centrale
f0 (ou comprises entre f1 et f2) et laissent passer les autres.
TTSI
-55-
Introduction (7/10)
Dans un cas réel, le passage entre zones passantes et zones atténuées se fait par des zones
dites ”de transition” dont la largeur va exprimer la sélectivité du filtre.
Les bandes passantes et atténuées ne sont également pas idéales, elles contiennent des
ondulations dont l’amplitude est exprimée par les paramètres d’ondulation en bande
passante et d’atténuation.
Pour toutes ces raisons, la spécification d’un filtre est habituellement réalisée à partir d’un
gabarit fréquentiel, défini entre 0 et π.
TTSI
-56-
Introduction (8/10)
o Spécifications des filtres passe-bas et passe-haut
Un filtre passe-bas possède trois zones : la bande passante (0 ≤ Ω ≤ Ωp), la bande de
transition (Ωp ≤ Ω ≤ Ωa) et la bande atténuée (Ωa ≤ Ω ≤ π).
Un filtre passe-haut verrait ses bandes atténuées et passantes inversées, on aurait dans ce
cas Ωp ≥ Ωa.
δ1 est l’ondulation en bande passante, δ2 est l’atténuation.
TTSI
-57-
Introduction (9/10)
o Spécifications des filtres passe-bande et réjecteur de bande
Un filtre passe-bande possède plusieurs zones : la bande passante (Ωp- ≤ Ω ≤ Ωp+), deux
bandes de transition et deux bandes atténuées (0 ≤ Ω ≤ Ωa- et Ωa+ ≤ Ω ≤ π).
Un filtre réjecteur-de-bande verrait ses bandes atténués et passantes inversées.
TTSI
-58-
Introduction (10/10)
4. Caractérisations d’un filtre numérique
Pb : h(n) potentiellement infini !!!!
Advertisement
o Réponse Impulsionnelle Finie (RIF) : limitation à M du nombre d’échantillons
• Réponse impulsionnelle : filtre causal
toujours stable
• Equation aux différences : N=0 réponse non récursive
o Réponse Impulsionnelle Infinie (RII) : mémorisation des sorties
• Réponse impulsionnelle infinie :
filtre causal stabilité à vérifier
• Mémorisation du signal de sortie la réponse impulsionnelle infinie peut se
calculer en un temps fini
• équation aux différences : N≥1
TTSI
-59-
Filtre à Réponse Impulsionnelle Infinie RII (1/9)
1. Introduction
La synthèse d’un filtre numérique est la recherche d’une fonction H(z) (ou h(n))
correspondant à la spécification sous forme de gabarit, selon diverses méthodes.
• La méthode la plus courante est l’utilisation des méthodes de synthèse des filtres
analogiques aboutissant à une fonction H(p) correspondant aux spécifications. Une
fonction permettant le passage du plan p dans le plan z est ensuite utilisée pour obtenir
H(z).
• Une synthèse directe en z est également possible selon les mêmes principes que la
synthèse analogique.
• Les méthodes d’optimisation issues de l’analyse numérique peuvent être utilisées afin
de rechercher une fonction H(z) s’approchant le plus possible d’une fonction prototype.
La minimisation d’un critère d’erreur entre la courbe idéale et la courbe réelle est alors
appliquée.
TTSI
-60-
Filtre à Réponse Impulsionnelle Infinie RII (2/9)
Spécification
Gabarit analogique
Normalisation
Gabarit normalisé
Ordre du filtre
Approximation de H(p)
HNorm (p)
Dénormalisation
H(p)
Types de filtre
(Butterworth,
Chebyshev…)
Filtrage Numérique
Filtrage Analogique
Transformation p=f(z)
Invariance impulsionnelle
Bilinéaire
Choix d’une structure
TTSI
-61-
Filtre à Réponse Impulsionnelle Infinie RII (3/9)
o Normalisation
Cette première phase permet d’aboutir au gabarit passe-bas prototype (ou gabarit
normalisé) à partir de n’importe que des 4 types principaux de filtres (passe-bas, passe-
haut, passe-bande, réjecteur-de-bande).
Gabarit prototype passe-bas
TTSI
-62-
Filtre à Réponse Impulsionnelle Infinie RII (4/9)
o Approximation de la fonction de transfert
La phase suivante consiste en la recherche d’une fonction HNorm(p) entrant dans le gabarit
prototype passe-bas défini avant. Il existe plusieurs fonctions d’approximation, nous
exposons ci-après les 2 fonctions les plus utilisées.
• Filtres de Butterworth : Un filtre passe-bas de Butterworth d’ordre N et de
pulsation de coupure ωc est défini par le carré de sa réponse fréquentielle :
• Filtres de Chebyshev : Un filtre passe-bas de Chebyshev de type I d’ordre N et de
pulsation de coupure ωc est défini par le carré de sa réponse fréquentielle :
où CN(x) est un polynôme de Chebyshev de degré N, ε un paramètre permettant de régler
l’amplitude de l’ondulation en bande passante ou en bande atténuée.
TTSI
-63-
Filtre à Réponse Impulsionnelle Infinie RII (5/9)
o Dénormalisation
Cette dernière étape permet de passer de la fonction de transfert normalisée HNorm(pN) à la
fonction de transfert H(p). La dénormalisation consiste donc en l’application d’une fonction
f permettant de transformer cette variable pN en la variable p = jω : pN = f(p)
Passe-bas
Passe-haut
Passe-bande
Réjecteur de bande
TTSI
-64-
Filtre à Réponse Impulsionnelle Infinie RII (6/9)
2. Méthode de l’invariance impulsionnelle
o Principe :
On échantillonne la réponse impulsionnelle d’un filtre analogique connu
o Réponse en fréquence :
L’échantillonnage de ha(t) entraine une périodisation du spectre condition de
Shannon à respecter par conséquent
o Pôles : correspondance entre les pôles de H(s) et les pôles de H(z)
TTSI
-65-
Filtre à Réponse Impulsionnelle Infinie RII (7/9)
Exemple :
o Précautions :
La réponse du filtre numérique sera proche de celle du filtre analogique dans la bande
[-Fe/2, Fe/2] si le filtre analogique a une réponse fréquentielle nulle en dehors de cette
bande.
Cette méthode est utile seulement dans le cas de filtres analogiques à bande limitée.
TTSI
-66-
Filtre à Réponse Impulsionnelle Infinie RII (8/9)
3. Transformation bilinéaire
• Définir le gabarit du filtre numérique
• Convertir ce gabarit en un gabarit correspondant au filtre analogique par la relation
Avec fa les fréquences du domaine analogique et fd les fréquences du domaine numérique
• Faire la synthèse du filtre analogique (Butterworth, Tchebychev…) Ha(s)
• Transformer Ha(s) en Hd(z) en utilisant
TTSI
-67-
Filtre à Réponse Impulsionnelle Infinie RII (9/9)
Exemple :
On utilise des fonctions modèles classiques de types filtres de Butterworth, Tchebychev ….
Advertisement
Soit un filtre de Butterworth analogique
On applique la transformation bilinéaire
Apres calcul et en prenant
Fréquence de coupure du filtre analogique
Fréquence de coupure du filtre numérique
TTSI
-68-
Filtre à Réponse Impulsionnelle Finie RIF (1/11)
1. Introduction :
Un filtre RIF est défini par sa fonction de transfert en z :
où la réponse impulsionnelle h(n) est de longueur N.
Les filtres RIF ne sont réalisables que dans le domaine discret. Par conséquent, leurs
méthodes de synthèse ne sont pas dérivées des filtres analogiques.
On distingue trois principales méthodes :
• La méthode du fenêtrage (windowing) consiste à appliquer une fenêtre de taille N au
filtre idéal équivalent.
• La méthode de l’échantillonnage fréquentiel utilise la Transformée de Fourier
Discrète inverse depuis une fonction discrète représentative du filtre et définie en
fréquence
• Les méthodes d’optimisation se concentrent sur la minimisation d’un critère d’erreur
entre la courbe réelle et le filtre idéal. La plus utilisée est la méthode de Parks and
McClellan, qui reformule le problème de synthèse de filtre sous la forme d’une
approximation polynômiale.
TTSI
-69-
Filtre à Réponse Impulsionnelle Finie RIF (2/11)
2. Exemple :
Soit le filtre défini par la relation entrée-sortie suivante :
Réponse impulsionnelle
Réponse fréquentielle
Module :
Phase :
TTSI
-70-
Filtre à Réponse Impulsionnelle Finie RIF (4/11)
3. Méthode de la fenêtre
o Problématique
A partir du gabarit fréquentiel, effectuer la synthèse d’un filtre RIF réalisable (causalité) à
phase linéaire contrainte de symétrie des coefficients.
o Gabarit réel continu
Filtre caractérisé par :
• la bande passante BP
• la bande atténuée
• la largeur ΔF de la zone de transition
• l’amplitude des oscillations en bande
passante δ1
• l’amplitude des ondulations en bande
atténuée δ2
TTSI
-71-
Filtre à Réponse Impulsionnelle Finie RIF (5/11)
o Méthodologie
A partir du gabarit réel du filtre, déterminer la longueur de la RIF :
A partir du gabarit idéal du filtre, on peut déterminer les coefficients du filtre par
TFTD inverse.
h(n) symétrique car H(f) réel linéaire
En revanche, h(n) est potentiellement infini
Limitation de la réponse impulsionnelle à N échantillons (troncature)
Pondération de la réponse impulsionnelle idéale h(n) par une suite discrète w(n)
TTSI
-72-
Filtre à Réponse Impulsionnelle Finie RIF (6/11)
Exemple : w(n) est la fenêtre rectangulaire
En fréquence, on a donc :
TTSI
-73-
Filtre à Réponse Impulsionnelle Finie RIF (7/11)
On a trouvé la réponse hN(n), mais celle-ci est centrée sur 0 donc elle n’est pas
causale.
Solution : en la retardant de N/2 échantillons,
la réponse impulsionnelle devient causale
Facile à implémenter car numérique
(mémoires à décalage)
Mathématiquement, cela revient à multiplier HN(f) par une exponentiel complexe
déphasage mais déphasage linéaire 2πf.
TTSI
-74-
Filtre à Réponse Impulsionnelle Finie RIF (8/11)
Effets de la limitation du nombre d’échantillons à N
Fenêtre de pondération
Réponse idéale
Réponse obtenue par limitation du
nb d’échantillons à N
Allure de W(f) pour une fenêtre
rectangulaire
faire entre
La pondération temporelle introduit des ondulations
et limite la raideur de coupure du filtre. Un compromis
est à
l’amplitude des
ondulations.
Cette méthode donne des ondulations de même
amplitude dans la bande passante et dans la bande
atténuée.
la raideur et
TTSI
-75-
Filtre à Réponse Impulsionnelle Finie RIF (9/11)
Choix de la fenêtre de pondération
Critères de qualité :
l : largeur du lobe principal
A : amplitude des lobes secondaires
Relation entre la longueur N de la fenêtre et
la bande de transition ΔF du filtre obtenu :
N.ΔF = cst
A dB
rectangulaire -13
Hanning
Hamming
Blackman
-31
-41
Advertisement
-57
l
4/N
8/N
8/N
ΔF
0.9/N
3.1/N
3.3/N
12/N
5.5/N
δ2 (dB)
-21
-44
-53
-74
Qq propriétés des fenêtres :
• Si N croit, l décroit bande de transition ΔF faible
• A est indépendant de la longueur de la fenêtre
• On ne peut pas réduire simultanément A et l
Réglages :
• δ2 désirée choix type de
fenêtre
• ΔF désirée choix de N
TTSI
-76-
Filtre à Réponse Impulsionnelle Finie RIF (10/11)
② Méthode itérative par TFD
• initialiser h(n) sur N points au hasard
1. calculer la TFD sur N0 points avec N0>N, et forcer les valeurs de H(k) n’étant pas dans
le gabarit.
2. faire une TFD-1 sur N0 points et ne conserver que N points autour de l’origine
3. recommencer en 1. jusqu’à ce qu’un critère d’erreur soit satisfait.
③ Moindres carrés
• idée : calculer les coefficients de h(n) de manière à ce que la fonction de transfert
approche la fonction voulue par un critère de moindres carrés.
④ Calcul des coefficients par approximation de Tchebycheff
• approximation de la fonction de transfert par un polynôme au sens de Tchebycheff, ce
qui permet d’obtenir des ondulations d’amplitude constante.
TTSI
-77-
Filtre à Réponse Impulsionnelle Finie RIF (11/11)
4. Réalisation des filtres RIF
filtre causal à réponse impulsionnelle finie de longueur N :
3 opérations élémentaires :
• retard (registre à décalage)
• opérateurs arithmétiques + et *
• registres pour la pondération
réalisation non-récursive
TTSI
-78-
Exemples de programmes sous Matlab (1/11)
Conception de filtres RIF
• firpm : Complex and nonlinear-phase equiripple FIR filter design
• fir1 : Window-based finite impulse response filter design
• fir2 : Frequency sampling-based finite impulse response filter design
• fircls : Constrained least square FIR multiband filter design
• fircls1 : Constrained least square, lowpass and highpass, linear phase, FIR filter desig
• firls : Least square linear-phase FIR filter design
• firpm : Parks-McClellan optimal FIR filter design
• firpmord : Parks-McClellan optimal FIR filter order estimation
• firrcos : Raised cosine FIR filter design
• gaussfir : Gaussian FIR pulse-shaping filter design
• intfilt : Interpolation FIR filter design
• kaiserord : Kaiser window FIR filter design estimation parameters
TTSI
-79-
Exemples de programmes sous Matlab (2/11)
Conception de filtres RII
• buttord : Butterworth filter order and cutoff frequency
• butter : Butterworth analog and digital filter design
• cheb1ord : Chebyshev Type I filter order
• cheby1 : Chebyshev Type I filter design (passband ripple)
• cheb2ord : Chebyshev Type II filter order
• cheby2 : Chebyshev Type II filter design (stopband ripple)
• ellipord : Minimum order for elliptic filters
• ellip : Elliptic (Cauer) filter design
• maxflat : Generalized digital Butterworth filter design
• yulewalk : Recursive digital filter design
TTSI
-80-
Exemples de programmes sous Matlab (3/11)
Analyse des caractéristiques des filtres
• filternorm : 2-norm or infinity-norm of a digital filter
• freqz : Frequency response of digital filters
• fvtool : Filter Visualization Tool
• grpdelay : Average filter delay (group delay)
• impz : Impulse response of digital filters
• phasedelay : Phase delay response of digital filters
• phasez : Phase response of digital filters
• stepz : Step response of digital filters
• zerophase : Zero-phase reponse of digital filters
• zplane : Zero-pole plot
TTSI
-81-
Exemples de programmes sous Matlab (4/11)
Exemple 1 : Analyse d’un filtre numérique RII passe-bas du 2sd ordre
Le filtre numérique est spécifié par le gabarit en dB de la figure ci-dessous avec comme
paramètres :
Fp = 1kHz; Fs = 3kHz; Δ1 = 1dB; Δ2 = -20dB; Fe = 10kHz
Fig1 : Gabarit des filtres passe-bas à étudier
La synthèse par la méthode bilinéaire du filtre de Chebyshev H(z) aboutit à la fonction :
TTSI
-82-
Exemples de programmes sous Matlab (5/11)
Écrire le programme Matlab permettant :
• de visualiser la réponse fréquentielle en module et en phase du filtre numérique.
Faites la relation entre l’échelle des abscisses de la commande plot de Matlab et les
fréquences. Quelles sont donc les relations entre fréquence d’échantillonnage et
fréquence de coupure ?
• Visualisez la réponse impulsionnelle.
• Tracez dans le plan complexe les pôles et les zéros du filtre. Le filtre est-il stable
Advertisement
b=[0.079 2*0.079 0.079];
a=[1 -1.2 0.516];
N=32;
n=0:N-1;
delta=[1; zeros(N-1,1)];
step=ones(N,1);
h=filter(b,a,delta);
figure(1),plot(n,h)
TTSI
-83-
Exemples de programmes sous Matlab (6/11)
L=256;
[h,w]=freqz(b,a,L);
m=abs(h);
p=angle(h);
figure(2),plot(w(1:L-1),20*log10(m(1:L-1)))
axis([0 pi -60 2])
figure(3), plot(w,m);
figure(4), plot(w,p);
zero=roots(b);
pole=roots(a);
figure(5), zplane(b,a)
delta1=1; delta2=-20;
Fe=10000;
Fp=1000; NFp=round(L*Fp/(Fe/2));
Fs=3000; NFs=round(L*Fs/(Fe/2));
gabh=[delta1ones(NFs,1);delta2ones(L-NFs,1)];
gabl=[-delta1ones(NFp,1);-5000ones(L-NFp,1)];
figure(6), hold on; plot(w,gabh,'r'); plot(w,gabl,'g');
TTSI
-84-
Exemples de programmes sous Matlab (7/11)
Exemple 2 : Analyse d’un filtre numérique RIF passe-bas du 2sd ordre
Le gabarit du filtre passe-bas étant défini comme à la figure1, la synthèse du filtre donne
deux fonctions de transfert H(z) selon le nombre de points considéré (N=11 puis N=7)
*
b11=[0 -0.0309396 -0.0390182 0.0766059 0.288307 0.4 0.288307 0.0766059 -0.0390182
-0.0309396 0];
b7=[-0.0409365 0.078369 0.289996 0.4 0.289996 0.078369 -0.0409365];
L=256;
[h11,w]=freqz(b11,1,L);
[h7,w]=freqz(b7,1,L);
figure; plot(w,20*log10(abs(h11)),'g');
axis([0 pi -60 2]);hold on;
plot(w,20*log10(abs(h7)),'b');grid
TTSI
-85-
Exemples de programmes sous Matlab (8/11)
delta1=1; delta2=-20;
Fe=10000;
Fp=1000; NFp=round(L*Fp/(Fe/2));
Fs=3000; NFs=round(L*Fs/(Fe/2));
gabh=[delta1ones(NFs,1);delta2ones(L-NFs,1)];
gabl=[-delta1ones(NFp,1);-5000ones(L-NFp,1)];
plot(w,gabh,'r'); plot(w,gabl,'g');
N=32; n=0:N-1;
delta=[1;zeros(N-1,1)];
h11=filter(b11,1,delta);
h7=filter(b7,1,delta);
figure; subplot(2,1,1);stem(n,h11,'g');subplot(212);stem(n,h7,'b');
figure;zplane(b11,1);
figure;zplane(b7,1);
TTSI
-86-
Exemples de programmes sous Matlab (9/11)
Exemple 3 :
On cherche à créer un filtre passe-bas numérique (Fe=3000) par approximation de
Chebyshev de type I, qui respecte les spécifications suivantes :
On réalise l'approximation du filtre analogique et utilise la fonction impinvar(N,D,Fe) :
TTSI
-87-
Exemples de programmes sous Matlab (10/11)
Fe=3000;
[n,wn]=cheb1ord(2pi1000,2pi1200,1,40,'s');
[N,D]=cheby1(n,1,wn,'s');
[B,A]= impinvar(N,D,Fe); % on multiplie aussi par Te
% Calcul de la réponse impusionnelle analogique
[r,p,k]=residue(N,D);
t=0:1/(5*Fe):.02;
ha=real([exp(t'(p.'))r]);
% Calcul de la réponse impusionnelle numérique
h=filter(B,A,[1;zeros(49,1)]);
% Comparaison des réponses impulsionnelles
plot(t,ha);
hold on;
stem(0:1/Fe:49/Fe, Fe*h,'r.')
% Comparaison des pôles et zéros
figure; zplane(N,D)
Figure; zplane(B,A)
TTSI
-88-
Exemples de programmes sous Matlab (11/11)
% Calcul des réponses en fréquence
[Ha,Wa]=freqs(N,D,2pi(1:10:Fe));
[H,W]=freqz(B,A, 1:10:Fe,Fe);
% Comparaison des réponses en fréquence
figure;
plot(Wa/(2pi),20log10(abs(Ha)));
hold on;
plot(W,20*log10(abs(H)),'r:')
*
On constate effectivement que le degré du filtre est conservé, ainsi que la réponse
impulsionnelle, et que la réponse en fréquence est rendue périodique par l'échantillonnag
de cette réponse, ce qui rend le filtre légèrement moins efficace autour de Fe/2
TTSI
-89-