Filtrage Numérique

Signal Processing, Digital Filters, Programming · course

Voir tous les documents en électronique et automatique

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 !!!!

Publicité

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 ….

Publicité

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

Publicité

-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

Publicité

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-