Teoria ed elaborazione dei segnali/Progetto di filtri IIR
![]() |
![]() | ![]() | B10. Progetto di filtri FIR ![]() |
---|
4 L'approccio più comune per affrontare il progetto di filtri IIR consiste nel convertire un filtro analogico di funzione di trasferimento <math>H_a \left( s \right)</math> in un filtro numerico di funzione di trasferimento <math>H \left( z \right)</math> che garantisca le specifiche richieste. Le conversioni devono preservare la causalità e la stabilità del filtro stesso.
- 6 Si definiscono i requisiti di progetto del filtro analogico passa-basso.
- Si genera la risposta in frequenza <math>H_a \left( s \right)</math> del filtro analogico tramite approssimazione con modelli analogici standard (come il filtro di Butterworth).
- Si applica la trasformazione bilineare per passare dal tempo continuo al tempo discreto, trovando la risposta in frequenza <math>H \left( z \right)</math> del filtro numerico.
- Si trasforma lo spettro passa-basso in uno spettro passa-alto o passa-banda.
Prototipo di filtro analogico[modifica | modifica sorgente]
8-9 Il progetto di un filtro IIR richiede la sintesi di un filtro analogico con funzione di trasferimento <math>H_a \left( s \right)</math>:
- <math>H_a \left( s \right) = \mathcal{L} \left\{ h_a \left( t \right) \right\} = \int_{- \infty}^{+ \infty} h_a \left( t \right) e^{-s t} dt</math>
dove <math>s= \sigma + j \Omega = \sigma + j 2 \pi f_a</math>. Siccome il filtro dev'essere fisicamente realizzabile, la sua risposta all'impulso <math>h_a \left( t \right)</math> è causale e la sua risposta in frequenza <math>H_a \left( s \right)</math> è unilatera:
- <math>H_a^+ \left( s \right) = \int_0^{+ \infty} h_a \left( t \right) e^{-st} dt</math>
L'insieme dei valori di <math>\sigma = \Re{\left\{ s \right\}}</math> per cui l'integrale in <math>H_a \left( s \right)</math> converge è definita regione di convergenza della trasformata di Laplace. Per sistemi causali, la regione di convergenza della trasformata di Laplace è costituita dal semipiano complesso alla destra di una retta verticale. Se <math>\sigma = 0</math>, la regione di convergenza è il semipiano complesso destro:
- <math>H_a \left( j \Omega \right) = \mathcal{F} \left\{ h_a \left( t \right) \right\} = \int_{- \infty}^{+ \infty} h_a \left( t \right) e^{-j \Omega t} dt = \left. H_a \left( s \right) \right\vert_{s = j \Omega}</math>
Maschera delle specifiche[modifica | modifica sorgente]
10 Il filtro ideale non è fisicamente realizzabile → le specifiche di progetto devono imporre delle tolleranze della risposta in frequenza <math>H_a \left( j \Omega \right)</math> del filtro analogico rispetto al filtro ideale:
- l'oscillazione massima in banda passante <math>2 \delta_1</math>, idealmente nulla;
- l'oscillazione massima in banda attenuata <math>\delta_2</math>, idealmente nulla;
- la banda di transizione <math>\Omega_s - \Omega_p</math>, idealmente nulla.
12 Spesso le specifiche di progetto dei filtri vengono date in termini della funzione di trasferimento in modulo, normalizzata rispetto al valore massimo ed espressa in scala logaritmica:
- <math>-10 \log_{10}{{ \left( \frac{\left| H_a \left( j \Omega \right) \right|}{\max{ \left\{ \left| H_a \left( j \Omega \right) \right| \right\} }} \right)}^2} = -20 \log_{10}{\frac{\left| H_a \left( j \Omega \right) \right|}{\max{ \left\{ \left| H_a \left( j \Omega \right) \right| \right\} }} }</math>
13 con parametri:
- ripple in banda passante, idealmente nullo:
- <math>R_p = -20 \log_{10}{\frac{1- \delta_1}{1+ \delta_1}}</math>
- attenuazione in banda attenuata, idealmente infinita:
- <math>A_s = -20 \log_{10}{\frac{\delta_2}{1+ \delta_1}}</math>
Distribuzione di poli e zeri[modifica | modifica sorgente]
14-15 Le specifiche del filtro analogico sono tipicamente fornite in termini del suo spettro di energia <math>{\left| H_a \left( s \right) \right|}^2</math>:
- <math>{\left| H_a \left( s \right) \right|}^2 = {\left| H_a \left( \sigma + j \Omega \right) \right|}^2 = H_a \left( \sigma + j \Omega \right) H_a^* \left( \sigma + j \Omega \right) =</math>
Siccome un filtro fisicamente realizzabile ha una risposta all'impulso <math>h_a \left( t \right)</math> reale, e quindi tutti i poli e gli zeri sono reali o a coppie complesse coniugate (quindi simmetrici rispetto all'asse reale):
- <math>= H_a \left( \sigma + j \Omega \right) H_a \left( \sigma - j \Omega \right) = H_a \left( s \right) H_a \left( - s \right)</math>
17 L'obiettivo del progetto consiste nell'assegnare metà dei poli a <math>H_a \left( s \right)</math> e l'altra metà a <math>H_a \left( - s \right)</math>.
16 Un filtro causale e stabile ha tutti i poli nel semipiano di sinistra (<math>\sigma <0</math>) → i poli di <math>H_a \left( s \right)</math>, che sono simmetrici rispetto all'asse reale, devono giacere tutti nel semipiano di sinistra. <math>H_a \left( -s \right)</math> ha gli stessi zeri e poli di <math>H_a \left( s \right)</math> ma ribaltati rispetto all'asse immaginario.
Filtro di Butterworth[modifica | modifica sorgente]
18 Il filtro di Butterworth passa-basso di ordine <math>N</math> è un prototipo di filtro analogico:
- <math>{\left| H_a \left( j \Omega \right) \right|}^2 = \frac{1}{1+ {\left( \frac{\Omega}{\Omega_c} \right)}^{2N}}</math>
dove la pulsazione di taglio <math>\Omega_c</math> è contenuta all'interno della banda di transizione:
- <math>\Omega_p \leq \Omega_c \leq \Omega_s</math>
- Proprietà
La risposta in frequenza in modulo <math>\left| H \left( j \Omega \right) \right|</math> è:
- quasi piatta sia in banda passante sia in banda attenuata;
- una funzione sempre decrescente della variabile <math>j \Omega</math>;
- al crescere dell'ordine <math>N</math> si avvicina sempre di più all'idealità;
- nell'origine (<math>\Omega = 0</math>) è sempre pari a 1:
- <math>{\left| H_a \left( 0 \right) \right|}^2 = 1</math>
- alla frequenza di taglio (<math>\Omega = \Omega_c</math>) è sempre pari a <math>\tfrac{1}{2}</math>:
- <math>{\left| H_a \left( j \Omega_c \right) \right|}^2 = \frac{1}{2}</math>
Distribuzione dei poli[modifica | modifica sorgente]
20 Il filtro di Butterworth non ha zeri, ma solo poli, che sono posizionati in modo equispaziato lungo la circonferenza di raggio <math>\Omega_c</math> nel piano <math>s</math>:
- <math>p_k = \Omega_c e^{j \frac{k \pi}{N}} e^{j \frac{\pi \left( N + 1 \right)}{2N}} \quad k = 0, 1, \ldots , 2N-1</math>
- <math>{\left
= \frac{{\left( j \Omega_c \right)}^{2N}}{{ \left( j \Omega \right)}^{2N} + {\left( j \Omega_c \right)}^{2N}}</math>
I poli <math>p_k</math> sono:
- <math>p_k = {\left( -1 \right)}^{\frac{1}{2N}} \left( j \Omega_c \right) = \Omega_c e^{j \frac{\pi}{2}} e^{j \frac{\pi + 2k \pi}{2N}} = \Omega_c e^{j \frac{\pi}{2N} \left( 2k + N + 1 \right)} \quad k = 0, 1 , \ldots , 2N - 1</math>
}}
Progetto del filtro[modifica | modifica sorgente]
22 Il progetto del filtro consiste nel ricavare l'ordine <math>N</math> e la pulsazione di taglio <math>\Omega_c</math> partendo dalle specifiche, ossia dai valori di <math>\Omega_p</math>, <math>\Omega_s</math>, <math>\R_p</math> e <math>A_s</math>:
- <math>\begin{cases} N = \frac{\log_{10}{\frac{{10}^{\frac{R_p}{10}} - 1}{{10}^{\frac{A_s}{10}} - 1}}}{2 \log_{10}{\frac{\Omega_p}{\Omega_s}}} \\ \Omega_c = \frac{\Omega_p}{\sqrt[2N]{{10}^{\frac{R_p}{10}} -1}} = \frac{\Omega_s}{\sqrt[2N]{{10}^{\frac{A_s}{10}} -1}} \end{cases}</math>
\end{cases} \Rightarrow \begin{cases} \frac{1}{1+ {\left( \frac{\Omega_p}{\Omega_c} \right)}^{2N}} = {10}^{\frac{R_p}{10}} \\
\frac{1}{1+ {\left( \frac{\Omega_s}{\Omega_c} \right)}^{2N}} = {10}^{\frac{A_s}{10}} \end{cases}</math> }}
24 L'ordine <math>N</math> dev'essere un numero intero → si approssima all'intero superiore in modo da soddisfare le specifiche per eccesso:
- <math>N = \left \lceil \frac{\log_{10}{\frac{{10}^{\frac{R_p}{10}} - 1}{{10}^{\frac{A_s}{10}} - 1}}}{2 \log_{10}{\frac{\Omega_p}{\Omega_s}}} \right \rceil</math>
Se avviene questa approssimazione, però, i valori di <math>\Omega_c</math> non sono univoci:
- <math>\frac{\Omega_p}{\sqrt[2N]{{10}^{\frac{R_p}{10}} -1}} \neq \frac{\Omega_s}{\sqrt[2N]{{10}^{\frac{A_s}{10}} -1}}</math>
- la scelta del valore per <math>\Omega_p</math> produce un filtro più vicino a 0 in banda attenuata;[2]
- la scelta del valore per <math>\Omega_s</math> produce un filtro più vicino a 1 in banda passante.[2]
Le specifiche sono soddisfatte per qualunque <math>\Omega_c</math> scelto tra questi due valori → conviene scegliere il valore medio come compromesso.
Tecnica della trasformazione bilineare[modifica | modifica sorgente]
34 La trasformazione bilineare consente di ottenere un filtro numerico <math>H \left( z \right)</math> partendo da un filtro analogico <math>H_a \left( s \right)</math>:
- <math>H \left( z \right) = H_a \left( s = \frac{2}{T_c} \frac{1- z^{-1}}{1+ z^{-1}} \right)</math>
{1- z^{-1}}</math>
con l'espressione della trasformata di Laplace <math>Y \left( s \right)</math>:
- <math>\begin{cases} s = \frac{2}{T_c} \frac{1- z^{-1}}{1+ z^{-1}} \\
z = \frac{1+s \frac{T_c}{2}}{1-s \frac{T_c}{2}} \end{cases}</math> }}
35 Esiste una corrispondenza biunivoca tra i punti del piano <math>s</math> e i punti del piano <math>z</math>:
- l'asse immaginario <math>j \Omega</math> nel piano complesso <math>s</math> corrisponde alla circonferenza di raggio unitario nel piano complesso <math>z</math>;
- le pulsazioni complesse <math>\sigma < 0</math> sono mappate all'interno del cerchio di raggio unitario;
- le pulsazioni complesse con <math>\sigma > 0</math> sono mappate all'esterno del cerchio di raggio unitario.
- <math>\left
{1- \left( \sigma + j \Omega \right) \frac{T_c}{2}} \right| = \sqrt{\frac{{\left( 1+ \sigma \frac{T_c}{2} \right)}^2 + {\left( \Omega \frac{T_c}{2} \right)}^2}{{\left( 1- \sigma \frac{T_c}{2} \right)}^2 + {\left( \Omega \frac{T_c}{2} \right)}^2}}</math>
Lungo l'asse immaginario (<math>\sigma = 0</math>):
- <math>\left| z \right| = \sqrt{\frac{1+ {\left( \Omega \frac{T_c}{2} \right)}^2}{1+ {\left( \Omega \frac{T_c}{2} \right)}^2}} = 1</math>
}}
Un filtro causale è stabile se:
- tutti i poli di <math>H_a \left( s \right)</math> appartengono al semipiano sinistro nel piano complesso <math>s</math>;
- tutti i poli di <math>H \left( z \right)</math> appartengono al cerchio di raggio unitario nel piano complesso <math>z</math>.
38 La trasformazione bilineare impone la seguente relazione tra la risposta in frequenza analogica <math>H_a \left( j \Omega \right)</math> e la risposta in frequenza numerica <math>H \left( e^{j \omega} \right)</math>:
- <math>\begin{cases} H \left( e^{j 2 \pi f} \right) = H_a \left( j 2 \pi f_a = j \frac{2}{T_c} \tan{\left( \pi f \right)} \right) \\
H \left( e^{j \omega} \right) = H_a \left( j \Omega = j \frac{2}{T_c} \tan{\frac{\omega}{2}} \right) \end{cases}</math>
\\
s = \frac{2}{T_c} \frac{1 - z^{-1}}{1+ z^{-1}} \end{cases} \Rightarrow j2 \pi f_a = \frac{2}{T_c} \frac{1- e^{-j2 \pi f}}{1+ e^{-j2 \pi f}}</math> }}
I valori che la funzione <math>H_a \left( j 2 \pi f_a \right)</math> assume sull'asse immaginario <math>f_a</math> sono mappati sull'intervallo <math>\left[ - \tfrac{1}{2} T_c ; \, \tfrac{1}{2} T_c \right]</math> mediante la relazione non lineare:
- <math>\begin{cases} f = \frac{1}{\pi} \arctan{\left( \pi f_a T_c \right)} \\
\omega = 2 \arctan{\frac{\Omega T_c}{2}} \end{cases}</math>
Il filtro numerico ricavato è molto approssimato al filtro analogico per bassi valori di <math>f_a T_c</math>, mentre differisce tanto più ci si allontana dalla linearità. Se la frequenza analogica <math>f_a</math> data è alta, è possibile aumentare la frequenza di campionamento <math>f_c</math> per migliorare l'approssimazione del filtro numerico.
La trasformazione bilineare non introduce aliasing.
Trasformazioni spettrali tra diverse tipologie di filtro[modifica | modifica sorgente]
49 Tramite le seguenti trasformazioni spettrali è possibile ricavare, a partire da un filtro con pulsazione di taglio <math>\omega_t</math>, un filtro di diversa tipologia con pulsazione di taglio <math>{\hat{\omega}}_t</math> e stessi parametri di progetto <math>\omega_p</math>, <math>\omega_s</math>, <math>A_S</math> e <math>R_p</math>:
Tipo di filtro desiderato | Trasformazione spettrale |
---|---|
\alpha_p \right| < 1</math> | |
Passa-basso | <math>z^{-1} = \frac{{\hat{z}}^{-1} - \alpha}{1- \alpha {\hat{z}}^{-1}} , \quad \alpha = \frac{\sin{\frac{\omega_t - {\hat{\omega}}_t}{2}}}{\sin{\frac{\omega_t + {\hat{\omega}}_t}{2}}}</math> |
Passa-alto | <math>z^{-1} = - \frac{{\hat{z}}^{-1} + \alpha}{1+ \alpha {\hat{z}}^{-1}} , \quad \alpha = - \frac{\cos{\frac{\omega_t + {\hat{\omega}}_t}{2}}}{\cos{\frac{\omega_t - {\hat{\omega}}_t}{2}}}</math> |
48 La trasformazione di un filtro causale e stabile deve portare a un filtro causale e stabile:
- l'interno del cerchio unitario si deve mappare in se stesso;
- i poli all'interno del cerchio di raggio unitario devono rimanere all'interno.
Note[modifica | modifica sorgente]
![]() |
![]() | ![]() | B10. Progetto di filtri FIR ![]() |
---|