Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Réponse impulsionnelle

Un filtre RIF a pour réponse impulsionnelle :

h[n]={bnsin{0,,N},0sinon.h[n] = \begin{cases} b_n &\text{si}\, n \in \{0,\dots,N\}, \\ 0 &\text{sinon}. \end{cases}

Sa réponse impulsionnelle est finie car elle possède N+1N+1 coefficients non nuls : on dit que le filtre est de longueur N+1N+1, ou d’ordre NN.

Fonction de transfert

La transformée en Z de hh donne la fonction de transfert :

H(z)=n=+h[n]zn=n=0Nbnzn.H(z) = \sum_{n=-\infty}^{+\infty} h[n] z^{-n} = \sum_{n=0}^{N} b_n z^{-n}.

NN est l’ordre du filtre.

Cette fonction de transfert est particulière car elle ne possède pas de pôle, autrement dit, son dénominateur est égal à 1. L’absence de pôle est une particularité des filtres RIF, et comme ils ne risquent pas d’avoir de pôles à l’extérieur du cercle unité, ils sont toujours stables ! Les filtres RIF sont parfois appelés filtres à moyenne mobile ou MA (moving average).

Schéma bloc

✏️ Exercice 13

Les filtres numériques sont souvent représentés sous forme d’un schéma bloc, qui illustre graphiquement les relations entre l’entrée et la sortie du filtre. Pour cela, il convient d’exprimer la sortie en fonction de l’entrée. Comme on sait que la fonction de transfert H(z)H(z) est le rapport entre la sortie sur l’entrée :

H(z)=Y(z)X(z),H(z) = \frac{Y(z)}{X(z)},

alors :

n=0Nbnzn=Y(z)X(z)Y(z)=n=0NbnznX(z)\sum_{n=0}^{N} b_n z^{-n} = \frac{Y(z)}{X(z)} \qquad\Leftrightarrow\qquad Y(z) = \sum_{n=0}^{N} b_n z^{-n} X(z)

dont la transformée en z inverse est, grâce à la propriété de linéarité :

y[n]=k=0Nbkx[nk]=b0x[n]+b1x[n1]+b2x[n2]++bNx[nN].\begin{align*} y[n] &= \sum_{k=0}^{N} b_k x[n-k] \\ &= b_0 x[n] + b_1 x[n-1] + b_2 x[n-2] + \dots + b_N x[n-N]. \end{align*}

La sortie y[n]y[n] est donc la somme de N+1N+1 échantillons d’entrée pondérés par les coefficients bkb_k et retardés de kk échantillons. On peut donc adopter la représentation suivante, où le bloc z1z^{-1} indique un retard :

Contrairement aux schémas-blocs des filtres RII que l’on verra plus loin, il n’y a pas de boucle de retour pour les filtres RIF : on dit qu’ils sont non récursifs. Par conséquent, la sortie ne peut pas être réinjectée indéfiniment dans le filtre, empêchant toute instabilité.

Linéarité de la phase

La linéarité de la phase est souvent un critère souhaité. Les filtres RIF sont à phase linéaire si leur réponse impulsionnelle est symétrique (attention, symétrique ne veut pas dire paire ici !) ou antisymétrique, c’est-à-dire :

n{0,,N}h[n]=h[N1n]pour un filtre symeˊtrique,h[n]=h[N1n]pour un filtre antisymeˊtrique.\begin{align*} \forall n\in\{0,\dots,N\}\quad &h[n] = h[N-1-n] &\quad\text{pour un filtre symétrique,} \\ &h[n] = -h[N-1-n] &\quad\text{pour un filtre antisymétrique.} \end{align*}

La Figure 2 illustre ces propriétés.

Exemples de réponses impulsionnelles symétriques (types I et II) et antisymétriques (types III et IV).

Figure 2:Exemples de réponses impulsionnelles symétriques (types I et II) et antisymétriques (types III et IV).

Notons que les filtres de type II, III et IV ne sont pas adaptés pour synthétiser des filtres passe-haut.

Une méthode toute simple pour synthétiser un RIF

Une idée toute simple pour obtenir un filtre RIF est de tronquer la réponse impulsionnelle d’un filtre idéal.

Prenons l’exemple d’un filtre passe-bas, tel qu’on l’a vu dans la section Filtre passe bas. Sa réponse fréquentielle est (pour simplifier l’exposé, on prend K=1K=1 et a=0a=0) :

Hideˊal(f)={1siffc,0sifc<f<fe/2.H_\text{idéal}(f) = \begin{cases} 1 &\text{si}\, |f| \leq f_c, \\ 0 &\text{si}\, f_c < |f| < f_e/2. \end{cases}

Remarquez qu’on a ajouté la condition f<fe/2|f| < f_e/2 puisque le filtre est numérique et que, d’après le théorème de l’échantillonnage, il n’y a pas de fréquence au delà de la fréquence de Nyquist.

La transformée de Fourier à temps discret inverse de Hideˊal(f)H_\text{idéal}(f) est un sinus cardinal :

hideˊal[n]=2fcsinc(2fcn).h_\text{idéal}[n] = 2 f_c \, \mathrm{sinc}(2f_c n).

En ne conservant que N+1N+1 échantillons, on obtient forcément un filtre de réponse impulsionnelle finie. On choisit pour cela de tronquer hideˊalh_\text{idéal} autour de l’échantillon n=0n=0, et de décaler les échantillons conservés de sorte à rendre le filtre causal. Ce nouveau filtre a pour réponse impulsionnelle :

h[n]={2fcsinc(2fc(nN/2))si n{0,,N}0sinon.h[n] = \begin{cases} 2 f_c \, \mathrm{sinc}(2f_c (n-N/2)) &\text{si $n \in \{0,\dots,N\}$} \\ 0 &\text{sinon}. \end{cases}
Troncature et décalage de la réponse impulsionnelle idéale.
Vous noterez que ce filtre est de type I.

Figure 3:Troncature et décalage de la réponse impulsionnelle idéale. Vous noterez que ce filtre est de type I.

Enfin, la transformée de Fourier à temps discret de hh nous permet d’obtenir la réponse fréquentielle du filtre. Son expression est assez complexe et nous ne la détaillons pas ici. La Figure 4 représente le gain de ce filtre RIF construit à partir de la troncature d’un filtre idéal.

Réponse fréquentielle du filtre tronqué et décalé.

Figure 4:Réponse fréquentielle du filtre tronqué et décalé.

On observe plusieurs choses sur cette figure :

Les oscillations sont d’ailleurs de plus en plus grandes lorsqu’on s’approche de la bande de transition : c’est le phénomène de Gibbs. Il s’avère que ces oscillations ne s’atténuent pas lorsque NN augmente, alors que pourtant le filtre RIF se rapproche de plus en plus du filtre idéal !

L’interprétation que l’on peut faire de ces observations est la suivante. La troncature revient à multiplier la réponse impulsionnelle hideˊalh_\text{idéal} par une porte w[n]w[n] (on parle de « fenêtrage rectangulaire ») :

h[n]=hideˊal[n]×w[n].h[n] = h_\text{idéal}[n] \times w[n].

Dans le domaine de Fourier, cela revient à convoluer la réponse fréquentielle HideˊalH_\text{idéal} par W(f)W(f) qui est la transformée de Fourier à temps discret de w[n]w[n] :

H(f)=Hideˊal(f)W(f),H(f) = H_\text{idéal}(f) * W(f),

où :

W(f)=ejπfNsin(πf(N+1))sin(πf).W(f) = e^{-j \pi f N} \frac{\sin(\pi f(N+1))}{\sin(\pi f)}.

W(f)W(f) est la multiplication d’une exponentielle avec un « noyau de Dirichlet » (cf. Figure 5).

Noyau de Dirichlet.
Ça ressemble à un sinus cardinal, mais ce n’en est pas un.

Figure 5:Noyau de Dirichlet. Ça ressemble à un sinus cardinal, mais ce n’en est pas un.

On observe que lorsque NN augmente, le lobe principal du noyau de Dirichlet se rétrécit, et donc la bande de transition du filtre également. Obtenir des bandes de transition très faibles oblige donc à augmenter considérablement l’ordre du filtre NN, résultant alors dans un filtre à réponse impulsionnelle pas tant finie que ça...

Méthode des fenêtres

La méthode des fenêtres reprend l’idée précédente (troncature de la réponse impulsionnelle d’un filtre idéal) mais la fenêtre n’est pas forcément une porte. Cette idée est généralement attribuée à Kaiser, 1974. Chaque fenêtre aura ses propres caractéristiques et un compromis devra être fait pour choisir entre une bande de transition réduite, des osccillations en bande passante faibles et une atténuation suffisante, tout en ayant un ordre réduit.

Le tableau ci-dessous donne les propriétés des réponses fréquentielles obtenues pour plusieurs fenêtres (la fréquence réduite est la fréquence divisée par fef_e).

FenêtreLargeur de transition (fréquence réduite)Ondulation en bande passante (dB)Atténuation minimale (dB)
Rectangulaire0,9/N0,9/N0,7420,74221
Hamming3,3/N3,3/N0,0190,01953
Blackman5,5/N5,5/N0,0020,00274
Kaiser β=4,538\beta=4,5382,93/N2,93/N0,02740,027450
Kaiser β=6,764\beta=6,7644,32/N4,32/N0,002750,0027570
Kaiser β=8,960\beta=8,9605,71/N5,71/N0,0002750,00027590
Paramètres de la fenêtre de Kaiser

Pour la fenêtre de Kaiser, la largeur de transition Δf\Delta_f, l’atténuation minimale AA et l’ordre du filtre NN sont liés par l’équation [Oppenheim 1989] :

A=4,57πΔfN+8.A = 4,57\,\pi\Delta_fN + 8.

Quant au paramètre β\beta, il se déduit de l’atténuation minimale AA [Oppenheim 1989] :

β={0,1102(A8,7)si A>50,0,5842(A21)0,4+0,07886(A21)si 21A50,0si A<21.\beta = \begin{cases} 0,1102(A-8,7) &\quad\text{si } A>50, \\ 0,5842(A-21)^{0,4} + 0,07886(A-21) &\quad\text{si } 21 \leq A \leq 50, \\ 0 &\quad\text{si } A<21. \end{cases}

Les figures ci-après permettent de comparer les différentes fenêtres en termes de réponse impulsionnelle (Figure 6) et gain (Figure 7).

Fenêtres classiques de longueur N+1=21.

Figure 6:Fenêtres classiques de longueur N+1=21N+1=21.

Gain de filtres passe-bas de fréquence de coupure f_e/5
pour des fenêtres classiques de taille N=20.

Figure 7:Gain de filtres passe-bas de fréquence de coupure fe/5f_e/5 pour des fenêtres classiques de taille N=20N=20.

✏️ Exercice 14

Autres méthodes de synthèse

La méthode des fenêtres peut donner des ordres de filtres surévalués. D’autres méthodes de synthèse existent, comme par exemple la méthode de Parks-McClellan qui ajuste les coefficients de manière itérative pour que l’écart au filtre idéal soit inférieure à une valeur limite. La méthode est accessible avec la fonction scipy.signal.remez (car elle est une variation de l’algorithme de Remez).