Vous êtes sur la page 1sur 30

GEI605 Traitement du signal

Analyse des filtres numriques


Roch Lefebvre, Professeur

GEI605 Traitement du signal


Analyse des filtres numriques

1. Introduction

Dans le chapitre sur les bases des filtres numriques, on a vu


comment mettre en uvre un filtre et comment mesurer sa rponse
en frquence, avec les fonctions filter et freqz dans MATLAB. On a
montr galement comment faire la conception de filtres numriques
ayant des caractristiques donnes, avec des fonctions comme butter,
cheby1 et ellip.

Nous allons maintenant prsenter de faon plus rigoureuse les


diffrentes reprsentations dun filtre numrique, et les liens entre
celles-ci. Un filtre numrique peut tre dcrit par

- son quation aux diffrences


- sa rponse impulsionnelle h[n]
- sa fonction de transfert H(z)
- sa rponse en frquence H(ej)

Lquation aux diffrences et la rponse impulsionnelle sont des


descriptions temporelles du filtre, alors que la fonction de transfert et
la rponse en frquence sont des descriptions frquentielles. Il nous
faudra dfinir la transforme de Fourier pour un signal discret x[n],
note X(ej), afin de comprendre la nature de la rponse en frquence
H(ej), de mme que son lien avec la fonction de transfert H(z).

Le chapitre 4 du livre de van den Enden prsente toutes les notions


que nous allons voir ici. Si vous naviez quun chapitre lire dans ce
livre, ce serait le chapitre 4.

2.0 Transforme de Fourier des signaux temps discrets

La transforme de Fourier dun signal analogique x(t) est dfinie


comme suit :

1
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

x(t )e
j t
X ( ) = dt
t =

X() est appel le spectre du signal x(t). X() est en gnral une
fonction complexe, qui a un module et une phase pour chaque valeur
de la frquence . Les pages 334 337 de van den Enden prsentent
la transforme de Fourier X() de quelques signaux x(t) simples.

On peut dfinir le spectre dun signal temps discret x[n] en


chantillonnant le temps , i.e. en posant

t = nT

o T est la priode dchantillonnage. Ainsi,

x(t) devient le signal discret x[nT] = x[n],


t devient nT = Tn = n (o = T),

et lintgrale devient une somme. On a donc, pour le signal discret


x[n],

X ( ) = x[n]e
n =
jn

o est la frquence normalise (T), en radians/chantillon. En


gnral dans la littrature on va plutt utiliser la notation


j
X (e ) = x[n]e
n =
jn

pour signifier que le spectre de Fourier X(ej) dun signal discret est
priodique, contrairement au spectre dun signal temps continu qui
nest pas priodique en gnral.

Lquation encadre ci-haut est la dfinition de la transforme de


Fourier dun signal temps discret x[n]. On montre facilement que le
spectre X(ej) est priodique, de priode 2, en remplaant par +
2k, et en notant que ej2k = 1 si k est un entier. On trouvera plus de
dtails dans le livre de van den Enden aux pages 62 65. Les
proprits de la transforme de Fourier temps discret sont

2
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

prsentes aux pages 65 69. Les transformes de quelques signaux


temps discrets (impulsion, sinusode, onde carre discrte,) sont
prsentes aux pages 70-71. On suggre de faire les exercices 4.5,
4.6 et 4.7 de la page 117 de van den Enden pour se familiariser
davantage avec la transforme de Fourier sur les signaux temps
discret. Pour un meilleur entranement , on suggre de calculer la
transforme de Fourier des signaux discrets aux pages 70-71, et de
montrer quon arrive au mme rsultat que la colonne de droite
(espace des frquences).

3.0 Analyse dun filtre rcursif dordre 1

Au lieu de prsenter chacun des outils danalyse de faon gnrale,


nous allons plutt prendre dabord lexemple simple dun filtre discret
rcursif dordre 1, et obtenir chacune de ses descriptions (quation
aux diffrences, rponses impulsionnelle, fonction de transfert et
rponse en frquence). Dans la section 4.0, nous allons traiter le cas
des filtres rcursifs dordre 2 de la mme faon. Ensuite, aux sections
suivantes, nous allons gnraliser aux filtres dordre plus lev.

Nous nallons pas prsenter toute la thorie de certains outils comme


la transforme en z, uniquement ce qui est ncessaire pour analyser
un filtre numrique.

Soit donc un filtre discret rcursif dordre 1, dcrit par lquation aux
diffrences suivante (premire description du filtre):

y[n] = x[n] + a y[n-1]

Quelle est la rponse impulsionnelle dun tel filtre? Sa description est si


simple quon la calcule aisment la main . En effet, mesurer la
rponse impulsionnelle y[n] = h[n] du filtre signifie remplacer x[n] par
limpulsion de Dirac

[n] = 1 pour n = 0
= 0 ailleurs

et poser que la mmoire du filtre est nulle (ici, cela signifie h[-1] = 0).
Lquation aux diffrences scrit donc

h[n] = [n] + a h[n-1]

On a donc, squentiellement :

3
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

h[0] = [0] = 1
h[1] = a h[0] = a
h[2] = a h[1] = a2
h[3] = a h[2] = a3

ou, de faon gnrale :

h[k] = ak

On montre ci-dessous les 40 premiers chantillons de la rponse


impulsionnelle de ce filtre pour a = 0.9 ( gauche) et pour a = -0.9 (
droite).

En exercice, obtenez ces deux rponses impulsionnelles avec MATLAB.


Soyez attentif au signe des coefficients de la partie rcursive dans la
fonction filter (il vous faudra inverser le signe du coefficient a de
lquation aux diffrences).

On observe que h[k] tend vers 0 lorsque k augmente, ce qui


sexplique par le fait que |a| < 1. On observe aussi que le signe de
h[k] alterne lorsque a < 0. Ainsi, ce filtre sera stable si |a| < 1. De
plus, il aura une caractristique basse-frquence (ou passe-bas) si
a > 0 et il aura une caractristique haute-frquence (passe-haut)
si a < 0.

Un filtre est entirement caractris par sa rponse impulsionnelle.


Autrement dit, si on connat la rponse impulsionnelle h[n], on peut

4
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

dterminer la rponse du filtre nimporte quelle entre x[n] par la


convolution.

La convolution, pour les signaux temps discret, est dfinie comme


suit :

y[ n] = x[k ]h[n k ]
k =

o x[k] est lchantillon k du signal x[n] (lentre du filtre) et h[n-k]


est la rponse impulsionnelle h[n] dcale vers la droite de k
chantillons. Ainsi, la sortie du filtre est forme de la somme de
rponses impulsionnelles dcales pondres par lchantillon au
temps k du signal x[n].

On suggre de lire le document La convolution du cours Systmes


et Signaux pour rviser le principe de la convolution. Lire aussi les
pages 77 83 de van den Enden.

La convolution discrte peut tre ralise avec MATLAB par la fonction


conv. Par exemple :

On montre facilement que la convolution de x = [1 1 1] avec h = [1 1


1] est la suite dchantillons y = [1 2 3 2 1], en faisant la somme des
trois rponses impulsionnelles dcales produites par chacun des 3
chantillons de x.

5
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Exercez votre habilet la convolution avec lexercice 4.10 de van den


Enden (page 118).

Maintenant, les choses srieuses. On dsire caractriser notre filtre


numrique dans le domaine des frquences. Par exemple, a-t-il une
caractristique plutt passe-bas, passe-haut, passe-bande, ou autre?
Il faut donc valuer la rponse du filtre une sinusode discrte de
frquence , et faire varier sur toutes les frquences possibles pour
obtenir le gain (et la phase) du filtre chacune de ces frquences.

Pour ce faire, on applique directement la convolution



y[ n] = x[k ]h[n k ]
k =

= h[k ]x[n k ]
k =

qui est une opration commutative (i.e. quon peut inverser le rle de
x[n] et h[n]). La proprit de commutativit est explique la page
82 de van den Enden.

Le signal dentre tant une sinusode, on a

e jn e jn
x[n] = sin(n) =
2j

En convoluant avec la rponse impulsionnelle h[n] du filtre, on trouve


y[ n] = h[k ]x[n k ]
k =

e j ( n k ) e j ( n k )
= h[k ]
k = 2j
1 1
=
2 j k =
h[k ]e j ( n k )

2 j k =
h[k ]e j ( nk )

6
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Dans chacune des deux sommes, on peut mettre en vidence les


termes qui ne dpendent pas de lindice de sommation k, ce qui donne

1 jn 1 jn
y[ n] = e h[k ]e jk
e h[k ]e jk
2j k = 2j k =

(cette partie est un peu matheuse , mais suivez bien notre


raisonnement).

Maintenant, observez bien les deux termes de droite de cette dernire


quation. Le premier terme contient lexpression

h[k ]e
k =
jk

qui nest rien dautre que la transforme de Fourier discrte de la


rponse impulsionnelle h[k], comme on peut le vrifier en comparant
avec lquation encadre de la page 2. On va donc noter ce terme
H(ej). Ensuite, le deuxime terme contient lexpression

h[k ]e
k =
jk

qui est le complexe conjugu H*(ej) de H(ej). Pourquoi le complexe


conjugu? Simplement parce quon a chang tous les -j par des
+j dans la somme.

On peut donc rcrire lquation du haut la page, qui donne la rponse


du filtre une sinusode :

1 jn 1 jn
y[ n] = e H ( e j ) e H * ( e j )
2j 2j

(attention, on y est presque)

La fonction H(ej) est un une fonction complexe, qui a donc un module


et une phase pour chaque valeur de la frquence . On peut donc
crire :

7
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

H (e j ) = A( )e j ( )

o A() est le module de H(ej) la frquence , et () est la phase de


H(ej) la frquence . Et puisque H*(ej) est le complexe conjugu de
H(ej), on peut crire

H * (e j ) = A( )e j ( )

En remplaant dans lexpression pour y[n] au bas de la page 7, on a

1 jn 1 jn
y[ n] = e A( )e j ( ) e A( )e j ( )
2j 2j
A( ) j (n+ ( )) A( ) j (n+ ( ))
= e e
2j 2j
e j (n+ ( )) e j (n+ ( ))
= A( )
2j
= A( ) sin(n + ( ))

On a donc montr que la rponse dun filtre discret la sinusode

x[n] = sin( n)

est la sinusode (de mme frquence)

y[n] = A() sin( n + ())

o A() et () sont respectivement le module et la phase de H(ej),


dfinit par

j
H (e ) = h[n]e
n =
jn

8
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

H(ej), la transforme de Fourier discrte de la rponse impulsionnelle,


nest nulle autre que la rponse en frquence du filtre.

Dans le cas particulier du filtre rcursif dordre 1 que nous traitons ici
et dfinit par lquation aux diffrences

y[n] = x[n] + a y[n-1]

on a vu que la rponse impulsionnelle est donne par

h[k] = ak

La rponse en frquence de ce filtre est donc donne par



j
H (e ) = h[n]e
n =
jn


= a e
n =
n jn

Si le filtre est causal, la rponse impulsionnelle est nulle pour n<0, de


sorte quon a plutt


H (e ) = a n e jn
j

n =0

Pour dterminer le gain et la phase de notre filtre (rcursif dordre 1)


une frquence donne, il ne reste qu calculer le module et la phase
de cette somme. Pas vident, comme a. Sauf que, cette somme est
ce quon appelle une somme gomtrique, et on peut montrer
facilement que si |a| < 1,


1
H (e ) = a n e jn =
j

n =0 1 ae j

On a maintenant la forme de la rponse en frquence de notre filtre.


Cette fonction H(ej) donne le gain et le dphasage du filtre pour une
sinusode pure en entre de frquence . Quelle est la forme de H(ej)?

9
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Faisons un exemple en prenant a = 0.8. On a lquation aux


diffrences

y[n] = x[n] + 0.8 y[n-1]

qui dcrit un filtre dont la rponse impulsionnelle est

h[n] = 0.8n u[n]

et dont la rponse en frquence est

1
H ( e j ) =
1 0.8e j
Le gain de ce filtre pour une sinusode pure de frquence est

1 1
A( ) = H (e j ) = =
1 0.8e j 1 0.8 cos( ) + j 0.8 sin( )
1
=
(1 0.8 cos( )) 2 + (0.8 sin( )) 2

et son dphasage est

1 1
( ) = H (e j ) = =
1 0.8e j 1 0.8 cos( ) + j 0.8 sin( )
0.8 sin( )
= atan
1 0.8 cos( )

(Que voulez-vous, cest comme a)

On peut afficher A() et () avec MATLAB, comme suit :

10
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

(Cest un des avantages de MATLAB que de pouvoir manipuler


directement les nombres complexes)

Les courbes obtenues sont les suivantes ( gauche le module A() et


droite la phase ()):

Notez que lon peut obtenir ces courbes directement avec la fonction
freqz, comme suit :

11
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

(Notez encore linversion de signe des coefficients de la partie


rcursive ici, un seul coefficient qui vaut 0.8).

Pourquoi avoir fait tout ce dveloppement la main si on pouvait


obtenir la rponse en frquence directement avec freqz? Pour tre en
mesure dobtenir une expression pour la rponse en frquence. Nous
verrons dailleurs plus loin (avec la transforme en z) comment y
arriver directement et beaucoup plus rapidement partir de lquation
aux diffrences.

Quelle est donc le type de filtre dcrit par lquation aux diffrences

y[n] = x[n] + 0.8 y[n-1] ?

Daprs la forme du gain A() la page 11, on conclut quil sagit dun
filtre de nature passe-bas , dont le gain DC est gal 5 et donc le
gain = est gal environ . Vrifions cela avec la fonction filter
dans MATLAB :

Les courbes obtenues sont montres la figure suivante. La courbe du


haut est la DC damplitude 1. La deuxime courbe est la rponse la
DC (damplitude 5). La troisime courbe est la sinusode de frquence
= et damplitude 1 (sries dchantillons 1,-1,1,-1,etc.) et la courbe
du bas est la rponse cette sinusode, de gain proche de 0.5. Tout
semble donc bien se tenir

12
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Comme les filtres analogiques, les filtres numriques peuvent aussi


tre dfinis par leur fonction de transfert. Pour les filtres analogiques,
loutil mathmatique est la transforme de Laplace; pour les filtres
numriques, on dfinit plutt la transforme en z. Cette dernire
transformation est prsente la section 4.5 (page 89) de van den
Enden.

La transforme en z du signal temps discret x[n] est dfinie comme


suit :


X ( z) = x[n]z
n =
n

o z est une variable complexe. Il y a beaucoup dire sur la


transforme en z, son lien avec la Transforme de Laplace, ses
proprits, les notions de convergence, etc. Pour linstant, insistons
sur le rle central de cette transforme :

Tout comme la Transforme de Laplace permet disoler le


rapport H(s) = Y(s)/X(s), que lon appelle la fonction de
transfert dun systme temps continu, la transforme en

13
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

z permet disoler le rapport H(z) = Y(z)/X(z) dun systme


temps discret, o H(z) est appel la fonction de transfert
du systme.

Ceci est possible grce une des proprits de la transforme en z : la


proprit de dcalage, que lon va dmontrer ici.

Soit X(z) la transforme en z de x[n]. Quelle est alors la transforme


en z de x[n-k]? On a


X k ( z) = x[n k ]z
n =
n


= x[n k ]z
n =
( nk )
z k

= z k x[n k ]z
n =
( n k )


= z k x[m]z
m =
m
(o m = n k )
k
= z X ( z)

Ainsi, la transforme en z du signal x[n] retard de k (i.e. de x[n-k])


est gale la transforme en z de x[n] multiplie par une puissance
de z (i.e. z-k).

On peut maintenant calculer la fonction de transfert du filtre rcursif


dordre 1. Son quation aux diffrences est donne par

y[n] = x[n] + a y[n-1]

En appliquant la transforme en z de chaque ct de lquation, on


obtient

Y(z) = X(z) + a z-1 Y(z)

En isolant les termes en Y(z) gauche de lquation :

(1 - a z-1)Y(z) = X(z)

et ainsi, la fonction de transfert du filtre rcursif dordre 1 est

14
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Y (z) 1
H ( z) = =
X ( z ) 1 az 1

De cette fonction de transfert, on obtient rapidement la rponse en


frquences en notant que H(z) (dfinition encadre la page 13) et
H(ej) (dfinition encadre la page 2) sont relies comme suit :

H (e j ) = H ( z ) z =e j

Pour le filtre discret dordre 1, on a donc

1 1
H (e j ) = =
1 az 1 z = e j 1 ae j

Remarquez que ce rsultat est exactement le mme que celui trouv


au bas de la page 9 en prenant la transforme de Fourier discrte de
la rponse impulsionnelle du filtre. La rponse en frquence dun filtre
discret peut donc se trouver

1) en prenant la transforme de Fourier discrte de sa


rponse impulsionnelle h[n]
2) ou en calculant la fonction de transfert H(z) du filtre, et en
posant z = ej.

La forme de la rponse impulsionnelle de ce filtre rcursif dordre 1


peut tre trouve au tableau 4-3, la page 97 de van den Enden
(paire de transformes no. 4), partir de la rponse en frquence

1 z
H ( z) = =
1 az 1 z a

Afin de faire la synthse des notions vues dans cette section, nous
allons appliquer ces nouveaux outils aux filtres rcursifs dordre 2 et
faire quelques exemples. Nous reviendrons ensuite dans la section 5
la stabilit des filtres. Nous y introduirons le calcul des ples et des
zros dun filtre discret, et nous verrons (comme pour les filtres
analogiques) que les ples doivent se situer dans une rgion prcise
du plan complexe pour que le systme soit stable.

15
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

4.0 Filtres rcursifs dordre 2

Nous tudierons ici les filtres numriques de la forme

y[n] = x[n] + a1 y[n-1] + a2 y[n-2]

En appliquant la transforme en z cette quation aux diffrences, on


obtient

Y(z) = X(z) + a1 z-1 Y(z) + a2 z-2 Y(z)

et ainsi, la fonction de transfert est donne par

Y (z) 1 z2
H ( z) = = =
X ( z ) 1 a1 z 1 a 2 z 2 z 2 a1 z a 2

Le dnominateur de H(z) est un polynme dordre 2, dont les racines


sont

a1 1
p1, 2 = a1 + 4a 2
2

2 2

(On emploie la lettre p pour dcrire ces racines puisque ce sont les
ples du filtre plus de dtails la section 5.0). On peut donc crire la
fonction de transfert comme suit

z2
H ( z) =
( z p1 )( z p 2 )

En crivant les ples comme des nombres complexes dans la forme


exponentielle,

p1 = ae j
p2 = ae j

o a est leur module et est leur phase (si les racines sont
complexes, elles viennent toujours par paires conjugues), on peut
alors crire la fonction de transfert comme suit

16
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

z2
H ( z) =
( z p1 )( z p 2 )
z2
=
( z ae j )( z ae j )
z2
=
z 2 2az cos( ) + a 2

On reconnat facilement la forme de cette fonction de transfert dans le


tableau 4-3 de la page 97 de van den Enden (paire 8(c)). La forme de
la rponse impulsionnelle de ce filtre rcursif dordre 2 est donc une
sinusode discrte, de frquence rad/chantillons, multiplie par
lenveloppe anu[n]. Cette enveloppe explosera avec n si a > 1. On
a donc dj la condition pour quun filtre rcursif dordre 2 soit stable :

Le module de ses ples (racines du dnominateur de H(z))


doit tre infrieur 1.

Ples dun filtre Ples dun filtre


discret instable discret stable
x

Remarquez la diffrence entre les systmes analogiques et les


systmes numriques : dans un systme analogique stable, les ples
doivent tre gauche de laxe imaginaire dans le plan complexe
(partie relle ngative), alors que dans un systme numrique stable,

17
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

les ples doivent tre lintrieur du cercle unit (module infrieur


1).

La frquence doscillation de la rponse impulsionnelle h[n] dun filtre


rcursif dordre 2 dpend de la phase de ses ples, et la dure de
h[n] dpend du module a des ples plus les ples sont prs du cercle
unit, plus la rponse impulsionnelle est longue.

On montre ci-dessous les ples et la rponse impulsionnelle de 4 filtres


rcursifs dordre 2.

18
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Lexemple suivant montrera comment on a gnr les filtres des


figures prcdentes, partir de la valeur de leur ples, et calcul
ensuite leur rponse impulsionnelle.

Exemple 4.1

(a) Calculez les coefficients de lquation aux diffrences, et affichez


la rponse impulsionnelle, dun filtre discret rcursif dordre 2
dont les ples sont 0.9ej0.3 et 0.9e-j0.3 (module gal 0.9 et
phases gales 0.3).
(b) Mme chose quen (a), mais pour des ples positionns 0.9ej2
et 0.9e-j2 (module gal 0.9 et phases gales 2).

Solution

Le code MATLAB suivant donne la solution en (a) :

19
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Dans ce code, on fabrique dabord une impulsion discrte suivie de 49


zros. On dfinit ensuite les ples, p1 et p2, en posant que p2 est le
complexe conjugu de p1. Pour former le vecteur de coefficients de la
partie rcursive (le vecteur a), on utilise la fonction poly : celle-ci
prend en entre les racines dun polynme, et retourne les coefficients
du polynme en ordre dcroissant de la variable indpendante (ici, z).
Ensuite, on filtre limpulsion pour obtenir la rponse impulsionnelle, et
on affiche les coefficients du filtre.

Le rsultat de stem est la rponse impulsionnelle en bas droite de la


page 18. Les coefficients de la partie rcursive sont affichs dans le
vecteur a. Notez encore que leur signe est invers par rapport
lquation aux diffrences du filtre, qui est donc

y[n] = x[n] + 1.7196 y[n-1] - 0.81 y[n-2]

(cest exactement cette ligne de code qui se retrouverait dans une


boucle de filtrage en code C).

Pour la partie (b), le code MATLAB est tout fait similaire, sauf bien
sr la valeur des ples dont les phases sont plus leves (2 plutt que
0.3). Le code MATLAB pour la partie (b) est donc le suivant :

20
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Lquation aux diffrences de ce deuxime filtre est donc

y[n] = x[n] - 0.7491 y[n-1] - 0.81 y[n-2]

et la rponse impulsionnelle est la deuxime rponse impulsionnelle


affiche la page 19.

----------------

Comme montr dans la section 3.0 sur les filtres dordre 1, on trouve
la rponse en frquence H(ej) dun filtre numrique partir de sa
fonction de transfert H(z) en posant

z = ej

Pour un filtre rcursif dordre 2, dquation aux diffrences

y[n] = x[n] + a1 y[n-1] + a2 y[n-2]

la fonction de transfert est

Y ( z) 1
H (z) = =
X ( z ) 1 a1 z 1 a 2 z 2

de sorte que la rponse en frquence est

21
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

1
H ( e j ) =
1 a1e j a2 e j 2

Encore une fois, linformation que donne H(ej) est le gain et la phase
du filtre pour une sinusode pure en entre, de frquence . (On laisse
au lecteur le plaisir dcrire le module et la phase de la fonction H(ej)
ci-dessus).

Sans faire des calculs trs longs, on peut dj dterminer la rponse


du filtre pour des signaux dentre prcis, soit une DC et une sinusode
de frquence = . En effet, si lentre est une DC (discrte), la
frquence vaut 0 et ainsi

1 1
Gain DC = H (e j 0 ) = =
1 a1e a 2 e
0 0
1 a1 a2
(avec une phase nulle ou gale , selon le signe).

De mme, si lentre est une sinusode de frquence = , on a


1 1
H ( e j ) = j j 2
=
1 a1e a2 e 1 + a1 a2

(avec aussi une phase nulle ou gale ).

Par exemple, si lquation aux diffrences du filtre est

y[n] = x[n] + y[n-1] - 0.5 y[n-2]

sa fonction de transfert est

1
H (z) =
1 z 1 + 0.5 z 2

sa rponse en frquence est

1
H ( e j ) =
1 e j + 0.5e j 2

et ainsi, son gain DC ( =0) est 2 et son gain = est 2/3. Pour
avoir le gain et la phase du filtre aux autres frquences, il faut

22
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

remplacer par la frquence dsire et calculer le module et la phase


de H(ej). On peut aussi calculer H(ej) avec MATLAB :

On observe bien que le gain du filtre = 0 et = est tel que


calcul ci-dessus.

5.0 Ples, zros et stabilit

Dans la section 3.0, on a vu que le ple (unique) dun filtre rcursif


dordre 1 doit avoir un module infrieur 1 pour que le filtre soit
stable. Pour les filtres rcursifs dordre 2 (vus dans la section 4.0), on
a observ la mme contrainte pour les 2 ples du filtre.

Puisque la fonction de transfert H(z) de tout filtre peut scrire comme


la somme de fonctions dordre 1 ou 2 en dcomposant H(z) en
fractions partielles, on en dduit que tout filtre discret sera stable si le
module de ses ples est infrieur 1, i.e. si les ples sont lintrieur
dun cercle de rayon 1 dans le plan complexe.

6.0 Ples, zros et rponse en frquence

Dans les systmes temps continu, la forme de la rponse en


frquence dun systme est dtermine par la position de ses ples et
de ses zros. A proximit dun ple, le module de la rponse en
frquence devient plus lev (rsonance), et proximit dun zro, le
module de la rponse en frquence devient plus petit. Dans les
systmes temps continu, la rponse en frquence est obtenue en

23
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

remplaant s par j dans H(z). Puisque le point j est un nombre


imaginaire pur, laxe imaginaire reprsente laxe des frquences : plus
augmente, plus on se dplace vers le haut dans le plan complexe et
plus on se dplace vers les hautes frquences dans la rponse en
frquence correspondante.

Dans les systmes discrets, le principe est le mme sauf que ce nest
plus laxe imaginaire qui joue le rle des frquences. En effet, pour
dterminer la rponse en frquence dun filtre numrique, on remplace
z par ej dans H(z). Le point ej est un nombre complexe de module 1
et de phase . Ceci reprsente un point sur le cercle de rayon 1 dans le
plan complexe. Ainsi, pour un filtre discret, cest le cercle de rayon 1
qui joue le rle de laxe des frquences . On retrouve ici la limite de
lchantillonnage puisque laxe des frquences est de longueur finie (le
cercle). A = correspond Fe/2, la frquence de Nyquist (moiti de la
frquence dchantillonnage).

Mise part cette diffrence fondamentale entre les systmes temps


continu et temps discret, leffet des ples et des zros est le mme :
lorsquun point ej (sur le cercle unit) se rapproche dun ple, cela
cause une rsonance dans la rponse en frquence correspondante, et
lorsquun point ej se rapproche dun zro, cela cause une diminution
du gain dans la rponse en frquence.

Prenons par exemple un filtre numrique dcrit par la fonction de


transfert suivante :

( z 1)( z + 1)
H ( z) =
( z 0.8 j )( z + 0.8 j )

Ce filtre a deux zros et deux ples. Les deux zros sont

z1 = 1
z2 = -1

et les deux ples sont

p1 = 0.8 j
p2 = -0.8 j

Graphiquement, on a :

24
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

En parcourant le cercle unit de = 0 = (demi-cercle positif), on


trouve deux zros ( la DC et la plus haute frquence numrique,
= ), et on passe prs dun ple = /2, o devrait se trouver une
rsonance dans la rponse en frquence.

Pour vrifier, on va dterminer lquation aux diffrences de ce filtre et


calculer la rponse en frquence avec la fonction freqz. En multipliant
les termes au numrateur et au dnominateur de H(z), on trouve

z 2 1
H ( z) =
z 2 + 0.64

En mettant en vidence le terme z2 au numrateur et au dnominateur


et en divisant, on obtient

1 z 2
H ( z) =
1 + 0.64 z 2

Puisque H(z) = Y(z) / X(z), on a

(1 + 0.64 z 2 )Y ( z ) = (1 z 2 ) X ( z )

Et en appliquant la transforme en z inverse

y[n] + 0.64 y[n-2] = x[n] - x[n-2]

25
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

do

y[n] = x[n] - x[n-2] - 0.64 y[n-2]

(lquation aux diffrence du filtre).

On peut maintenant calculer et afficher la rponse en frquence du


filtre avec MATLAB :

(Notez encore une fois linverse de signes des coefficients de la partie


rcursive dans la notation MATLAB par rapport lquation aux
diffrences). On obtient ainsi le module de la rponse en frquence, o
laxe horizontal est la frquence en rad/chantillon :

26
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Remarquez le gain nul vis--vis les valeurs de correspondant aux


zros du filtre, et la rsonance = /2, correspondant lengle des
ples.

Noter quon aurait pu entrer dans la fonction freqz directement les


coefficients du numrateur (vecteur b) et du dnominateur (vecteur a)
de la fonction de transfert H(z) du filtre, donne au bas de la page 25.
Cest justement ainsi quil faut interprter les coefficients de filtres
dans MATLAB : les fonctions filter, freqz, et autres fonctions de filtrage
supposent quon leur donne les coefficients de la fonction de transfert
dune filtre, et non les coefficients de son quation aux diffrences.
Cest une question de convention, mais il faut la respecter. Noter
dailleurs que les fonctions de conception de filtres telles butter et
cheby1 retournent les coefficients b et a correspondant respectivement
au numrateur et au dnominateur de la fonction de transfert du filtre.

Nous avons maintenant fait le tour des outils principaux de lanalyse


des filtres numriques linaires :

- la rponse impulsionnelle et la convolution


- lquation aux diffrences
- la fonction de transfert
- la rponse en frquence

Toutes ces notions sont couvertes au chapitre 4 de van den Enden, qui
propose aussi quelques exercices la fin du chapitre. On suggre
fortement de rsoudre ces exercices, dont la rponse pour certains est
donne la fin du livre.

Les laboratoires aideront galement se familiariser davantage avec


ces notions.

La section suivante propose quelques exercices de rvision des notions


vues ici.

27
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

7.0 Exercices

Exercice 7.1

Calculez la transforme de Fourier temps discret X(ej) des signaux


x[n] suivants.

(a) x[n] = [n-3]


(b) x[n] = [n+2] + [n+1] + [n] + [n-1] + [n-2]
(c) x[n] = -[n+2] + [n+1] + [n] + [n-1] - [n-2]

Exercice 7.2

Un filtre est dfinit par lquation aux diffrences suivante

y[n] = x[n] - 0.9 y[n-2]

Donnez

(a) la forme de sa rponse impulsionnelle h[n]


(b) sa fonction de transfert H(z)
(c) le module et la phase de sa rponse en frquence H(ej)
(d) la rponse y[n] du filtre si lentre est x[n] = 10 cos (n/2)

Vrifiez vos rponses avec MATLAB. Calculez la transforme de Fourier


(fft) des 256 premiers chantillons de h[n] et montrez quelle est
quivalente (module et phase) la rponse en frquence calcule par
freqz. Conclusion : La transforme de Fourier de la rponse
impulsionnelle h[n] est la fonction de transfert H(ej) du filtre.

Exercice 7.3

Un filtre discret est dfini par lquation aux diffrences suivante :

y[n] = 0.675 x[n] + 0.1349 x[n-1] + 0.675 x[n-2]


+ 1.143 y[n-1] - 0.4128 y[n-2]

crivez la fonction de transfert H(z) et la rponse en frquence H(ej)


de ce filtre.

28
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Avec MATLAB, obtenez le module de H(ej) (fonction freqz) et dites de


quel type de filtre il sagit (passe-bas, passe-haut, etc, en indiquant sa
frquence de coupure).

Exercice 7.4

La fonction de transfert dun filtre discret est donne sous la forme

K ( z z1)( z z 2)
H ( z) =
( z p1)( z p 2)

o K = 1, z1= j, z2= -j, p1= 0.95 ej/8 et p2= 0.95 e-j/8.

(a) Affichez les ples et les zros de ce filtre dans le plan


complexe
(b) Le filtre est-il stable ?
(c) crivez lquation aux diffrences du filtre
(d) Donnez la fonction de transfert H(ej) du filtre
(e) Dans MATLAB, gnrez un signal alatoire x[n] de 8000
chantillons avec la fonction randn. Filtrez ensuite x[n]
avec le filtre dcrit ci-dessus pour obtenir le signal y[n].
Calculez la transforme de Fourier de x[n] et de y[n].
Comparez avec la forme du module de H(ej) et
commentez. coutez ces signaux et commentez choisissez
Fe = 8 kHz).

Exercice 7.5

En positionnant deux zros et deux ples dans le plan complexe, faites


la conception dun filtre rjection ( notch filter ) qui coupe la
frquence = /16, et qui laisse passer essentiellement toutes les
autres frquences. (Pensez leffet des ples et des zros sur le
module de la rponse en frquence du filtre).

Donnez ensuite la fonction de transfert H(z) du filtre et son quation


aux diffrences. Dans MATLAB, calculez avec freqz sa rponse en
frquence et assurez-vous que son module est bien celui du filtre
dsir.

29
GEI605 Traitement du signal
Analyse des filtres numriques
Roch Lefebvre, Professeur

Testez ensuite votre filtre en filtrant le signal

x[n] = sin (n/16) + sin (n/32)

et en montrant que la sinusode sin (n/16) nest plus prsente en


sortie. (Prenez suffisamment dchantillons pour aller au-del de la
priode transitoire du filtre).

30

Vous aimerez peut-être aussi