306 lines
15 KiB
Markdown
306 lines
15 KiB
Markdown
<header><h1>
|
||
Filtres numériques
|
||
</h1></header>
|
||
|
||
-----------
|
||
|
||
# Filtres numériques récursifs (IIR)
|
||
|
||
Les filtres numériques récursifs (IIR) sont des filtres numériques qui utilisent des rétroactions.
|
||
Ils sont basés sur des équations aux différences.
|
||
Les filtres récursifs sont utilisés pour des applications où la phase du filtre n'est pas critique.
|
||
Ils sont utilisés dans les télécommunications et la régulation.
|
||
|
||
Les intérêts des filtres récursifs :
|
||
- Leur faible coût en calcul
|
||
- Faible retard (télécommunication et la régulation)
|
||
|
||
Les inconvénients des filtres récursifs :
|
||
- Ils possèdent une phase non-linéaire
|
||
- Ils peuvent avoir une instabilité numérique
|
||
|
||
***Fonction de transfert en $z$ :***
|
||
$$F(z) = \frac{Y(z)}{U(z)} = \frac{b_{0}+b_{1}z^{-1}+\dots+b_{n}z^{-1}}{1+a_{1}z^{-1}+\dots+a_{n}z^{-n}}$$
|
||
Numérisation par conversion DA et AD d'un filtre analogique :
|
||
$$F(z) = (1-z^{-1})Z \left\{ L^{-1}\left[ \frac{F(s)}{s} \right] \right\} $$
|
||
La fonction de transfert en *z* permet ensuite de tirer l'équation aux différences qui servira à réaliser le filtre sous forme d'un algorithme récursif
|
||
$$y[k]= b_{n}u[k-n]+ \dots + b_{1}u[k-1]+b_{0}u[k]-a_{n}y[k-n]-\dots-a_{1}y[k-1]$$
|
||
|
||
Si on souhaite connaître la réponse fréquentielle d'un filtre, il suffit de remplacer l'opérateur *z* par sa transformée de Fourier :
|
||
$$a\cdot z^{n}=a\cdot \exp(n\cdot s\cdot T_{s})=a\cdot \exp(n\cdot \mathbf{j}\omega T_{s})$$
|
||
$T_{s}$ : La période d'échantillonnage
|
||
|
||
Comme l’exponentielle imaginaire est périodique, la réponse fréquentielle d’un filtre numérique est également périodique
|
||
de fréquence, et sa représentation se fait dans le domaine de fréquences allant de $0$ à $fs/2$. <br>
|
||
Le gain statique d’un filtre peut être calculé selon :
|
||
$$\text{Gain statique d'un filtre} = \lim_{ s \to 0 } F(s) = \lim_{ z \to 1 } F(z)$$
|
||
|
||
> [!NOTE|label:Passage pôle et zéro s ↔ z]
|
||
> $$\begin{align}
|
||
z&=\exp(s\cdot T_{s}) \\
|
||
s&=\frac{1}{T_{s}\ln(z)}
|
||
\end{align}$$
|
||
|
||

|
||

|
||
|
||
## Transformation analogique-numérique
|
||
La transformation bilinéaire : transformation de Tustin ou approximation de Padé de premier ordre
|
||
$$s = \frac{2}{T_{s}} \frac{z-1}{z+1} \qquad \qquad z = \frac{1+\frac{1}{2}sT_{s}}{1-\frac{1}{2}sT_{s}}$$
|
||
|
||
***Pour un filtre analogique de premier ordre :***
|
||
$$F(s)=\frac{d_{0}+d_{1}s}{c_{0}+c_{1}s} \to F(z) = \frac{b_{1}z^{-1}+b_{0}}{a_{1}z^{-1}+1} $$
|
||
$$
|
||
a_{1} = \frac{c_{0}-\frac{2c_{1}}{T_{s}}}{c_{0}+\frac{2c_{1}}{T_{s}}}
|
||
\qquad \qquad
|
||
b_{0} = \frac{d_{0}+\frac{2d_{1}}{T_{s}}}{c_{0}+\frac{2c_{1}}{T_{s}}}
|
||
\qquad \qquad
|
||
b_{1} = \frac{d_{0}-\frac{2d_{1}}{T_{s}}}{c_{0}+\frac{2c_{1}}{T_{s}}}
|
||
$$
|
||
|
||
***Pour un filtre analogique de second ordre :***
|
||
$$F(s)=\frac{Y(s)}{U(s)}=\frac{d_{0}+d_{1}s+d_{2}s^{2}}{c_{0}+c_{1}s+c_{2}s^{2}}
|
||
\to F(z) = \frac{Y(z)}{U(z)}=\frac{b_{2}z^{-2}+b_{1}z^{-1}+b_{0}}{a_{2}z^{-2+}a_{1}z^{-1}+1} $$
|
||
$$\begin{gather}
|
||
C = c_{0}+\frac{2c_{1}}{T_{s}}+\frac{4c_{2}}{T_{s}^{2}} \\
|
||
\\
|
||
a_{1} = \frac{2\left( c_{0}-\frac{4c_{2}}{T_{s^{2}}} \right)}{C}
|
||
\qquad \qquad
|
||
a_{2} = \frac{ c_{0}-\frac{2c_{1}}{T_{s}}+\frac{4c_{2}}{T_{s^{2}}} }{C}
|
||
\qquad \qquad
|
||
b_{0} = \frac{d_{0}+\frac{2d_{1}}{T_{s}}+\frac{4d_{2}}{T_{s}^{2}}}{C} \\
|
||
\\
|
||
b_{1} = \frac{2\left( d_{0}-\frac{4d_{2}}{T_{s^{2}}} \right)}{C}
|
||
\qquad \qquad
|
||
b_{2} = \frac{d_{0}-\frac{2d_{1}}{T_{s}}+\frac{4d_{2}}{T_{s^{2}}}}{C}
|
||
\end{gather}$$
|
||
|
||
# Filtre numérique non-récursif (FIR)
|
||
|
||
Les filtres numériques non-récursifs (FIR) sont des filtres numériques qui n'utilisent pas de rétroactions.
|
||
Ils sont basés sur des équations aux différences.
|
||
Les filtres non-récursifs sont utilisés pour des applications où la phase du filtre est critique.
|
||
Ils sont utilisés dans le traitement du signal et la conception de filtres.
|
||
|
||
Les intérêts des filtres non-récursifs :
|
||
- Les fonctions de transfert ne possèdent que des coefficients $b_i$. ($\forall a_{i} = 0$)
|
||
- Ils possèdent une phase linéaire exacte
|
||
- Ils sont stables
|
||
|
||
Les inconvénients des filtres non-récursifs :
|
||
- Ils sont plus coûteux en calcul
|
||
- Ils nécessitent plus de matériel
|
||
|
||
Coefficients symétrique: pairs $b_{n-i} = b_{i}$, impairs $b_{n-i} = -b_{i}$, $b_{n/2}=0$ <br>
|
||
|
||
**Symétrie paire:**
|
||
$$H(\mathbf{j}\omega)
|
||
= \sum^{n}_{i=o}b_{i}e^{-\frac{\mathbf{j}i\omega}{f_{s}}}
|
||
= e^{\frac{-\mathbf{j}n\omega}{2f_{s}}} \sum^{n/2}_{i=0}b_{i}\cos\left[ \frac{\left( i-\frac{n}{2} \right)\omega}{f_{s}} \right]$$
|
||
|
||
**Symétrie impaire:**
|
||
$$H(\mathbf{j}\omega)=\mathbf{j}e^{\frac{-\mathbf{j}n\omega}{2f_{s}}}\sum^{n/2}_{i=0}b_{i}\sin\left( \frac{(i-\frac{n}{2})\omega}{f_{s}} \right)$$
|
||
|
||
Les filtres FIR à coefficients symétriques ont une phase linéaire.
|
||
$$
|
||
\text{Symétrie paire : }\varphi(\omega)=-\frac{n\omega}{2f_{s}}
|
||
\qquad \qquad
|
||
\text{Symétrie impaire : } \varphi(\omega)= -\frac{n\omega}{2f_{s}}+\frac{\pi}{2}
|
||
$$
|
||
$$\text{Temps de propagation : }t_{gr}=-\frac{d\varphi}{d\omega}=\frac{n}{2f_{s}}=\frac{n}{2}T_{s}$$
|
||
Il y a donc 4 types de filtres FIR à phase linéaire : n resp. symétrie paire/impaire
|
||
|
||
|
||
***Fonction de transfert en $z$ :***
|
||
$$F(z) = \frac{Y(z)}{U(z)} = b_{0}+b_{1}z^{-1}+\dots+b_{n}z^{-1}$$
|
||
|
||
***Équation aux différences :***
|
||
$$y[k]= b_{n}u[k-n]+ \dots + b_{1}u[k-1]+b_{0}u[k]$$
|
||
|
||
***Réponse en fréquence :***
|
||
$$z=\exp(\mathbf{j}\omega\cdot T_{s})$$
|
||
|
||
## Filtres FIR à symétrie paire :
|
||
$$b_{n-k} = b_{k}$$
|
||
|
||
Exemple : FIR à symétrie paire d'ordre 6
|
||
$$\begin{align}
|
||
F(z) &= \frac{Y(z)}{U(z)} \\
|
||
&= 1+2z^{-1}+3z^{-2}+4z^{-3}+3z^{-4}+2z^{-5}+z^{-6} \\
|
||
&= \frac{z^{6}+2z^{5}+3z^{4}+4z^{3}+3z^{2}+2z^{1}+1}{z^{6}}
|
||
\end{align}$$
|
||
Les filtres FIR à symétrie paire sont toujours de type passe-bas ou coupe-bande. <br>
|
||
Ils possèdent autant de pôles que l'order du filtre. Ces derniers sont à (0,0) sur le cercle unité. <br>
|
||
Ils possèdent autant de zéros que l'ordre du filtre. Ces derniers sont sur le cercle unité. <br>
|
||
|
||
## Filtres FIR à symétrie impaire :
|
||
$$b_{n-k} = -b_{k}$$
|
||
Exemple : FIR à symétrie impaire d'ordre 6
|
||
$$\begin{align}
|
||
F(z) &= \frac{Y(z)}{U(z)} \\
|
||
&= -1-2z^{-1}-3z^{-2}+0z^{-3}+3z^{-4}+2z^{-5}+z^{-6} \\
|
||
&= \frac{z^{6}+2z^{5}+3z^{4}+0z^{3}-3z^{2}-2z^{1}-1}{z^{8}}
|
||
\end{align}$$
|
||
Les filtres FIR à symétrie paire sont toujours de type passe-haut ou passe-bande. <br>
|
||
Ils possèdent autant de pôles que l'ordre du filtre. Ces derniers sont à (0,0) sur le cercle unité. <br>
|
||
Ils possèdent autant de zéros que l'ordre du filtre. <br>
|
||
|
||
# Filtres numériques FIR idéaux
|
||
$$\omega_{c_{d}} = 2\pi \frac{f_{c_{a}}}{f_{s}}$$
|
||
|
||
## Filtre passe-bas idéal
|
||
$$H(\mathbf{j}\omega)=\begin{cases}
|
||
1 &\text{ si } |\omega| \leq \omega_{c} \\
|
||
0 &\text{ si } |\omega| > \omega_{c}
|
||
\end{cases} $$
|
||
La transformée de Fourier inverse donne la réponse impulsionnelle d’un filtre passe-bas idéal.
|
||
|
||
$$h[n] = \begin{cases}
|
||
\frac{\omega_{c}}{\pi} \frac{\sin((n-N_{s})\omega_{c})}{(n-N_{s})\omega_{c}} &\text{ si } 0\leq n \leq N \\
|
||
\\
|
||
\frac{\omega_{c}}{\pi} &\text{ si } n=N_{s} \\
|
||
\\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
|
||
On tronque à $N=ordre$ du filtre. $N_{s}=\frac{N}{2}$ <br>
|
||
Ces coefficients ne sont rien d’autre que les coefficients de la fonction de transfert en *z* du filtre passe-bas idéal.
|
||
|
||
## Filtre passe-haut idéal
|
||
$$H(\mathbf{j}\omega)=\begin{cases}
|
||
0 &\text{ si } |\omega| \leq \omega_{c} \\
|
||
1 &\text{ si } |\omega| > \omega_{c}
|
||
\end{cases}$$
|
||
La transformée de Fourier inverse donne la réponse impulsionnelle d’un filtre passe-bas idéal.
|
||
|
||
$$h[n] = \begin{cases}
|
||
-\frac{\omega_{c}}{\pi} \frac{\sin((n-N_{s})\omega_{c})}{(n-N_{s})\omega_{c}} &\text{ si } 0\leq n \leq N \\
|
||
\\
|
||
1-\frac{\omega_{c}}{\pi} &\text{ si } n=N_{s} \\
|
||
\\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
|
||
On tronque à $N=ordre$ du filtre. $N_{s}=\frac{N}{2}$ <br>
|
||
Ces coefficients ne sont rien d’autre que les coefficients de la fonction de transfert en *z* du filtre passe-haut idéal.
|
||
|
||
## Filtre passe-bande idéal
|
||
$$H(\mathbf{j}\omega)=\begin{cases}
|
||
1 &\text{ si } \omega_{c_{1}} \leq \omega \leq \omega_{c_{2}} \\
|
||
0 &\text{ si } \omega \leq \omega_{c_{1}} \quad et \quad \omega\geq \omega_{c_{2}}
|
||
\end{cases}$$
|
||
La transformée de Fourrier inverse donne la réponse impulsionnelle d’un filtre passe-bande idéal.
|
||
|
||
$$h[n] = \begin{cases}
|
||
\frac{\omega_{c_{2}}}{\pi} \frac{\sin((n-N_{s})\omega_{c_{2}})}{(n-N_{s})\omega_{c_{2}}}-\frac{\omega_{c_{1}}}{\pi} \frac{\sin((n-N_{s})\omega_{c_{1}})}{(n-N_{s})\omega_{c_{1}}} &\text{ si } 0\leq n \leq N \\
|
||
\\
|
||
\frac{\omega_{c_{2}}-\omega_{c_{1}}}{\pi} &\text{ si } n=N_{s}\\
|
||
\\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
|
||
On tronque à $N=ordre$ du filtre. $N_{s}=\frac{N}{2}$ <br>
|
||
Ces coefficients ne sont rien d’autre que les coefficients de la fonction de transfert en *z* du filtre passe-bande idéal.
|
||
|
||
## Filtre coupe-bande idéal
|
||
$$H(\mathbf{j}\omega)=\begin{cases}
|
||
0 &\text{ si } \omega_{c_{1}} \leq \omega \leq \omega_{c_{2}} \\
|
||
1 &\text{ si } \omega \leq \omega_{c_{1}} \quad et \quad \omega\geq \omega_{c_{2}}
|
||
\end{cases}$$
|
||
La transformée de Fourrier inverse donne la réponse impulsionnelle d’un filtre coupe-bande idéal.
|
||
|
||
$$h[n] = \begin{cases}
|
||
\frac{\omega_{c_{1}}}{\pi} \frac{\sin((n-N_{s})\omega_{c_{1}})}{(n-N_{s})\omega_{c_{1}}}
|
||
-\frac{\omega_{c_{2}}}{\pi} \frac{\sin((n-N_{s})\omega_{c_{2}})}{(n-N_{s})\omega_{c_{2}}}
|
||
&\text{ si } 0\leq n \leq N \\
|
||
\\
|
||
1-\frac{\omega_{c_{2}}-\omega_{c_{1}}}{\pi} &\text{ si } n=N_{s}\\
|
||
\\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
|
||
On tronque à $N=ordre$ du filtre. $N_{s}=\frac{N}{2}$ <br>
|
||
Ces coefficients ne sont rien d’autre que les coefficients de la fonction de transfert en *z* du filtre coupe-bande idéal.
|
||
|
||
# Synthèse par fenêtrage
|
||
Le point de départ de la synthèse des filtres FIR est donné par la considération des réponses impulsionnelles des filtres idéaux.
|
||
Comme celles-ci sont infiniment longues et donc non réalisables, on va se contenter d’une approximation de leurs réponses.
|
||
|
||
## Méthode de fenêtrage
|
||
- **Fenêtre rectangulaire :** $$W[n] = \begin{cases}
|
||
1 &\text{ si } 0\leq n \leq N \\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
- **Fenêtre triangulaire (Bartlett) :** $$W[n] = \begin{cases}
|
||
2 \frac{n}{N} &\text{ si } 0\leq n \leq \frac{N}{2} \\
|
||
2-2 \frac{n}{N} &\text{ si } \frac{N}{2}\leq n \leq N \\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
- **Fenêtre sinusoïdale (Hann) :** $$W[n] = \begin{cases}
|
||
0,5\left( 1-\cos\left( \frac{2\pi n}{N} \right) \right) &\text{ si } 0\leq n\leq N \\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
- **Fenêtre de Hamming :** $$W[n] = \begin{cases}
|
||
0,54-0,46\cos\left( \frac{2\pi n}{N} \right) &\text{ si } 0\leq n\leq N \\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
- **Fenêtre de Blackman :** $$W[n] = \begin{cases}
|
||
0,42-0,5\cos\left( \frac{2\pi n}{N} \right)+0,08\cos\left( \frac{4\pi n}{N} \right) &\text{ si } 0\leq n\leq N \\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
- **Fenêtre de Kaiser-Bessel :** $$W[n] = \begin{cases}
|
||
\frac{I_{0}\left( \beta\sqrt{1-\left( \frac{1-n}{N_{s}} \right)^{2}} \right)}{I_{0}(\beta)} &\text{ si } 0\leq n\leq N \\
|
||
0 &\text{ sinon}
|
||
\end{cases}$$
|
||
$I_{0}$ : Fonction de Bessel modifiée d’ordre 0 <br>
|
||
$\beta$ : Paramètre de forme
|
||
|
||
***Caractéristiques spectrales de quelques fenêtres***
|
||
|
||
| Fenêtres | Largeur du 1er lobe | Atténuation du 1er lobe [dB] | Décroissance des lobes suivants | Ondulation Rp [dB] | Atténuation max [dB] | Bande de transition<br>[rad/sec]<br>$\Delta\omega$ |
|
||
|---------------------|---------------------|------------------------------|---------------------------------|--------------------|----------------------|----------------------------------------------------|
|
||
| Rectangulaire | $4\pi/N$ | $-13$ | $20 dB/dec$ | $0,74$ | $21$ | $1,8\pi/N$ |
|
||
| Triangulaire | $8\pi/N$ | $-27$ | $40 dB/dec$ | $0$ | $25$ | $6,1\pi/N$ |
|
||
| Cosinus | $8\pi/N$ | $-32$ | $60 dB/dec$ | $0,055$ | $44$ | $6,2\pi/N$ |
|
||
| Hamming | $8\pi/N$ | $-43$ | $20 dB/dec$ | $0,014$ | $53$ | $6,6\pi/N$ |
|
||
| Blackman | $12\pi/N$ | $-58$ | $60 dB/dec$ | $0,0017$ | $74$ | $11\pi/N$ |
|
||
| Kaiser $\beta=4,54$ | $7,2\pi/N$ | $-30$ | $20 dB/dec$ | $0,025$ | $50$ | $5,8\pi/N$ |
|
||
| Kaiser $\beta=5,66$ | $8,4\pi/N$ | $-42$ | $20 dB/dec$ | $0,009$ | $60$ | $7,2\pi/N$ |
|
||
|
||
|
||
|
||
## Comment calculer son filtre
|
||
|
||

|
||
|
||
$H(\mathbf{j}\omega)$ : Gain <br>
|
||
$\delta_{1}$ : L'erreur de gain tolérable <br>
|
||
$\delta_{2}$ : L'erreur d'atténuation tolérable <br>
|
||
$\omega_{p}$ : Fréquence de pulsation de passage <br>
|
||
$\omega_{a}$ : Fréquence de pulsation d'arrêt <br>
|
||
|
||
1. En fonction du gabarit, déterminer le type de filtre désiré (`passe-bas`, `passe-haut`, `passe-bande`, `coupe-bande`)
|
||
2. Calculer $f_{c} \to \omega_{c}$ et $\Delta f \to \Delta\omega$
|
||
$$\begin{gather}
|
||
f_{c} = \frac{f_{a}+f_{p}}{2} \qquad & \qquad \Delta f = f_{a}-f_{p} \\
|
||
\omega_{c} = 2\pi \frac{f_{c}}{f_{s}} \quad & \quad \Delta\omega = \frac{2\pi\Delta f}{f_{s}}
|
||
\end{gather}$$
|
||
3. Choisir une fenêtre $W[n]$ satisfaisante du point de vue de l’atténuation et du reste du cahier des charges.(voir tableau ci-dessus)
|
||
4. Calculer l'ordre du filtre à l'aide de la bande de transition du filtre choisit. Arrondir au nombre pair supérieur.
|
||
5. Calculer la réponse impulsionnelle $h_{f}[n]$ du filtre avec $h[n]*W[n]$
|
||
6. Calculer les coefficients $b_{n}$ du filtre avec $h_{f}[n]$
|
||
|
||
<details>
|
||
<summary>Démarche selon les slides</summary>
|
||
|
||
1. Connaissant le gabarit du filtre désiré, choisir le filtre idéal correspondant
|
||
2. Calculer les pulsations caractéristiques se situant au centre des bandes de transitions
|
||
3. Rechercher la réponse impulsionnelle $h[n]$ du filtre idéal, si celle-ci n’est pas connue, on peut la calculer par transformation de Fourier inverse
|
||
4. Choisir une fenêtre $W[n]$ satisfaisante du point de vue de l’atténuation
|
||
5. Connaissant la largeur de la bande de transition , calculer l’ordre du filtre $N$
|
||
6. Calculer les coefficients du filtre en multipliant la réponse impulsionnelle par la fenêtre choisie
|
||
</details>
|
||
|
||
|
||
|