# Elaborazione numerica dei segnali/Progetto di filtri IIR

Elaborazione numerica dei segnali
Copertina Tutti i moduli · Sviluppo
    CopertinaElaborazione numerica dei segnali/Copertina
* Segnali a tempo discretoElaborazione numerica dei segnali/Segnali a tempo discreto
* Campionamento e quantizzazioneElaborazione numerica dei segnali/Campionamento e quantizzazione
* Trasformata di Fourier a tempo discretoElaborazione numerica dei segnali/Trasformata di Fourier a tempo discreto
* DFT e FFTElaborazione numerica dei segnali/DFT e FFT
* Analisi in frequenza di segnali a tempo continuo campionatiElaborazione numerica dei segnali/Analisi in frequenza di segnali a tempo continuo campionati
* Sistemi LTI a tempo discretoElaborazione numerica dei segnali/Sistemi LTI a tempo discreto
* Trasformata zetaElaborazione numerica dei segnali/Trasformata zeta
* Analisi dei sistemi LTI mediante trasformata zetaElaborazione numerica dei segnali/Analisi dei sistemi LTI mediante trasformata zeta
* Progetto di filtri IIRElaborazione numerica dei segnali/Progetto di filtri IIR
* Progetto di filtri FIRElaborazione numerica dei segnali/Progetto di filtri FIR
Modifica il sommario
L'approccio più comune per affrontare il progetto di filtri IIR consiste nel convertire un filtro analogico di funzione di trasferimento $H_{a}\left(s\right)$ in un filtro numerico di funzione di trasferimento $H\left(z\right)$ che garantisca le specifiche richieste. Le conversioni devono preservare la causalità e la stabilità del filtro stesso.
* Si definiscono i requisiti di progetto del filtro analogico passa-basso.
* Si genera la risposta in frequenza $H_{a}\left(s\right)$ 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 $H\left(z\right)$ del filtro numerico.
* Si trasforma lo spettro passa-basso in uno spettro passa-alto o passa-banda.

## Prototipo di filtro analogico

Il progetto di un filtro IIR richiede la sintesi di un filtro analogico con funzione di trasferimento $H_{a}\left(s\right)$:
    $H_{a}\left(s\right)={\mathcal {L}}\left\{h_{a}\left(t\right)\right\}=\int _{-\infty }^{+\infty }h_{a}\left(t\right)e^{-st}dt$
dove $s=\sigma +j\Omega =\sigma +j2\pi f_{a}$. Siccome il filtro dev'essere fisicamente realizzabile, la sua risposta all'impulso $h_{a}\left(t\right)$ è causale e la sua risposta in frequenza $H_{a}\left(s\right)$ è unilatera:
    $H_{a}^{+}\left(s\right)=\int _{0}^{+\infty }h_{a}\left(t\right)e^{-st}dt$
L'insieme dei valori di $\sigma =\Re {\left\{s\right\}}$ per cui l'integrale in $H_{a}\left(s\right)$ 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 $\sigma =0$, la regione di convergenza è il semipiano complesso destro:
    $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 }$

### Maschera delle specifiche

Il filtro ideale non è fisicamente realizzabile → le specifiche di progetto devono imporre delle tolleranze della risposta in frequenza $H_{a}\left(j\Omega \right)$ del filtro analogico rispetto al filtro ideale:
* l'oscillazione massima in banda passante $2\delta _{1}$, idealmente nulla;
* l'oscillazione massima in banda attenuata $\delta _{2}$, idealmente nulla;
* la banda di transizione $\Omega _{s}-\Omega _{p}$, idealmente nulla.
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:
    $-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\}}}}$
con parametri:
* ripple in banda passante, idealmente nullo:
    $R_{p}=-20\log _{10}{\frac {1-\delta _{1}}{1+\delta _{1}}}$
* attenuazione in banda attenuata, idealmente infinita:
    $A_{s}=-20\log _{10}{\frac {\delta _{2}}{1+\delta _{1}}}$

### Distribuzione di poli e zeri

Le specifiche del filtro analogico sono tipicamente fornite in termini del suo spettro di energia ${\left|H_{a}\left(s\right)\right|}^{2}$:
    ${\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)=$
Siccome un filtro fisicamente realizzabile ha una risposta all'impulso $h_{a}\left(t\right)$ reale, e quindi tutti i poli e gli zeri sono reali o a coppie complesse coniugate (quindi simmetrici rispetto all'asse reale):
    $=H_{a}\left(\sigma +j\Omega \right)H_{a}\left(\sigma -j\Omega \right)=H_{a}\left(s\right)H_{a}\left(-s\right)$
L'obiettivo del progetto consiste nell'assegnare metà dei poli a $H_{a}\left(s\right)$ e l'altra metà a $H_{a}\left(-s\right)$.
Un filtro causale e stabile ha tutti i poli nel semipiano di sinistra ($\sigma <0$) → i poli di $H_{a}\left(s\right)$, che sono simmetrici rispetto all'asse reale, devono giacere tutti nel semipiano di sinistra. $H_{a}\left(-s\right)$ ha gli stessi zeri e poli di $H_{a}\left(s\right)$ ma ribaltati rispetto all'asse immaginario.

### Filtro di Butterworth

Il filtro di Butterworth passa-basso di ordine $N$ è un prototipo di filtro analogico:
    ${\left|H_{a}\left(j\Omega \right)\right|}^{2}={\frac {1}{1+{\left({\frac {\Omega }{\Omega _{c}}}\right)}^{2N}}}$
dove la pulsazione di taglio $\Omega _{c}$ è contenuta all'interno della banda di transizione:
    $\Omega _{p}\leq \Omega _{c}\leq \Omega _{s}$

#### Proprietà

La risposta in frequenza in modulo $\left|H\left(j\Omega \right)\right|$ è:
* quasi piatta sia in banda passante sia in banda attenuata;
* una funzione sempre decrescente della variabile $j\Omega$;
* al crescere dell'ordine $N$ si avvicina sempre di più all'idealità;
* nell'origine ($\Omega =0$) è sempre pari a 1:
    ${\left|H_{a}\left(0\right)\right|}^{2}=1$
* alla frequenza di taglio ($\Omega =\Omega _{c}$) è sempre pari a ${\tfrac {1}{2}}$:
    ${\left|H_{a}\left(j\Omega _{c}\right)\right|}^{2}={\frac {1}{2}}$

#### Distribuzione dei poli

Il filtro di Butterworth non ha zeri, ma solo poli, che sono posizionati in modo equispaziato lungo la circonferenza di raggio $\Omega _{c}$ nel piano $s$:
    $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$
    ${\left|H_{a}\left(j\Omega \right)\right|}^{2}={\frac {1}{1+{\left({\frac {\Omega }{\Omega _{c}}}\right)}^{2N}}}={\frac {{\left(j\Omega _{c}\right)}^{2N}}{{\left(j\Omega \right)}^{2N}+{\left(j\Omega _{c}\right)}^{2N}}}$
I poli $p_{k}$ sono:
    $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$

#### Progetto del filtro

Il progetto del filtro consiste nel ricavare l'ordine $N$ e la pulsazione di taglio $\Omega _{c}$ partendo dalle specifiche, ossia dai valori di $\Omega _{p}$, $\Omega _{s}$, $\mathbb {R} _{p}$ e $A_{s}$:
    ${\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}}$
La funzione di trasferimento in modulo, espressa in scala logaritmica, deve passare per i punti $\left(\Omega _{p},R_{p}\right)$ e $\left(\Omega _{s},A_{s}\right)$:
    ${\begin{cases}-10\log _{10}{{\left({\frac {\left|H_{a}\left(j\Omega _{p}\right)\right|}{\max {\left\{\left|H_{a}\left(j\Omega \right)\right|\right\}}}}\right)}^{2}}=R_{p}\\-10\log _{10}{{\left({\frac {\left|H_{a}\left(j\Omega _{s}\right)\right|}{\max {\left\{\left|H_{a}\left(j\Omega \right)\right|\right\}}}}\right)}^{2}}=A_{s}\\{\left|H_{a}\left(j\Omega \right)\right|}^{2}={\frac {1}{1+{\left({\frac {\Omega }{\Omega _{c}}}\right)}^{2N}}}\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}}$
L'ordine $N$ dev'essere un numero intero → si approssima all'intero superiore in modo da soddisfare le specifiche per eccesso:
    $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$
Se avviene questa approssimazione, però, i valori di $\Omega _{c}$ non sono univoci:
    ${\frac {\Omega _{p}}{\sqrt[{2N}]{{10}^{\frac {R_{p}}{10}}-1}}}\neq {\frac {\Omega _{s}}{\sqrt[{2N}]{{10}^{\frac {A_{s}}{10}}-1}}}$
* la scelta del valore per $\Omega _{p}$ produce un filtro più vicino a 0 in banda attenuata;
* la scelta del valore per $\Omega _{s}$ produce un filtro più vicino a 1 in banda passante.
Le specifiche sono soddisfatte per qualunque $\Omega _{c}$ scelto tra questi due valori → conviene scegliere il valore medio come compromesso.

## Tecnica della trasformazione bilineare

La trasformazione bilineare consente di ottenere un filtro numerico $H\left(z\right)$ partendo da un filtro analogico $H_{a}\left(s\right)$:
    $H\left(z\right)=H_{a}\left(s={\frac {2}{T_{c}}}{\frac {1-z^{-1}}{1+z^{-1}}}\right)$
Sia $x\left(t\right)$ un generico segnale causale a tempo continuo, e sia $y\left(t\right)$ il suo integrale:
    $y\left(t\right)=\int _{0}^{t}x\left(\theta \right)d\theta$
Per le proprietà della trasformata di Laplace (a condizioni iniziali nulle):
    $Y\left(s\right)={\frac {X\left(s\right)}{s}}$
Sia $x\left(n\right)$ il segnale campionato $x\left(nT_{c}\right)$. Il suo integrale $y\left(n\right)$ può essere ricavato tramite la regola dei trapezi:
    $y\left(n\right)=y\left(n-1\right)+{\frac {x\left(n\right)+x\left(n-1\right)}{2}}T_{c}$
Confrontando la trasformata zeta $Y\left(z\right)$:
    $Y\left(z\right)=z^{-1}Y\left(z\right)+{\frac {X\left(z\right)+z^{-1}X\left(z\right)}{2}}T_{c};\;Y\left(z\right)=X\left(z\right){\frac {T_{c}}{2}}{\frac {1+z^{-1}}{1-z^{-1}}}$
con l'espressione della trasformata di Laplace $Y\left(s\right)$:
    ${\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}}$
Esiste una corrispondenza biunivoca tra i punti del piano $s$ e i punti del piano $z$:
* l'asse immaginario $j\Omega$ nel piano complesso $s$ corrisponde alla circonferenza di raggio unitario nel piano complesso $z$;
* le pulsazioni complesse $\sigma <0$ sono mappate all'interno del cerchio di raggio unitario;
* le pulsazioni complesse con $\sigma >0$ sono mappate all'esterno del cerchio di raggio unitario.
    $\left|z\right|=\left|{\frac {1+\left(\sigma +j\Omega \right){\frac {T_{c}}{2}}}{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}}}}$
Lungo l'asse immaginario ($\sigma =0$):
    $\left|z\right|={\sqrt {\frac {1+{\left(\Omega {\frac {T_{c}}{2}}\right)}^{2}}{1+{\left(\Omega {\frac {T_{c}}{2}}\right)}^{2}}}}=1$
Un filtro causale è stabile se:
* tutti i poli di $H_{a}\left(s\right)$ appartengono al semipiano sinistro nel piano complesso $s$;
* tutti i poli di $H\left(z\right)$ appartengono al cerchio di raggio unitario nel piano complesso $z$.
La trasformazione bilineare impone la seguente relazione tra la risposta in frequenza analogica $H_{a}\left(j\Omega \right)$ e la risposta in frequenza numerica $H\left(e^{j\omega }\right)$:
    ${\begin{cases}H\left(e^{j2\pi f}\right)=H_{a}\left(j2\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}}$
    ${\begin{cases}H_{a}\left(j2\pi f_{a}\right)=\left.H\left(s\right)\right\vert _{s=j2\pi f_{a}}\\H\left(e^{j2\pi f}\right)=\left.H\left(z\right)\right\vert _{z=e^{j2\pi f}}\\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}}}$
I valori che la funzione $H_{a}\left(j2\pi f_{a}\right)$ assume sull'asse immaginario $f_{a}$ sono mappati sull'intervallo $\left[-{\tfrac {1}{2}}T_{c};\,{\tfrac {1}{2}}T_{c}\right]$ mediante la relazione non lineare:
    ${\begin{cases}f={\frac {1}{\pi }}\arctan {\left(\pi f_{a}T_{c}\right)}\\\omega =2\arctan {\frac {\Omega T_{c}}{2}}\end{cases}}$
Il filtro numerico ricavato è molto approssimato al filtro analogico per bassi valori di $f_{a}T_{c}$, mentre differisce tanto più ci si allontana dalla linearità. Se la frequenza analogica $f_{a}$ data è alta, è possibile aumentare la frequenza di campionamento $f_{c}$ per migliorare l'approssimazione del filtro numerico.
La trasformazione bilineare non introduce aliasing.

## Trasformazioni spettrali tra diverse tipologie di filtro

Tramite le seguenti trasformazioni spettrali è possibile ricavare, a partire da un filtro con pulsazione di taglio $\omega _{t}$, un filtro di diversa tipologia con pulsazione di taglio ${\hat {\omega }}_{t}$ e stessi parametri di progetto $\omega _{p}$, $\omega _{s}$, $A_{S}$ e $R_{p}$:
| Tipo di filtro desiderato | Trasformazione spettrale |
| Tipo di filtro desiderato | $G\left(z^{-1}\right)=\pm \prod _{p=1}^{n}{\frac {z^{-1}-\alpha _{p}}{1-\alpha _{p}z^{-1}}},\quad \left|\alpha _{p}\right|<1$ |
| Passa-basso | $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}}}}$ |
| Passa-alto | $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}}}}$ |
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

* ↑ perché non è normalizzata rispetto al valore massimo?
* 1 2 in scala lineare