diff --git a/infotro/Eln/filtres_numeriques.md b/infotro/Eln/filtres_numeriques.md index e8cfe1e..f09f763 100644 --- a/infotro/Eln/filtres_numeriques.md +++ b/infotro/Eln/filtres_numeriques.md @@ -19,7 +19,7 @@ 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$ : +***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\} $$ @@ -75,8 +75,231 @@ b_{1} = \frac{2\left( d_{0}-\frac{4d_{2}}{T_{s^{2}}} \right)}{C} 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$
+ +**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.
+Ils possèdent autant de pôles que l'order du filtre. Ces derniers sont à (0,0) sur le cercle unité.
+Ils possèdent autant de zéros que l'ordre du filtre. Ces derniers sont sur le cercle unité.
+ +## 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.
+Ils possèdent autant de pôles que l'ordre du filtre. Ces derniers sont à (0,0) sur le cercle unité.
+Ils possèdent autant de zéros que l'ordre du filtre.
+ +# 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}$
+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}$
+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}$
+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}$
+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
+ $\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
[rad/sec]
$\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 + +![specification_de_filtre.svg](medias%2Fspecification_de_filtre.svg ':size=50%') + +$H(\mathbf{j}\omega)$ : Gain
+$\delta_{1}$ : L'erreur de gain tolérable
+$\delta_{2}$ : L'erreur d'atténuation tolérable
+$\omega_{p}$ : Fréquence de pulsation de passage
+$\omega_{a}$ : Fréquence de pulsation d'arrêt
+ +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]$ + +
+Démarche selon les slides + +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 +
+ diff --git a/infotro/Eln/medias/specification_de_filtre.svg b/infotro/Eln/medias/specification_de_filtre.svg new file mode 100644 index 0000000..e258574 --- /dev/null +++ b/infotro/Eln/medias/specification_de_filtre.svg @@ -0,0 +1,45 @@ + + + +