Teoria ed elaborazione dei segnali/Progetto di filtri IIR

Da WikiAppunti.
Jump to navigation Jump to search
Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è B9. Progetto di filtri IIR.
Gtk-go-back-ltr.svg  B8. Analisi dei sistemi LTI mediante trasformata zetaGtk-home.svg  Teoria ed elaborazione dei segnali (Elaborazione numerica dei segnali)B10. Progetto di filtri FIR  Gtk-go-forward-ltr.svg

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.

  1. 6 Si definiscono i requisiti di progetto del filtro analogico passa-basso.
  2. 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).
  3. 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.
  4. 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]

11

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.
Real low-pass filter specification mask (dB).png

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]

Spettro di energia filtro passa-basso.png

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]

19

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]

21

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>
Dimostrazione
<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>
23 Dimostrazione
H_a \left( j \Omega \right) \right

\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>
32-33 Dimostrazione

{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> }}

36

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

37 Dimostrazione

\\

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> }}

39 <math>f_a=\frac{1}{\pi T_c} \tan{\left( \pi f \right)}</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]

  1. [perché non è normalizzata rispetto al valore massimo?]
  2. 2,0 2,1 in scala lineare
Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è B9. Progetto di filtri IIR.
Gtk-go-back-ltr.svg  B8. Analisi dei sistemi LTI mediante trasformata zetaGtk-home.svg  Teoria ed elaborazione dei segnali (Elaborazione numerica dei segnali)B10. Progetto di filtri FIR  Gtk-go-forward-ltr.svg