Filtres RIF#

Réponse impulsionnelle#

Un filtre RIF a pour réponse impulsionnelle :

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

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

Fonction de transfert#

La transformée en Z de \(h\) donne la fonction de transfert :

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

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#

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)\) est le rapport entre la sortie sur l’entrée :

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

alors :

\[ \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é :

\[\begin{split} 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{split}\]

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

../_images/filtre-rif.svg

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 :

\[\begin{split} \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{split}\]

La Fig. 19 illustre ces propriétés.

../_images/rif-types.svg

Fig. 19 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=1\) et \(a=0\)) :

\[\begin{split} 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} \end{split}\]

Remarquez qu’on a ajouté la condition \(|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 \(H_\text{idéal}(f)\) est un sinus cardinal :

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

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

\[\begin{split} 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} \end{split}\]
../_images/fenetre-troncature.svg

Fig. 20 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 \(h\) 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 Fig. 21 représente le gain de ce filtre RIF construit à partir de la troncature d’un filtre idéal.

../_images/rif-rf.svg

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

On observe plusieurs choses sur cette figure :

  • il y a des oscillations en bande passante et en bande atténuée,

  • la bande de transition n’est pas nulle.

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 \(N\) 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 \(h_\text{idéal}\) par une porte \(w[n]\) (on parle de « fenêtrage rectangulaire ») :

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

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

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

où :

\[ W(f) = e^{-j \pi f N} \frac{\sin(\pi f(N+1))}{\sin(\pi f)}. \]

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

../_images/dirichlet.svg

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

On observe que lorsque \(N\) 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 \(N\), 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. 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 \(f_e\)).

Fenêtre

Largeur de transition (fréquence réduite)

Ondulation en bande passante (dB)

Atténuation minimale (dB)

Rectangulaire

\(0,9/N\)

\(0,742\)

\(21\)

Hamming

\(3,3/N\)

\(0,019\)

\(53\)

Blackman

\(5,5/N\)

\(0,002\)

\(74\)

Kaiser \(\beta=4,538\)

\(2,93/N\)

\(0,0274\)

\(50\)

Kaiser \(\beta=6,764\)

\(4,32/N\)

\(0,00275\)

\(70\)

Kaiser \(\beta=8,960\)

\(5,71/N\)

\(0,000275\)

\(90\)

../_images/rif-windows.svg

Fig. 23 Fenêtres classiques de taille \(N=20\).#

../_images/rif-window-method.svg

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

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