Filtri notch e applicazioni dei filtri FIR
In questa pagina 5
Un filtro notch (notch filter, "a tacca") è un filtro che annulla o attenua fortemente una sola frequenza lasciando quasi invariato il resto. Il caso tipico è togliere un fischio (un tono sinusoidale) da un segnale audio. Per un FIR basta scegliere bene gli zeri di (Funzione di sistema, poli, zeri e stabilitàLa funzione di sistema H(z) è la trasformata zeta della risposta impulsiva: con ingresso z^n l'uscita è H(z) z^n. Per un FIR H(z) = Σ b_k z^{-k} è un polinomio con M zeri e M poli in z = 0; in generale H = B(z)/A(z) dall'equazione alle differenze. Sulla circonferenza unitaria H(e^{jω̂}) è la risposta in frequenza: |H| = prodotto delle distanze dagli zeri / prodotto delle distanze dai poli, quindi gli zeri bloccano frequenze e i poli le esaltano. Un LTI causale è BIBO stabile se e solo se tutti i poli hanno modulo < 1 (a meno di cancellazioni polo-zero); i FIR sono sempre stabili.Funzione di sistema, poli, zeri e stabilità →); il risultato è semplicissimo e si implementa con tre coefficienti. Nella seconda parte della nota si inquadrano i FIR nelle applicazioni reali, come in lezione.
Perché uno zero sulla circonferenza annulla una sinusoide
Se all'ingresso c'è l'esponenziale complesso , l'uscita di un sistema LTI è (Risposta in frequenza dei sistemi FIRSe all'ingresso di un FIR c'è un esponenziale complesso A e^{jφ} e^{jω̂n} (per ogni n), l'uscita è lo stesso esponenziale moltiplicato per H(ω̂) = Σ b_k e^{-jω̂k}: la frequenza non cambia, ampiezza e fase sono modificate da |H| (guadagno) e ∠H (sfasamento). Per sovrapposizione si trattano somme di sinusoidi. H è periodica di periodo 2π e, per coefficienti reali, hermitiana (|H| pari, fase dispari). La cascata ha H = H1·H2. Esempi: ritardo (fase lineare), differenza prima (passa-alto), {1,2,1} (passa-basso), media mobile di L punti (Dirichlet: |H| = |sin(Lω̂/2)/(L sin(ω̂/2))|, fase lineare -(L-1)ω̂/2).Risposta in frequenza dei sistemi FIR →). Quindi se , cioè se ha uno zero in , quella componente sparisce. Gli zeri sulla circonferenza unitaria corrispondono quindi a frequenze di guadagno zero.
Un esponenziale complesso però non è un segnale reale. Un coseno è la somma di due esponenziali a frequenze opposte: e per annullarlo bisogna annullare tutte e due le componenti.
Il filtro notch del secondo ordine
Il filtro del primo ordine con ha lo zero in (infatti ) e quindi elimina ; il filtro con elimina . Messi in cascata (la funzione di sistema della cascata è il prodotto, Sistemi LTI e convoluzione discretaUn sistema lineare e tempo-invariante (LTI) è completamente descritto dalla sua risposta impulsiva h[n]: y[n] = Σ x[k] h[n-k] = x[n] * h[n] (somma di convoluzione). Si ricava scomponendo x in impulsi traslati e usando linearità e invarianza. La convoluzione è commutativa, associativa e distributiva; una cascata di LTI equivale a un solo filtro con h = h1 * h2 e l'ordine non conta. Se x ha lunghezza N e h lunghezza L, y ha lunghezza N+L-1. Si calcola col metodo della finestra scorrevole o a tabella. I FIR sono LTI; altri sistemi (n·x[n], x[-n], x²) non lo sono.Sistemi LTI e convoluzione discreta →): Si è usato (Numeri complessi, formula di Eulero ed esponenziali complessiUn numero complesso si scrive in forma cartesiana a+jb o polare |x|e^{jφ}; il prodotto moltiplica i moduli e somma le fasi. La formula di Eulero e^{jα}=cos α + j sin α lega esponenziali e sinusoidi e permette di trattare tutti i segnali del corso come somme di esponenziali complessi e^{(σ+jω)t}.Numeri complessi, formula di Eulero ed esponenziali complessi →) e . I coefficienti sono reali, come serve per un filtro che opera su segnali reali.
Formula (notch FIR del secondo ordine). Per eliminare una sinusoide alla pulsazione normalizzata : con equazione alle differenze . In frequenza
Esempio. Per : e . Con le uscite sono , e poi per (calcolato con Python, errore sotto ): il tono scompare dopo due campioni.
Per ottenere la forma in frequenza si raccoglie : . Il filtro è simmetrico (, ordine pari): è di tipo I (Filtri FIR a fase lineare - tipi e zeriI FIR a fase lineare di ordine N si dividono in quattro tipi: I (N pari, h simmetrica), II (N dispari, simmetrica), III (N pari, antisimmetrica), IV (N dispari, antisimmetrica). Si scrive H = e^{-jwN/2} e^{jb} A(w), con A somma di coseni (tipi I e II) o di seni (III e IV). Dalla relazione H(z) = ±z^{-N} H(1/z) segue che gli zeri vengono in gruppi (z0, z0*, 1/z0, 1/z0*) e che ci sono zeri forzati: tipo II in z = -1, tipo III in z = 1 e z = -1, tipo IV in z = 1, tipo I nessuno. Quindi II non fa passa-alto, III non fa passa-basso né passa-alto, IV non fa passa-basso. Ogni tipo II, III, IV è un tipo I moltiplicato per (1+z^-1), (1-z^-2), (1-z^-1).Filtri FIR a fase lineare - tipi e zeri →), ha fase lineare e ritardo di gruppo campione, quindi non distorce la fase del resto del segnale.
Il transitorio. L'annullamento è esatto solo quando il filtro ha "visto" tre campioni dell'ingresso: per . Se il tono comincia in , le prime due uscite sono diverse da zero (transitorio di durata , Risposta a regime e transitorioLa formula y[n] = H(ω̂) X e^{jω̂n} vale per un esponenziale complesso definito per ogni n. Se l'esponenziale è applicato all'istante n = 0, x[n] = X e^{jω̂n}u[n], l'uscita di un FIR di ordine M ha tre regioni: zero per n < 0, transitorio per 0 ≤ n < M (somma incompleta Σ_{k=0}^{n} h[k]e^{-jω̂k}), regime per n ≥ M (uguale al caso bilatero). Per un IIR stabile il transitorio non si annulla in tempo finito ma tende a zero; la sua analisi dice se il sistema è stabile.Risposta a regime e transitorio →).
Guadagno unitario in continua
Il modulo non vale nelle altre frequenze. Si fissa una normalizzazione: dividere per il guadagno in continua, , in modo che il segnale a frequenza zero passi invariato:
Esempio. : e , di somma . Con ingresso il primo tono sparisce e il secondo viene moltiplicato per e ritardato di 1: per (verificato con Python).
L'esempio mostra un limite: il guadagno nelle altre frequenze non è . In vale , che per è e cresce quando è piccolo. Inoltre il notch è largo: a rad da il guadagno è già e a rad . Il filtro elimina il tono ma attenua anche le frequenze vicine; per un notch stretto servono poli vicini agli zeri, cioè un filtro IIR (Filtri IIR - definizione e confronto con i FIRUn filtro IIR (infinite impulse response) è un sistema LTI descritto da $y[n]=\sum_{\ell=1}^{N}a_\ell y[n-\ell]+\sum_{k=0}^{M}b_kx[n-k]$: l'uscita usa anche le uscite passate (retroazione), per questo si chiama ricorsivo. Con le condizioni di riposo iniziale è LTI, $H(z)=\frac{\sum b_kz^{-k}}{1-\sum a_\ell z^{-\ell}}$ è un rapporto di polinomi, l'ordine è $N$ (numero di poli) e la risposta impulsiva ha durata infinita. Nel primo ordine $y[n]=a_1y[n-1]+b_0x[n]$ si ha $h[n]=b_0a_1^nu[n]$, ROC $|z|>|a_1|$, stabile se $|a_1|<1$; il gradino dà $b_0\frac{1-a_1^{n+1}}{1-a_1}\to\frac{b_0}{1-a_1}$. Si implementa iterando l'equazione alle differenze, non con la convoluzione. Rispetto ai FIR gli IIR rispettano le stesse specifiche di modulo con ordine molto più basso, ma possono essere instabili e non hanno fase lineare. Progetto: per tentativi (notch), con la trasformazione $s\to z$ dai filtri analogici, o con ottimizzazione numerica.Filtri IIR - definizione e confronto con i FIR →).
Grafico interattivo: Modulo del notch FIR normalizzato con w0 = π/4: zero in w0, guadagno 1 in continua, ma 5,83 in w = π
Più toni: la cascata
Per eliminare toni a si mette in cascata un notch per ogni tono. La risposta impulsiva della cascata è la convoluzione delle risposte (Sistemi LTI e convoluzione discretaUn sistema lineare e tempo-invariante (LTI) è completamente descritto dalla sua risposta impulsiva h[n]: y[n] = Σ x[k] h[n-k] = x[n] * h[n] (somma di convoluzione). Si ricava scomponendo x in impulsi traslati e usando linearità e invarianza. La convoluzione è commutativa, associativa e distributiva; una cascata di LTI equivale a un solo filtro con h = h1 * h2 e l'ordine non conta. Se x ha lunghezza N e h lunghezza L, y ha lunghezza N+L-1. Si calcola col metodo della finestra scorrevole o a tabella. I FIR sono LTI; altri sistemi (n·x[n], x[-n], x²) non lo sono.Sistemi LTI e convoluzione discreta →) e la funzione di sistema è il prodotto: . Il risultato è ancora un FIR simmetrico (prodotto di polinomi simmetrici), di ordine e lunghezza , dunque ancora di fase lineare con ritardo campioni. Se ogni fattore è normalizzato con guadagno in continua, anche il prodotto vale in continua.
Esempio (laboratorio 2). Dallo spettrogramma si leggono tre toni a , , . Per ognuno e il fattore di normalizzazione :
| tono | normalizzata | |||
|---|---|---|---|---|
| 1 | 0.2857 | |||
| 2 | 0.5709 | |||
| 3 | 0.8573 |
La cascata ha 7 coefficienti: , simmetrica, somma . Colpisce che sia quasi costante e uguale a : i tre toni sono (quasi) i multipli , , , cioè gli zeri () di una media mobile a 7 punti (Sistemi a tempo discreto e filtri FIRUn sistema a tempo discreto trasforma una sequenza x[n] in una sequenza y[n]. Il filtro FIR causale di ordine M calcola y[n] = Σ b_k x[n-k] (k = 0..M): è una media mobile pesata di L = M+1 campioni, la sua risposta impulsiva h[n] coincide con i coefficienti b_k e l'uscita ha supporto lungo N+M se l'ingresso è lungo N. La media mobile è un passa-basso che ritarda di M/2 campioni; la versione centrata non è causale. Gli schemi a blocchi usano solo moltiplicatori, sommatori e ritardi unitari, senza anelli (feed-forward).Sistemi a tempo discreto e filtri FIR →). Il modulo della cascata nei tre zeri vale (numericamente ) e il massimo del guadagno è in , mentre in vale .
Grafico interattivo: Modulo della cascata dei tre notch del laboratorio 2 (zeri in 0,2857π, 0,5709π, 0,8573π; guadagno 1 in continua): equivale quasi a una media mobile a 7 punti
Procedura (come nel laboratorio)
- Leggere dallo spettrogramma (Trasformata di Fourier a tempo breve e spettrogrammaPer un segnale lungo il cui contenuto in frequenza cambia nel tempo si calcolano tante DFT brevi: X[k, l] = sum_{n=0}^{L-1} w[n] x[l+n] e^{-j2pi kn/N}, con finestra di analisi w di lunghezza L, istante l = m R (passo R, di solito L/2) e DFT a N >= L punti. Il modulo (o i dB) di X[k, l] come immagine tempo-frequenza è lo spettrogramma. La finestra impone un compromesso: lunga = ottima risoluzione in frequenza (Delta w circa 8pi/L per Hann) ma transizioni temporali sfocate su circa L/2 campioni; corta = buona localizzazione nel tempo ma righe vicine fuse. Si provano più lunghezze.Trasformata di Fourier a tempo breve e spettrogramma →) le frequenze dei toni: se sono in Hz, (per esempio con dà ); se l'asse è normalizzato "", valore letto .
- Per ogni tono calcolare e normalizzare.
- Convolvere i filtri (
np.convolve) in un unico FIR. - Controllare modulo e fase con
freqze filtrare conlfilter; riguardare lo spettrogramma dell'uscita.
Il codice Python è in Esercizio - Laboratorio 2, filtri notch e audio.
I filtri FIR nelle applicazioni
I FIR si usano dove la fase conta o dove serve un comportamento garantito:
- audio: equalizzatori, crossover (divisione in bande per gli altoparlanti), riduzione del rumore;
- immagini: rilevazione dei contorni, sfocatura, nitidezza;
- sistemi di controllo: smoothing e condizionamento dei segnali;
- comunicazioni: modulazione, demodulazione, equalizzazione del canale;
- dati di sensori: smoothing e riduzione del rumore.
Vantaggi. Fase lineare, cioè nessuna distorsione di fase e quindi nessun problema di forma d'onda, utilissimo nell'audio (Sistemi a fase lineare e assenza di distorsioneUn sistema non deforma il segnale se y[n] = K x[n-n0]: modulo costante e fase lineare -n0 w, cioè ritardo di gruppo costante n0. Un sistema reale e causale ha fase lineare (generalizzata) se e solo se è FIR con risposta impulsiva simmetrica h[n] = h[N-n] (ampiezza pari, fase -N w/2) o antisimmetrica h[n] = -h[N-n] (ampiezza dispari, fase -N w/2 + pi/2). Il ritardo di gruppo è N/2: intero se N è pari (vale la condizione di non distorsione), semi-intero se N è dispari (uscita interpolata e ritardata). Un IIR causale non può essere simmetrico, quindi non ha fase lineare esatta.Sistemi a fase lineare e assenza di distorsione →); sempre stabili, perché senza retroazione la risposta impulsiva è finita (Funzione di sistema, poli, zeri e stabilitàLa funzione di sistema H(z) è la trasformata zeta della risposta impulsiva: con ingresso z^n l'uscita è H(z) z^n. Per un FIR H(z) = Σ b_k z^{-k} è un polinomio con M zeri e M poli in z = 0; in generale H = B(z)/A(z) dall'equazione alle differenze. Sulla circonferenza unitaria H(e^{jω̂}) è la risposta in frequenza: |H| = prodotto delle distanze dagli zeri / prodotto delle distanze dai poli, quindi gli zeri bloccano frequenze e i poli le esaltano. Un LTI causale è BIBO stabile se e solo se tutti i poli hanno modulo < 1 (a meno di cancellazioni polo-zero); i FIR sono sempre stabili.Funzione di sistema, poli, zeri e stabilità →); controllo indipendente di modulo e fase e facilità di costruire un filtro a partire da una risposta in frequenza desiderata.
Svantaggio. Con specifiche strette (banda di transizione ripida, forte attenuazione) servono molti coefficienti e quindi molto calcolo; un IIR soddisfa le stesse specifiche di modulo con meno coefficienti.
Equalizzazione audio
L'equalizzazione (equalization, EQ) pesa lo spettro di un segnale audio per migliorare una registrazione o per analizzarne il contenuto. I tipi sono: passa-basso e passa-alto (attenuano alte e basse frequenze), shelf (basso o alto: alzano o abbassano di una quantità uguale tutte le frequenze sotto o sopra una frequenza di taglio), parametrici (alzano o abbassano una banda scelta). Il segnale è campionato da un convertitore A/D ad (Teorema del campionamento, interpolazione e aliasingTeorema di Shannon: un segnale a banda limitata $\omega_M$ si ricostruisce esattamente dai campioni se $T_c<\pi/\omega_M$ (frequenza di campionamento maggiore di quella di Nyquist $2f_{\max}$), con la formula di interpolazione ideale $x(t)=\sum_nx(nT_c)\operatorname{sinc}\left(\frac{t-nT_c}{T_c}\right)$. Sotto Nyquist c'è aliasing: le frequenze alte si confondono con quelle basse e l'informazione è persa.Teorema del campionamento, interpolazione e aliasing →); l'udibile va da a , quindi si usano e . A ogni intervallo di campionamento () il filtro digitale calcola con gli ultimi campioni e i coefficienti.
Lunghezza e basse frequenze. Un FIR non ha retroazione, quindi la sua capacità di agire sulle basse frequenze è proporzionale alla lunghezza: più il filtro è lungo, più in basso si possono regolare le frequenze. Nelle slide si confrontano due FIR di 384 e di 3072 coefficienti che inseguono la stessa equalizzazione di un altoparlante: quello più lungo si avvicina molto di più alla risposta desiderata, soprattutto verso le basse frequenze.
Misura della risposta impulsiva. La risposta impulsiva di un dispositivo (filtro, altoparlante, stanza) si potrebbe misurare con un impulso, ma un impulso non ha energia sufficiente a ogni frequenza per emergere dal rumore. Oggi si usano un sweep sinusoidale (la frequenza cresce nel tempo, per esempio esponenzialmente, exponential swept sine) o rumore rosa ciclico: il rumore rosa (pink noise) ha uguale energia per ottava, quindi la densità spettrale di potenza decresce come (la banda - porta la stessa potenza della banda -).
Costo computazionale
Un FIR con coefficienti richiede circa moltiplicazioni al secondo (una per coefficiente per campione di uscita).
| moltiplicazioni al secondo |
Caso reale citato in lezione: un processore per altoparlanti di fascia alta usa circa 24 filtri IIR del secondo ordine (biquad) e un FIR a 2048 coefficienti. Con il FIR costa moltiplicazioni al secondo, i 24 biquad (circa 5 moltiplicazioni ciascuno) : il rapporto è , come dice la slide, ma la slide riporta e , cioè un fattore in meno (il rapporto è corretto, i due valori assoluti no).
In compenso il FIR dà controllo indipendente di modulo e fase e un'equalizzazione più dettagliata. Per ridurre il costo si può calcolare la convoluzione con la FFT (Convoluzione a blocchi - overlap-add e overlap-saveLa convoluzione lineare y = x * h (h lungo M) si può calcolare con la FFT scegliendo N >= Dx + M - 1 (potenza di 2): costo per campione circa 3 k log2 N contro k M del calcolo diretto, quindi la FFT conviene per M abbastanza grande (con Dx circa M, già da M = 16). Per segnali lunghi o infiniti si divide x in blocchi. Overlap-add: blocchi disgiunti di lunghezza L, ognuno convoluto con h (lunghezza L+M-1 con FFT di N >= L+M-1) e le code di M-1 campioni si sommano. Overlap-save: blocchi di N campioni sovrapposti di M-1, convoluzione circolare, si scartano i primi M-1 campioni di ogni uscita (corrotti dall'aliasing). Stesso costo.Convoluzione a blocchi - overlap-add e overlap-save →).
Nota di convenzione. Nelle slide sull'audio un FIR di coefficienti ("taps") ha ordine e ritardi; nel resto del corso si indica con l'ordine e con la lunghezza. Qui si segue la seconda convenzione.
Domande d'esame
- Progettare un FIR che elimina un tono sinusoidale a pulsazione da un segnale reale. Traccia: zeri in ; ; perché servono due zeri (coseno = due esponenziali); normalizzazione in continua; fase lineare e ritardo 1 (tipo I); transitorio di due campioni; limiti (notch largo, guadagno non unitario altrove) e alternativa IIR.
- Come si eliminano più toni? Quali proprietà ha il filtro risultante? Traccia: cascata = convoluzione dei ; ordine , simmetrico, fase lineare con ritardo ; esempio con tre toni; zeri equispaziati media mobile.
- Confrontare FIR e IIR per le applicazioni audio. Traccia: fase lineare e stabilità dei FIR; numero di coefficienti e costo (esempio 2048 tap contro 24 biquad, ); controllo di modulo e fase; influenza della lunghezza sulle basse frequenze.
Versione ripasso
- Perché uno zero basta. Con l'uscita è : se ha uno zero in la componente sparisce. Un coseno è somma di , quindi servono entrambi gli zeri.
- Notch del secondo ordine. , cioè con . Equazione: . In frequenza .
- Tipo e ritardo. Il filtro è simmetrico di ordine : tipo I, fase lineare, ritardo di gruppo campione.
- Esempio. , , : , , poi per .
- Transitorio. L'annullamento è esatto per ; con il tono che parte da le prime due uscite non sono nulle.
- Esempio normalizzato. (somma ) e : il primo tono sparisce, il secondo è moltiplicato per e ritardato di , quindi per .
- Guadagno unitario in continua. Si divide per : .
- Limiti. In il guadagno vale , cioè per . Il notch è largo: a rad dallo zero il guadagno è . Per un notch stretto servono poli vicini agli zeri, cioè un IIR.
- Più toni. Cascata di un notch per tono: , convoluzione delle . Ordine , lunghezza , simmetrico, ritardo campioni.
- Esempio di laboratorio 2. Toni a , , : i tre filtri normalizzati sono , , . La cascata a coefficienti è quasi per ogni coefficiente, cioè una media mobile a punti: i toni sono quasi gli zeri . In il guadagno è .
- Procedura. Leggere le frequenze dallo spettrogramma; se sono in Hz, (con kHz e kHz, ); per ogni tono e normalizzazione; convoluzione dei filtri; controllo con
freqz, filtraggio conlfilter. - Applicazioni. Audio (equalizzatori, crossover, riduzione del rumore), immagini (contorni, sfocatura, nitidezza), controllo, comunicazioni, sensori.
- Vantaggi. Fase lineare; sempre stabili, perché senza retroazione la risposta impulsiva è finita; modulo e fase controllati in modo indipendente.
- Svantaggio. Con banda di transizione ripida e forte attenuazione servono molti coefficienti; un IIR soddisfa le stesse specifiche con meno coefficienti.
- Lunghezza e basse frequenze. Senza retroazione la capacità di agire sulle basse frequenze cresce con la lunghezza: nelle slide, due FIR di e coefficienti per un altoparlante, il più lungo segue meglio la risposta desiderata.
- Costo. Circa moltiplicazioni al secondo: con a kHz. Caso citato: FIR a coefficienti contro biquad; il rapporto è circa ( contro ). Nelle slide i valori assoluti sono sbagliati di un fattore , il rapporto no.
- Convenzione. Nelle slide sull'audio un FIR con coefficienti ha ordine ; nel corso è l'ordine e la lunghezza.
- Errore tipico. Credere che il notch lasci invariate le frequenze vicine: il guadagno cambia anche attorno a .