Vai al contenuto
Teoria dei Segnali

Sistemi a tempo discreto e filtri numerici FIR e IIR

Somma di convoluzione, equazioni alle differenze, funzione di trasferimento e risposta in frequenza, poli e zeri, media mobile, filtro ricorsivo del primo ordine e stabilità con dimostrazione.

Una volta campionato e quantizzato, un segnale è una sequenza di numeri x[n], e i sistemi che lo elaborano sono programmi: un microcontrollore che filtra la lettura di un sensore, un processore audio che equalizza la musica, un modem che demodula. In questa lezione vediamo come si descrivono i sistemi a tempo discreto, la loro risposta in frequenza e le due grandi famiglie di filtri numerici, FIR e IIR.

Sistemi lineari a tempo discreto

Le definizioni sono quelle del tempo continuo con le somme al posto degli integrali. L’impulso è \delta[n], che vale 1 per n = 0 e 0 altrove; la risposta all’impulso h[n] descrive completamente un sistema LTI, e l’uscita è la somma di convoluzione

    \[ y[n] = \sum_{k=-\infty}^{+\infty} x[k]\,h[n - k] \]

La dimostrazione è identica a quella del tempo continuo: x[n] = \sum_k x[k]\delta[n - k], poi linearità e tempo-invarianza. Il sistema è stabile se e solo se \sum|h[n]| \lt \infty.

Le equazioni alle differenze

Nella pratica un filtro numerico si descrive con un’equazione alle differenze: l’uscita attuale è una combinazione degli ingressi attuali e passati e, eventualmente, delle uscite passate:

    \[ y[n] = \sum_{k=0}^{M} b_k\,x[n - k] - \sum_{k=1}^{N} a_k\,y[n - k] \]

È letteralmente il programma: a ogni nuovo campione si fanno qualche moltiplicazione e qualche somma. Con la trasformata Zeta (lezione di Metodi matematici), dove un ritardo di un campione corrisponde a moltiplicare per z^{-1}, si ottiene la funzione di trasferimento

    \[ H(z) = \frac{b_0 + b_1 z^{-1} + \dots + b_M z^{-M}}{1 + a_1 z^{-1} + \dots + a_N z^{-N}} \]

Le radici del numeratore sono gli zeri, quelle del denominatore i poli.

La risposta in frequenza

Una sinusoide campionata x[n] = e^{j\omega n}, con \omega = 2\pi f/f_s la pulsazione normalizzata, è un autosegnale: l’uscita è H(e^{j\omega})\,e^{j\omega n}. La risposta in frequenza è quindi H(z) calcolata sulla circonferenza unitaria, z = e^{j\omega}. Due differenze rispetto al tempo continuo:

  • è periodica di periodo 2\pi: pulsazioni che differiscono di 2\pi danno gli stessi campioni (è l’aliasing visto dall’altra parte);
  • basta studiarla per 0 \le \omega \le \pi, cioè da 0 a f_s/2.

Lettura geometrica. |H(e^{j\omega})| è piccolo quando il punto e^{j\omega} è vicino a uno zero, grande quando è vicino a un polo. Dal disegno di poli e zeri si “vede” il comportamento del filtro.

Poli e zeri sul piano complesso e risposte in frequenza di un filtro a media mobile e di un filtro ricorsivo del primo ordine
A sinistra la circonferenza unitaria con i quattro zeri della media mobile su cinque campioni (cerchietti) e il polo del filtro ricorsivo vicino a 1 (croce). A destra il modulo delle due risposte in frequenza tra 0 e π: la media mobile si annulla a 2π/5 e 4π/5, il filtro ricorsivo scende in modo regolare.

I filtri FIR

Un filtro a risposta all’impulso finita (FIR) usa solo gli ingressi: y[n] = \sum_{k=0}^{M} b_k x[n - k], e la risposta all’impulso è la sequenza dei coefficienti.

Esempio: la media mobile. y[n] = \frac15(x[n] + x[n-1] + \dots + x[n-4]). Sommando la serie geometrica,

    \[ H(z) = \frac15\sum_{k=0}^{4} z^{-k} = \frac15\cdot\frac{1 - z^{-5}}{1 - z^{-1}} \]

Gli zeri sono le radici quinte dell’unità tranne z = 1: e^{j2\pi k/5}, k = 1, \dots, 4. La risposta si annulla a \omega = 2\pi/5, cioè a f_s/5, e ai multipli: è un passa basso semplice, che elimina completamente un disturbo di frequenza nota. Con f_s = 250 Hz, cinque campioni coprono un periodo dei 50 Hz di rete, che sparisce dalla misura.

Pregi: sono sempre stabili (non hanno poli fuori dall’origine) e, con coefficienti simmetrici, hanno fase esattamente lineare, cioè nessuna distorsione di fase. Difetto: per una transizione ripida servono molti coefficienti, anche centinaia.

I filtri IIR

Un filtro a risposta all’impulso infinita (IIR) usa anche le uscite passate (è ricorsivo).

Esempio: il filtro del primo ordine. y[n] = a\,y[n-1] + (1 - a)\,x[n], con 0 \lt a \lt 1:

    \[ H(z) = \frac{1 - a}{1 - a z^{-1}},\qquad h[n] = (1 - a)\,a^n\,u[n] \]

Un polo in z = a, guadagno 1 in continua. È la “media mobile esponenziale” usata ovunque per smussare letture rumorose, con una sola moltiplicazione per campione; con a = 0{,}8 la memoria è di circa 1/(1 - a) = 5 campioni. È l’equivalente numerico del circuito RC.

Teorema. Un sistema LTI causale con funzione di trasferimento razionale è stabile se e solo se tutti i poli sono dentro la circonferenza unitaria.

Dimostrazione (poli semplici). Scomponendo H(z) in fratti semplici, la risposta all’impulso è una combinazione di termini c_i\,p_i^n u[n] (più eventualmente un numero finito di impulsi). La serie \sum_n |p_i|^n converge se e solo se |p_i| \lt 1, quindi \sum|h[n]| è finita se e solo se tutti i poli hanno modulo minore di 1. ∎

Pregi: transizioni ripide con pochi coefficienti; si progettano partendo dai filtri analogici classici (Butterworth, Chebyshev) con la trasformazione bilineare. Difetti: fase non lineare, e il rischio di instabilità se i coefficienti, arrotondati in aritmetica a precisione finita, spostano un polo fuori dal cerchio.

In pratica

Un filtro numerico è un ciclo di poche righe di codice:

/* filtro del primo ordine con a = 0,8 */
float y = 0.0f;
float filtra(float x) {
    y = 0.8f * y + 0.2f * x;
    return y;
}

I processori di segnale (DSP) hanno istruzioni dedicate che eseguono moltiplicazione e somma in un solo ciclo, e i microcontrollori moderni ne hanno versioni semplificate. Il grande vantaggio rispetto ai filtri analogici è la ripetibilità: nessuna tolleranza dei componenti, nessuna deriva con la temperatura, e il filtro si cambia aggiornando il programma.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x