add filtres numériques

This commit is contained in:
Klagarge committed 2024-02-03 17:32:48 +01:00
1 parent e10ab79b06
commit ec57b65794
2 files changed
+269 -1

No files matched your search

+224 -1
View File
@@ -19,7 +19,7 @@ Les inconvénients des filtres récursifs :
- Ils possèdent une phase non-linéaire - Ils possèdent une phase non-linéaire
- Ils peuvent avoir une instabilité numérique - 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}}$$ $$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 : 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\} $$ $$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} b_{2} = \frac{d_{0}-\frac{2d_{1}}{T_{s}}+\frac{4d_{2}}{T_{s^{2}}}}{C}
\end{gather}$$ \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
![specification_de_filtre.svg](medias%2Fspecification_de_filtre.svg ':size=50%')
$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>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="162.60143mm"
height="145.49326mm"
viewBox="0 0 162.60143 145.49326"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
sodipodi:docname="specification_de_filtre.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.76167929"
inkscape:cx="454.25943"
inkscape:cy="204.15416"
inkscape:window-width="1920"
inkscape:window-height="1111"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1" /><g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-24.16979,-27.981753)"><path
style="fill:#b3b3b3"
d="m 43.550519,173.33743 c -0.254574,-0.10272 -0.330729,-2.01702 -0.330729,-8.31348 v -8.18004 h -6.331101 c -5.402769,0 -6.392067,-0.061 -6.746875,-0.41577 -0.510872,-0.51087 -0.510872,-0.50966 0,-1.02054 0.354801,-0.3548 1.343921,-0.41577 6.744842,-0.41577 h 6.329068 l 0.0029,-60.35319 0.0029,-60.353191 -0.952606,0.8364 c -1.049253,0.921256 -1.784615,0.967164 -1.90637,0.119015 -0.09659,-0.672828 2.715832,-6.487427 3.294484,-6.811257 0.285899,-0.159997 0.561696,-0.07902 0.886584,0.260305 0.805275,0.841062 3.459054,6.349148 3.28169,6.811353 -0.253641,0.660977 -1.054436,0.509844 -2.08282,-0.393089 l -0.935248,-0.821159 v 7.963517 7.963516 l 24.14323,0.06754 24.14323,0.06754 -0.104749,47.781485 -0.104749,47.781485 30.46569,-0.12725 30.46569,-0.12725 v 4.66711 4.66712 h 7.70032 7.70033 l -0.8384,-0.95488 c -0.47736,-0.54368 -0.77401,-1.12269 -0.68887,-1.34456 0.0822,-0.21432 0.14953,-0.43947 0.14953,-0.50032 0,-0.7008 6.66518,2.43463 7.25239,3.41165 0.23452,0.39022 0.16497,0.58078 -0.37322,1.02256 -1.0994,0.90245 -5.83161,3.16392 -6.43871,3.077 -0.86373,-0.12368 -0.82489,-0.85236 0.10166,-1.90765 l 0.83562,-0.95172 h -62.2045 -62.204492 v 8.01688 c 0,8.59642 -0.05419,8.9619 -1.256771,8.47664 z m 49.146356,-22.71496 v -4.36936 l -17.462539,0.0699 c -9.604396,0.0384 -17.462521,-0.0194 -17.4625,-0.12856 2.1e-5,-0.10914 7.858163,-0.19843 17.462538,-0.19843 H 92.696875 V 109.08662 72.17725 H 68.752082 44.80729 v 37.05526 37.05526 l 3.83687,-0.0797 c 2.110279,-0.0439 3.836685,0.01 3.836459,0.1187 -2.27e-4,0.10914 -1.726818,0.19843 -3.83687,0.19843 H 44.80729 v 4.23334 4.23333 H 68.752082 92.696875 Z M 52.74479,146.26058 c 0,-0.14552 0.119063,-0.26458 0.264584,-0.26458 0.145521,0 0.264583,0.11906 0.264583,0.26458 0,0.14552 -0.119062,0.26458 -0.264583,0.26458 -0.145521,0 -0.264584,-0.11906 -0.264584,-0.26458 z m 2.116667,0 c 0,-0.14552 0.119063,-0.26458 0.264584,-0.26458 0.14552,0 0.264583,0.11906 0.264583,0.26458 0,0.14552 -0.119063,0.26458 -0.264583,0.26458 -0.145521,0 -0.264584,-0.11906 -0.264584,-0.26458 z m 2.116667,0 c 0,-0.14552 0.119062,-0.26458 0.264583,-0.26458 0.145521,0 0.264584,0.11906 0.264584,0.26458 0,0.14552 -0.119063,0.26458 -0.264584,0.26458 -0.145521,0 -0.264583,-0.11906 -0.264583,-0.26458 z m 47.889586,4.36563 v -4.36563 h -5.953127 -5.953125 v 4.36563 4.36562 h 5.953125 5.953127 z m -10.84938,14.55384 c 0.214329,-0.25825 0.290326,-0.98543 0.219399,-2.09933 l -0.108517,-1.70421 1.069769,0.0112 c 1.353594,0.0142 1.731227,0.32537 1.731227,1.42673 0,0.9449 -0.814558,1.77934 -1.485583,1.52184 -0.437085,-0.16772 -0.462927,0.0352 -0.09261,0.72712 0.247585,0.46262 0.18094,0.51177 -0.693855,0.51177 -0.828304,0 -0.920498,-0.0569 -0.639832,-0.39511 z m 1.853545,-2.39863 c 0,-0.92599 -0.421098,-1.23532 -0.698297,-0.51296 -0.212276,0.55319 0.128763,1.77538 0.44147,1.58212 0.141255,-0.0873 0.256827,-0.56842 0.256827,-1.06916 z m -57.770105,2.22951 c -1.118538,-0.65019 -1.581701,-3.28368 -0.832366,-4.73273 1.112465,-2.15127 3.369757,-1.39534 3.583821,1.20017 0.136745,1.65803 -0.02844,2.29917 -0.788082,3.05881 -0.830243,0.83024 -1.197598,0.91888 -1.963373,0.47375 z m 1.297599,-1.43486 c 0.18609,-1.24094 0.04661,-3.715 -0.224738,-3.98634 -0.08413,-0.0841 -0.279952,-0.0745 -0.435155,0.0214 -0.306929,0.18969 -0.402424,4.69724 -0.105797,4.99386 0.391137,0.39114 0.593518,0.11918 0.76569,-1.02895 z m 49.21576,0.52538 c -0.924423,-0.92442 -0.845786,-2.60334 0.166089,-3.54605 0.596077,-0.55533 1.79899,-0.73714 1.79899,-0.2719 0,0.14552 -0.110558,0.26458 -0.245685,0.26458 -0.597264,0 -1.077232,0.89257 -1.077232,2.00327 0,1.01947 0.07329,1.17173 0.564004,1.17173 0.504048,0 0.549109,-0.11106 0.423881,-1.0447 -0.153331,-1.14317 0.299988,-2.08213 0.843159,-1.74643 0.202259,0.125 0.291819,0.66162 0.238575,1.42949 -0.07498,1.08137 -0.02155,1.22935 0.443923,1.22935 0.420124,0 0.546042,-0.20369 0.611062,-0.98847 0.06414,-0.7741 -0.06497,-1.13532 -0.595312,-1.66567 -0.372465,-0.37246 -0.677208,-0.73133 -0.677208,-0.79747 0,-0.36153 1.130335,-0.0329 1.76517,0.51311 1.404889,1.20843 0.745415,3.86454 -0.959511,3.86454 -0.384904,0 -0.829263,-0.12944 -0.987463,-0.28764 -0.207127,-0.20712 -0.337395,-0.20712 -0.465407,0 -0.262976,0.42551 -1.370378,0.34892 -1.847035,-0.12774 z m 13.969861,-0.52505 c -0.86767,-1.32423 -0.25657,-3.37493 1.10776,-3.71735 0.95943,-0.2408 1.04239,0.004 0.26495,0.78123 -0.71748,0.71748 -0.86779,1.70368 -0.39446,2.58811 0.22279,0.41628 0.36178,0.46351 0.65293,0.22187 0.26169,-0.21718 0.32457,-0.63765 0.21495,-1.4374 -0.1058,-0.77188 -0.0484,-1.19627 0.18096,-1.33802 0.55599,-0.34362 1.0106,0.58073 0.85524,1.73896 -0.12522,0.93364 -0.0802,1.0447 0.42388,1.0447 0.49072,0 0.56401,-0.15227 0.56401,-1.17173 0,-1.1107 -0.47997,-2.00327 -1.07723,-2.00327 -0.13513,0 -0.24569,-0.11907 -0.24569,-0.26459 0,-0.29619 0.78976,-0.35104 1.44336,-0.10023 1.1331,0.43482 1.57065,2.90706 0.67331,3.8044 -0.55867,0.55866 -1.70818,0.71148 -1.98482,0.26387 -0.1096,-0.17735 -0.32831,-0.17735 -0.65968,0 -0.8326,0.44559 -1.55469,Line truncated
id="path2" /><path
style="fill:#808080"
d="m 43.396179,173.07169 c -0.09701,-0.097 -0.176389,-3.8454 -0.176389,-8.32975 v -8.15337 l -6.548437,-0.0708 c -6.34846,-0.0686 -6.548438,-0.0869 -6.548438,-0.59994 0,-0.51301 0.199978,-0.53133 6.548438,-0.59993 l 6.548437,-0.0708 V 94.608444 33.969858 l -1.059851,1.034917 c -0.989866,0.966578 -1.089016,1.005752 -1.501523,0.593245 -0.412506,-0.412506 -0.348751,-0.638909 0.9655,-3.428616 0.773944,-1.642819 1.523739,-3.135772 1.666211,-3.317673 0.66443,-0.84831 1.212028,-0.318737 2.831572,2.738364 2.132466,4.02531 2.023569,5.317937 -0.285463,3.388494 l -1.161237,-0.970338 -0.07018,7.902962 c -0.0386,4.34663 -0.01257,8.053092 0.05784,8.236584 0.10172,0.265076 5.103687,0.33362 24.345702,0.33362 H 93.22604 v 10.71424 10.71424 l -24.275521,0.06753 -24.275521,0.06753 v 41.539583 41.53958 l 30.228646,0.0673 30.228646,0.0673 v -4.76363 -4.76362 h 24.34167 24.34167 v 4.7625 4.7625 h 7.97119 7.9712 l -1.12206,-1.21729 c -1.03294,-1.1206 -1.08812,-1.25123 -0.69472,-1.64463 0.39339,-0.39339 0.68143,-0.30196 3.62632,1.15115 3.16955,1.56395 3.97437,2.22847 3.45442,2.85217 -0.14389,0.17259 -1.69977,1.02413 -3.45751,1.8923 -2.94205,1.4531 -3.22984,1.54454 -3.62323,1.15114 -0.3934,-0.39339 -0.34307,-0.51877 0.63362,-1.57848 l 1.06097,-1.15115 H 107.15541 44.674999 l -0.06992,8.26823 c -0.06589,7.79212 -0.09763,8.26823 -0.551215,8.26823 -0.264715,0 -0.560675,-0.0794 -0.657689,-0.17639 z M 153.02188,151.28766 v -4.7625 h -23.54792 -23.54792 v 4.7625 4.7625 h 23.54792 23.54792 z M 92.432291,66.621 V 61.8585 H 68.752082 45.071874 v 4.7625 4.7625 h 23.680208 23.680209 z m 0,-10.847916 v -4.7625 H 68.884374 45.336457 v 4.7625 4.7625 h 23.547917 23.547917 z m 1.805893,107.845426 0.0861,-1.95789 0.83994,-0.12443 c 0.461967,-0.0684 0.989796,-0.0675 1.172953,0.002 0.504048,0.19147 0.698654,1.34565 0.354316,2.10139 -0.241655,0.53037 -0.448452,0.64406 -0.984978,0.5415 -0.619793,-0.11848 -0.669339,-0.0633 -0.567281,0.63209 0.09256,0.63067 0.01718,0.76201 -0.437664,0.76252 -0.51456,5.8e-4 -0.544016,-0.12384 -0.463388,-1.95727 z m 1.789476,-0.29171 c 0.209982,-0.83664 -0.02154,-1.4558 -0.544356,-1.4558 -0.282814,0 -0.405179,0.26635 -0.405179,0.88194 0,1.35214 0.654867,1.74791 0.949535,0.57386 z m -58.198835,1.22649 c -1.825406,-2.01705 -0.386832,-6.4379 1.726836,-5.3067 1.953092,1.04526 1.523284,5.79941 -0.524308,5.79941 -0.416148,0 -0.957285,-0.22172 -1.202528,-0.49271 z m 1.631335,-2.24841 c 0.07507,-2.28472 -0.236707,-3.42255 -0.787021,-2.87223 -0.356239,0.35624 -0.568584,2.78034 -0.363404,4.14858 0.14354,0.95719 0.283809,1.21289 0.62916,1.14688 0.36906,-0.0705 0.457467,-0.48152 0.521265,-2.42323 z m 49.347786,1.81475 c -1.251277,-0.87643 -0.938041,-3.0842 0.537951,-3.79162 0.943422,-0.45218 1.225185,-0.20524 0.469995,0.41189 -0.73777,0.6029 -0.994555,2.14252 -0.473818,2.8409 0.331352,0.44439 0.449158,0.46769 0.817743,0.1618 0.314639,-0.26113 0.385782,-0.5964 0.264142,-1.24479 -0.230392,-1.2281 0.026,-1.85804 0.571851,-1.40502 0.297473,0.24688 0.364662,0.60417 0.245856,1.30737 -0.117722,0.6968 -0.05127,1.06078 0.237398,1.30036 0.604967,0.50208 0.953227,0.1116 0.953227,-1.06878 0,-1.23117 -0.382681,-2.08366 -0.93535,-2.08366 -0.213162,0 -0.387566,-0.1318 -0.387566,-0.29289 0,-0.16109 0.188331,-0.22062 0.418514,-0.13229 0.230183,0.0883 0.52784,0.1606 0.661459,0.1606 0.622599,0 1.301277,1.10394 1.301277,2.11666 0,1.59415 -1.411636,2.71587 -2.299928,1.82758 -0.209071,-0.20908 -0.438621,-0.20908 -0.829273,0 -0.70594,0.3778 -0.8767,0.36592 -1.553478,-0.10811 z m 13.953404,-0.44644 c -1.01162,-1.08584 -0.52023,-3.16017 0.86281,-3.6423 0.44011,-0.15342 0.87018,-0.20258 0.95572,-0.10924 0.0855,0.0933 0.005,0.22357 -0.17992,0.2894 -0.71026,0.25343 -1.11959,0.94217 -1.1157,1.87728 0.005,1.22215 0.33185,1.76553 0.92487,1.53796 0.37124,-0.14245 0.42207,-0.38121 0.28119,-1.32069 -0.12644,-0.84319 -0.0705,-1.23105 0.21144,-1.46501 0.52403,-0.4349 0.73201,-0.0253 0.65447,1.28888 -0.0798,1.35282 0.42932,1.96009 1.00338,1.19673 0.53175,-0.7071 0.28253,-2.24164 -0.463,-2.85088 -0.75519,-0.61714 -0.47343,-0.86407 0.46999,-0.4119 1.52434,0.7306 1.78707,2.96345 0.45165,3.83845 -0.53228,0.34877 -0.77381,0.36871 -1.34017,0.11066 -0.48162,-0.21944 -0.77484,-0.23081 -0.96812,-0.0375 -0.44595,0.44594 -1.16809,0.3213 -1.74861,-0.30181 z m 5.3917,0.0144 c -0.20172,-0.3264 0.32597,-0.95769 0.97188,-1.1627 0.56485,-0.17927 0.68647,-1.06583 0.17455,-1.2724 -0.22526,-0.0909 -0.20417,-0.13882 0.0661,-0.15028 0.71146,-0.0302 0.97962,0.3515 1.11522,1.58736 l 0.13337,1.21542 -1.15263,0.0174 c -0.63395,0.01 -1.22279,-0.0961 -1.30854,-0.23483 z m 1.47716,-0.64156 c 0,-0.2097 -0.11906,-0.38126 -0.26458,-0.38126 -0.14553,0 -0.26459,0.24515 -0.26459,0.54478 0,0.29963 0.11906,0.47119 0.26459,0.38126 0.14552,-0.0899 0.26458,-0.33509 0.26458,-0.54478 z m -1.32292,-1.1594 c 0,-0.44355 0.46925,-0.55338 0.62543,-0.14639 0.0922,0.24016 -8.3e-4,0.39536 -0.23686,0.39536 -0.21371,0 -0.38857,-0.11204 -0.38857,-0.24897 z m 73.63399,-3.58782 c -1.25128,-0.87643 -0.93804,-3.08419 0Line truncated
id="path1" /></g></svg>

After

Width:  |  Height:  |  Size: 32 KiB