# Filtro comb

Il filtro comb (filtro pettine) è un particolare filtro che aggiunge al segnale al tempo presente una sua versione ritardata (delay) di un certo numero di passi. La risposta in frequenza di un filtro comb consiste in una serie di impulsi equispaziati che ricordano i singoli denti di un pettine. I filtri comb esistono in due differenti tipologie con feedforward o in retroazione (feedback).

## Applicazioni

I filtri comb sono utilizzati in vari ambiti del signal processing, ad esempio:
* Filtri di tipo CIC (Cascaded Integrator-Comb) usati per l'anti-aliasing nelle operazioni di interpolazione e decimazione che cambiano la frequenza di campionamento di un sistema a tempo discreto.
* Filtri comb in 2D e 3D implementati nell'hardware per i decoder del protocollo NTSC per le televisioni. Vengono utilizzati per ridurre gli artefatti come gli errori di dot crawl.
* Effetti audio come chorus, flanger, phaser, e sintesi digitale a guida d'onda. Ad esempio se il tempo di delay è impostato a pochi millisecondi un filtro comb può essere utilizzato per modellizzare l'effetto di un'onda stazionaria acustica in una cavità cilindrica o in una corda che vibra; in questo caso attraverso l'algoritmo di Karplus-Strong.

## Implementazioni

Di seguito vengono esposte le implementazioni a tempo discreto, le proprietà a tempo continuo di un filtro comb sono molto simili.

### Filtro comb feedforward

Lo schema a blocchi di un filtro comb feedforward è il seguente:
E può essere descritto dalla seguente equazione alle differenze:
    $\ y[n]=x[n]+\alpha x[n-K]\,$
dove $K$ è la lunghezza della linea di ritardi (delay line) misurata, essendo a tempo discreto, in numero di campioni. $\alpha$ è il fattore di scala applicato al segnale nella linea di ritardo. Attraverso la trasformata z dell'equazione precedente si ottiene:
    $\ Y(z)=(1+\alpha z^{-K})X(z)\,$
Con la seguente funzione di trasferimento:
    $\ H(z)={\frac {Y(z)}{X(z)}}=1+\alpha z^{-K}={\frac {z^{K}+\alpha }{z^{K}}}\,$
che lega input ad output.

#### Risposta in frequenza

Per ottenere la risposta in frequenza di un segnale espresso nel dominio della trasformata z procediamo con la seguente sostituzione: $z=e^{j\omega }$. Quindi otteniamo:
    $\ H(e^{j\omega })=1+\alpha e^{-j\omega K}\,$
Usando la formula di Eulero otteniamo l'ulteriore rappresentazione della risposta in frequenza come segue:
    $\ H(e^{j\omega })=\left[1+\alpha \cos(\omega K)\right]-j\alpha \sin(\omega K)\,$
Spesso è interessante considerare il modulo, ignorando la fase, come segue:
    $\ |H(e^{j\omega })|={\sqrt {\Re \{H(e^{j\omega })\}^{2}+\Im \{H(e^{j\omega })\}^{2}}}\,$
che, nel caso di un filtro comb, è espresso come segue:
    $\ |H(e^{j\omega })|={\sqrt {(1+\alpha ^{2})+2\alpha \cos(\omega K)}}\,$
Da notare che il termine $(1+\alpha ^{2})$ è una costante, mentre il termine $2\alpha \cos(\omega K)$ varia periodicamente. Quindi il modulo del filtro comb varia periodicamente.
I grafici sulla destra mostrano il modulo della risposta in frequenza per vari valori di $\alpha$ a dimostrazione della sua periodicità.
Alcune importanti proprietà sono:
* Il modulo decade periodicamente ad un minimo locale (in inglese conosciuto come notch) e ricresce periodicamente ad un massimo locale (in inglese conosciuto come peak cioè picco).
* I livelli di massimo e di minimo sono sempre equidistanti da 1.
* Quando $\alpha =\pm 1$ il minimo assume il valore di ampiezza zero.
* Il massimo, per valori positivi di $\alpha$, coincide con il minimo per valori negativi di $\alpha$ e viceversa.

#### Interpretazione polare

Andando di nuovo ad osservare la funzione di trasferimento nello Z-dominio:
    $\ H(z)={\frac {z^{K}+\alpha }{z^{K}}}\,$
possiamo notare che il numeratore assume valore zero quando $z^{K}=-\alpha$. Questo ha $K$ soluzioni, equamente separate attorno ad un cerchio nel piano complesso. Questi sono gli zeri della funzione di trasferimento. Il denominatore è zero quando $z^{K}=0$, ottenendo $K$ poli per $z=0$. Questo porta a grafici di poli e zeri come quelli seguenti:
| Grafico di poli e zeri di un filtro comb feedforward con $K=8$ e $\alpha =0.5$ | Grafico di poli e zeri di un filtro comb feedforward con $K=8$ e $\alpha =-0.5$ |

### Filtro comb a retroazione (feedback)

La struttura di un filtro comb a retroazione è mostrata nella figura a destra. Il filtro si descrive attraverso la seguente equazione alle differenze:
    $\ y[n]=x[n]+\alpha y[n-K]\,$
Se si manipola questa equazione in modo che tutti i termini in $y$ vengono portati dalla parte sinistra e successivamente si applica la trasformata z si ottiene:
    $\ (1-\alpha z^{-K})Y(z)=X(z)\,$
La funzione di trasferimento è quindi:
    $\ H(z)={\frac {Y(z)}{X(z)}}={\frac {1}{1-\alpha z^{-K}}}={\frac {z^{K}}{z^{K}-\alpha }}\,$

#### Risposta in frequenza

Se si applica la sostituzione $z=e^{j\omega }$ nel z-dominio all'espressione relativa alla funzione di trasferimento del filtro comb si ottiene:
    $\ H(e^{j\omega })={\frac {1}{1-\alpha e^{-j\omega K}}}\,$
Il modulo è il seguente:
    $\ |H(e^{j\omega })|={\frac {1}{\sqrt {(1+\alpha ^{2})-2\alpha \cos(\omega K)}}}\,$
Di nuovo la risposta è periodica come mostrato dai grafici sulla destra. Il filtro comb a retroazione ha alcune proprietà con il filtro comb feedforward:
* La risposta decade periodicamente ad un minimo locale e ricresce ad un massimo locale.
* Il massimo, per valori positivi di $\alpha$ coincide con il minimo per valori negativi di $\alpha$ e vice-versa.
Ci sono comunque alcune differenze importanti a causa del fatto che il modulo della risposta in frequenza ha un termine al denominatore:
* I livelli di massimo e di minimo non sono equidistanti da 1.
* Il filtro è BIBO stabile esclusivamente se $|\alpha |$ è minore (non minore uguale) di 1. Come si può notare dai grafici se il $|\alpha |$ cresce l'ampiezza del massimo cresce rapidamente.

#### Interpretazione polare

Andando di nuovo ad ispezionare lo z-dominio della funzione di trasferimento del filtro comb a retroazione:
    $\ H(z)={\frac {z^{K}}{z^{K}-\alpha }}\,$
Il numeratore, questa volta, vale zero per $z^{K}=0$ ottenendo $K$ zeri per $z=0$. Il denominatore vale zero ogni volta che $z^{K}=\alpha$. Questo ha $K$ soluzioni, equamente spaziate attorno ad un cerchio nel piano complesso, i poli della funzione di trasferimento. Questo porta a dei grafici di poli e zeri come i seguenti:
| Grafico dei poli-zeri di un filtro comb a retroazione con $K=8$ e $\alpha =0.5$ | Grafico dei poli-zeri di un filtro comb a retroazione con $K=8$ e $\alpha =-0.5$ |

## Filtro comb a tempo continuo

Il filtro comb nella versione feedforward a tempo continuo può essere sintetizzato dalla seguente formula:
    $\ y(t)=x(t)+\alpha x(t-\tau )\,$
mentre la versione con retroazione (feedback):
    $\ y(t)=x(t)+\alpha y(t-\tau )\,$
dove $\tau$ è il ritardo (delay) misurato in secondi.
La risposta in frequenza è rispettivamente:
    $\ H(\omega )=1+\alpha e^{-j\omega \tau }\,$
    $\ H(\omega )={\frac {1}{1-\alpha e^{-j\omega \tau }}}\,$
Le versioni a tempo continuo condividono le stesse proprietà di quelle a tempo discreto.