Salta al contenuto
Note per Studenti Progetto di filtri FIR con il metodo delle finestre

Progetto di filtri FIR con il metodo delle finestre

In questa pagina 8

Un filtro ideale passa-basso lascia passare tutto fino a una frequenza di taglio e blocca tutto il resto: ha risposta impulsiva infinita e non causale, quindi non si può realizzare. Il progetto di un filtro FIR (FIR filter design) consiste nel trovare i coefficienti h[0],…,h[N]h[0],\dots,h[N] di un filtro causale a risposta impulsiva finita la cui risposta in frequenza (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 →) approssima quella ideale entro tolleranze assegnate. Qui ci si limita ai filtri a fase lineare, per i quali il progetto riguarda solo il modulo (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 →, 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 →). Tre metodi: finestre (questo è il metodo principale del corso), campionamento in frequenza e minimax.

Le specifiche di un filtro passa-basso

Gli altri tipi di filtro (passa-alto, passa-banda, elimina-banda) si ricavano da un prototipo passa-basso, quindi si descrive solo questo. Le specifiche sono date sul modulo della risposta in frequenza, perché le tolleranze non possono essere nulle e fra la banda passante e quella oscura serve una banda di transizione (transition band).

Definizione (specifiche del passa-basso).

  • ω^p\hat\omega_p: limite della banda passante (pass-band edge); per ∣ω^∣≤ω^p|\hat\omega|\le\hat\omega_p il segnale passa praticamente inalterato.
  • ω^s\hat\omega_s: limite della banda oscura (stop-band edge); per ω^s≤∣ω^∣≤π\hat\omega_s\le|\hat\omega|\le\pi il segnale è fortemente soppresso. Per ω^p<∣ω^∣<ω^s\hat\omega_p<|\hat\omega|<\hat\omega_s si è in banda di transizione e non si impone nulla.
  • δp\delta_p: errore in banda passante, 1−δp≤∣H(ejω^)∣≤1+δp1-\delta_p\le|H(e^{j\hat\omega})|\le1+\delta_p (l'ideale sarebbe ∣H∣=1|H|=1).
  • δs\delta_s: errore in banda oscura, ∣H(ejω^)∣≤δs|H(e^{j\hat\omega})|\le\delta_s (l'ideale sarebbe ∣H∣=0|H|=0).

In decibel: ondulazione in banda passante (pass-band ripple) Rp=20log⁡101+δp1−δpR_p=20\log_{10}\dfrac{1+\delta_p}{1-\delta_p} e attenuazione in banda oscura (stop-band attenuation) As=−20log⁡10δsA_s=-20\log_{10}\delta_s.

Esempio. Con δp=δs=10−2.5=0,00316\delta_p=\delta_s=10^{-2.5}=0{,}00316 si ha As=50A_s=50 dB e Rp=20log⁡101,003160,99684=0,055R_p=20\log_{10}\frac{1{,}00316}{0{,}99684}=0{,}055 dB. Con δp=0,05\delta_p=0{,}05 e δs=0,01\delta_s=0{,}01 si ha Rp=20log⁡101,050,95=0,87R_p=20\log_{10}\frac{1{,}05}{0{,}95}=0{,}87 dB e As=40A_s=40 dB.

Filtro causale a fase lineare di tipo I

Un FIR causale di ordine NN ha N+1N+1 coefficienti h[0],…,h[N]h[0],\dots,h[N]; è a fase lineare se h[n]=±h[N−n]h[n]=\pm h[N-n]. Nel tipo I (NN pari, simmetria ++) la risposta in frequenza si scrive

H(ejω^)=e−jω^N/2 Hˉ(ω^),Hˉ(ω^)=∑n=0N/2pncos⁡(nω^),H(e^{j\hat\omega})=e^{-j\hat\omega N/2}\,\bar H(\hat\omega),\qquad \bar H(\hat\omega)=\sum_{n=0}^{N/2}p_n\cos(n\hat\omega),

con p0=h[N/2]p_0=h[N/2] e pn=2h[N/2−n]p_n=2h[N/2-n] per n=1,…,N/2n=1,\dots,N/2. La parte Hˉ\bar H è reale e si chiama risposta di ampiezza (amplitude response); la fase è esattamente −ω^N/2-\hat\omega N/2 (ritardo di N/2N/2 campioni). Il perché: si porta il filtro in forma simmetrica traslando di N/2N/2 campioni, hˉ[n]=h[n+N/2]\bar h[n]=h[n+N/2], per n=−N/2,…,N/2n=-N/2,\dots,N/2; essendo hˉ[n]=hˉ[−n]\bar h[n]=\bar h[-n], le esponenziali e−jnω^e^{-jn\hat\omega} e ejnω^e^{jn\hat\omega} si accoppiano in 2cos⁡(nω^)2\cos(n\hat\omega) e la somma diventa reale. Negli altri tre tipi di fase lineare cambia solo un fattore fisso (e quindi un vincolo sugli zeri in z=±1z=\pm1), mentre Hˉ\bar H resta una combinazione di coseni (o seni).

Esempio. Per N=4N=4 e h={1,2,3,2,1}h=\{1,2,3,2,1\} si ha p0=h[2]=3p_0=h[2]=3, p1=2h[1]=4p_1=2h[1]=4, p2=2h[0]=2p_2=2h[0]=2, quindi Hˉ(ω^)=3+4cos⁡ω^+2cos⁡2ω^\bar H(\hat\omega)=3+4\cos\hat\omega+2\cos2\hat\omega e Hˉ(0)=9=∑h[n]\bar H(0)=9=\sum h[n].

Obiettivo: la serie di Fourier dell'ampiezza desiderata

Si vuole un filtro la cui risposta approssimi

Hd(ejω^)=e−jω^N/2 D(ω^),H_d(e^{j\hat\omega})=e^{-j\hat\omega N/2}\,D(\hat\omega),

dove D(ω^)D(\hat\omega) è l'ampiezza desiderata: reale, non negativa e periodica di periodo 2π2\pi (per un passa-basso, 11 per ∣ω^∣≤ω^0|\hat\omega|\le\hat\omega_0 e 00 altrimenti). Il fattore di fase è il ritardo che garantisce la fase lineare. Poiché DD è periodica, ha una serie di Fourier (Serie di FourierUn segnale periodico di periodo $T_p$ si scrive come somma di esponenziali alle frequenze multiple della fondamentale $F=1/T_p$: $s(t)=\sum_nS_ne^{i2\pi nFt}$, con $S_n=\frac1{T_p}\int_{T_p}s(t)e^{-i2\pi nFt}dt$. Si basa sull'ortogonalità degli esponenziali su un periodo. $S_0$ è il valor medio; per segnali reali $S_{-n}=S_n^$ e si passa alla forma con coseni e seni; vale il teorema di Parseval $P=\sum|S_n|^2$. La convoluzione ciclica diventa il prodotto $T_pX_nY_n$ dei coefficienti. Le somme troncate presentano il fenomeno di Gibbs vicino ai salti.Serie di Fourier →) che coincide con una DTFT (Trasformata di Fourier a tempo discretoLa trasformata di Fourier di un segnale discreto è $S(f)=\sum_nT,s(nT),e^{-i2\pi fnT}$: una funzione continua e periodica in $f$ di periodo $F_p=1/T$. L'antitrasformata è l'integrale su un periodo, $s(nT)=\int_0^{F_p}S(f)e^{i2\pi fnT}df$. Le regole sono quelle del caso continuo (traslazione, convoluzione $\leftrightarrow$ prodotto, Parseval $\sum T|s|^2=\int_0^{F_p}|S|^2$), con incremento e somma corrente al posto di derivata e integrale. Per segnali reali $S(f)=S^(-f)$, quindi basta $[0,F_p/2]$. Esempi: $\delta\to1$, $1\to\delta_{F_p}$, rect $\to$ sinc periodico, $a^n\mathbf 1_0\to\frac T{1-ae^{-i2\pi fT}}$.Trasformata di Fourier a tempo discreto →):

D(ω^)=∑n=−∞+∞hd[n] e−jω^n,hd[n]=12π∫−ππD(ω^) ejω^n dω^.D(\hat\omega)=\sum_{n=-\infty}^{+\infty}h_d[n]\,e^{-j\hat\omega n},\qquad h_d[n]=\frac1{2\pi}\int_{-\pi}^{\pi}D(\hat\omega)\,e^{j\hat\omega n}\,d\hat\omega .

Quindi hd[n]h_d[n] è la risposta impulsiva (infinita) del filtro ideale con ampiezza DD e fase nulla. Siccome DD è reale e pari, hdh_d è reale e pari. Confronto: la risposta di un FIR è una somma finita ∑n=0Nh[n]e−jω^n\sum_{n=0}^{N}h[n]e^{-j\hat\omega n}, quella desiderata una somma infinita. Tutta la progettazione sta nel scegliere h[n]h[n] in modo che la somma finita approssimi quella infinita. Il filtro ha la fase di HdH_d per costruzione; resta da approssimare il modulo.

Teorema (i tre metodi).

  1. Finestre (windowing, o troncamento della serie di Fourier): si usa una somma parziale della serie di DD.
  2. Campionamento in frequenza (frequency sampling): hh è l'IDFT di campioni di DD, quindi HH coincide con DD solo su quei campioni.
  3. Minimax (algoritmo di Parks-McClellan): si cercano i coefficienti che minimizzano il massimo dell'errore pesato W(ω^) ∣D(ω^)−Hˉ(ω^)∣W(\hat\omega)\,|D(\hat\omega)-\bar H(\hat\omega)|; il peso WW permette errori diversi nelle diverse bande. I filtri risultanti sono equiripple.

Metodo delle finestre

Il troncamento

Per un tipo I si lavora con il filtro non causale simmetrico hˉ[n]\bar h[n], −N/2≤n≤N/2-N/2\le n\le N/2, che ha risposta Hˉ(ω^)=∑n=−rrhˉ[n]e−jω^n\bar H(\hat\omega)=\sum_{n=-r}^{r}\bar h[n]e^{-j\hat\omega n} con r=N/2r=N/2. L'idea è prendere i coefficienti centrali della serie di DD:

hˉ[n]=hd[n] wR[n],wR[n]={1,∣n∣≤N/20,altrove.\bar h[n]=h_d[n]\,w_R[n],\qquad w_R[n]=\begin{cases}1,&|n|\le N/2\\0,&\text{altrove.}\end{cases}

Il filtro causale si ottiene ritardando di N/2N/2 campioni:

h[n]=hˉ ⁣[n−N2]=hd ⁣[n−N2]wR ⁣[n−N2],n=0,…,N.h[n]=\bar h\!\left[n-\tfrac N2\right]=h_d\!\left[n-\tfrac N2\right]w_R\!\left[n-\tfrac N2\right],\qquad n=0,\dots,N.

Il ritardo non cambia il modulo, aggiunge soltanto il fattore e−jω^N/2e^{-j\hat\omega N/2} e rende il filtro realizzabile. hh è simmetrica, h[n]=h[N−n]h[n]=h[N-n], perché lo è hdh_d.

Esempio: il passa-basso ideale

Per D(ω^)=1D(\hat\omega)=1 in ∣ω^∣≤ω^0|\hat\omega|\le\hat\omega_0 e 00 altrove (ω^0=2πf0/Fs\hat\omega_0=2\pi f_0/F_s è la frequenza di taglio normalizzata):

hd[n]=12π∫−ω^0ω^0ejω^ndω^=sin⁡(ω^0n)πn=ω^0πsinc⁡ ⁣(ω^0nπ),hd[0]=ω^0π.h_d[n]=\frac1{2\pi}\int_{-\hat\omega_0}^{\hat\omega_0}e^{j\hat\omega n}d\hat\omega=\frac{\sin(\hat\omega_0 n)}{\pi n}=\frac{\hat\omega_0}{\pi}\operatorname{sinc}\!\Big(\frac{\hat\omega_0 n}{\pi}\Big),\qquad h_d[0]=\frac{\hat\omega_0}{\pi}.

(Con sinc⁡(x)=sin⁡πxπx\operatorname{sinc}(x)=\frac{\sin\pi x}{\pi x}, come nel corso e in numpy.sinc.) Il filtro causale è h[n]=ω^0πsinc⁡(ω^0π(n−N2))w[n]h[n]=\frac{\hat\omega_0}{\pi}\operatorname{sinc}\big(\frac{\hat\omega_0}{\pi}(n-\frac N2)\big)w[n]. Il coefficiente più grande è quello centrale, h[N/2]=ω^0/π≤1h[N/2]=\hat\omega_0/\pi\le1 qualunque sia il taglio, e più la banda è stretta più tutti i coefficienti sono piccoli (guadagno 1 in continua spalmato su molti campioni).

Esempio. N=20N=20, ω^0=π/3\hat\omega_0=\pi/3, finestra rettangolare: h[10]=13=0,3333h[10]=\frac13=0{,}3333 e, per simmetria, h[10±1]=0,2757h[10\pm1]=0{,}2757, h[10±2]=0,1378h[10\pm2]=0{,}1378, h[10±3]=0h[10\pm3]=0 (è sin⁡(π)=0\sin(\pi)=0), h[10±4]=−0,0689h[10\pm4]=-0{,}0689, h[10±5]=−0,0551h[10\pm5]=-0{,}0551, h[10±6]=0h[10\pm6]=0, h[10±7]=0,0394h[10\pm7]=0{,}0394, h[10±8]=0,0345h[10\pm8]=0{,}0345, h[10±9]=0h[10\pm9]=0, h[10±10]=−0,0276h[10\pm10]=-0{,}0276. La somma dei coefficienti è 1,0048≈11{,}0048\approx1 (il guadagno in continua).

Perché il troncamento è il migliore possibile, e perché dà Gibbs

Teorema (ottimalità). Fra tutti i filtri FIR a fase lineare di ordine N=2rN=2r, la somma parziale Hˉ(ω^)=∑n=−rrhd[n]e−jω^n\bar H(\hat\omega)=\sum_{n=-r}^{r}h_d[n]e^{-j\hat\omega n} minimizza l'errore quadratico medio E2=12π∫−ππ(D(ω^)−Hˉ(ω^))2dω^E^2=\frac1{2\pi}\int_{-\pi}^{\pi}\big(D(\hat\omega)-\bar H(\hat\omega)\big)^2d\hat\omega.

Dimostrazione. Per Parseval E2=∑n=−∞∞(hd[n]−hˉ[n])2=∑∣n∣≤r(hd[n]−hˉ[n])2+∑∣n∣>rhd[n]2E^2=\sum_{n=-\infty}^{\infty}(h_d[n]-\bar h[n])^2=\sum_{|n|\le r}(h_d[n]-\bar h[n])^2+\sum_{|n|>r}h_d[n]^2, con hˉ[n]=0\bar h[n]=0 fuori da ∣n∣≤r|n|\le r. L'ultima somma non dipende dalla scelta di hˉ\bar h; la prima è non negativa e vale zero se e solo se hˉ[n]=hd[n]\bar h[n]=h_d[n] per ∣n∣≤r|n|\le r. □\square

Il troncamento è dunque ottimo in media quadratica, ma non è ottimo nel caso peggiore: guardando il massimo dell'errore ci sono filtri migliori (è il minimax). Per capire cosa succede al modulo, si osserva che moltiplicare per wR[n]w_R[n] in tempo equivale a convolvere in frequenza (Proprietà della trasformata di FourierCon le proprietà (linearità, simmetrie, ritardo $\leftrightarrow e^{-j\omega t_0}$, modulazione $\leftrightarrow$ traslazione in frequenza, scala, dualità, convoluzione $\leftrightarrow$ prodotto, Parseval $E=\frac1{2\pi}\int|X|^2$, derivata $\leftrightarrow j\omega$, moltiplicazione per $t\leftrightarrow j,d/d\omega$, integrazione) quasi tutte le trasformate si ottengono da poche coppie base senza integrare.Proprietà della trasformata di Fourier →):

Hˉ(ω^)=12π∫−ππD(θ) WR(ω^−θ) dθ,WR(ω^)=∑n=−rre−jω^n=sin⁡(Lω^/2)sin⁡(ω^/2),\bar H(\hat\omega)=\frac1{2\pi}\int_{-\pi}^{\pi}D(\theta)\,W_R(\hat\omega-\theta)\,d\theta,\qquad W_R(\hat\omega)=\sum_{n=-r}^{r}e^{-j\hat\omega n}=\frac{\sin(L\hat\omega/2)}{\sin(\hat\omega/2)},

con L=2r+1=N+1L=2r+1=N+1 la lunghezza della risposta impulsiva (è il nucleo di Dirichlet: la serie geometrica di LL termini). WRW_R vale LL in 00 e si annulla in ω^=2πLk\hat\omega=\frac{2\pi}{L}k, k≠0k\ne0. Il tratto fra i due primi zeri ±2πL\pm\frac{2\pi}L è il lobo principale (main lobe), largo 4πL\frac{4\pi}{L}; gli altri sono i lobi laterali (side lobes). Il primo lobo laterale vale circa il 22% del principale (cioè −13,3-13{,}3 dB) qualunque sia LL: aumentando LL i lobi si restringono ma non si abbassano.

Il risultato dell'integrale è la media pesata di DD con il nucleo WRW_R centrato in ω^\hat\omega. Dove DD è costante o varia lentamente il nucleo vede un valore quasi costante e Hˉ≃D\bar H\simeq D; vicino a un salto di DD i lobi laterali, che hanno segno alterno, entrano e escono dal salto e producono oscillazioni (fenomeno di Gibbs).

Grafico interattivo: Passa-basso con ω0 = π/3 progettato con la finestra rettangolare: aumentando L le oscillazioni si stringono ma il sovraelongo (circa 9%) resta; con Hamming scompaiono

Esempio. Con ω^0=π/3\hat\omega_0=\pi/3 il massimo di Hˉ\bar H è 1,07061{,}0706 per L=21L=21, 1,09281{,}0928 per L=61L=61, 1,09081{,}0908 per L=151L=151 e 1,09001{,}0900 per L=401L=401: il sovraelongo converge a circa il 9% del salto (con minimo −0,089-0{,}089 nella banda oscura), come si vede nel grafico. L'errore in banda passante e in banda oscura è circa δp≃δs≃0,09\delta_p\simeq\delta_s\simeq0{,}09, cioè As≃21A_s\simeq21 dB, e non dipende da LL. Quello che dipende da LL è la larghezza della transizione, circa 0,9⋅2πL0{,}9\cdot\frac{2\pi}{L}, e la rapidità delle oscillazioni.

Altre finestre

Per ridurre i lobi laterali, al posto di wRw_R si usa una finestra w[n]w[n] più regolare, che scende dolcemente verso i bordi. Il prezzo è un lobo principale più largo, cioè una transizione più larga. Le espressioni qui sono quelle non causali di lunghezza L=N+1L=N+1 dispari, ∣n∣≤N/2|n|\le N/2; nel codice dei laboratori le stesse finestre sono scritte con n=0,…,Nn=0,\dots,N, per esempio la Hamming w[n]=0,54−0,46cos⁡2πnNw[n]=0{,}54-0{,}46\cos\frac{2\pi n}{N}.

finestra w[n]w[n], ∣n∣≤N/2\lvert n\rvert\le N/2
rettangolare 11
triangolare (Bartlett) 1−∣n∣N/21-\frac{\lvert n\rvert}{N/2}
Hann (Hanning) 12+12cos⁡2πnN\frac12+\frac12\cos\frac{2\pi n}{N}
Hamming 0,54+0,46cos⁡2πnN0{,}54+0{,}46\cos\frac{2\pi n}{N}
Blackman 0,42+0,5cos⁡2πnN+0,08cos⁡4πnN0{,}42+0{,}5\cos\frac{2\pi n}{N}+0{,}08\cos\frac{4\pi n}{N}

(Hann e Hamming sono "coseni rialzati": un coseno più una costante.)

Grafico interattivo: Finestre di lunghezza L = 51 (N = 50), n = 0, ..., 50: la rettangolare vale 1 ovunque, le altre scendono verso i bordi

I loro spettri sono combinazioni di nuclei di Dirichlet traslati: i termini coseno spostano il nucleo in ±2πN\pm\frac{2\pi}{N} e, se i pesi sono scelti bene, i lobi laterali dei tre nuclei si cancellano a vicenda.

Grafico interattivo: Modulo in dB degli spettri (L = 51): più il lobo principale è largo, più i lobi laterali sono bassi

Proprietà delle finestre fisse e valori tipici (tabella delle dispense; i valori di larghezza del lobo principale e di livello del lobo laterale sono stati ricalcolati numericamente per L=51L=51):

finestra lobo principale lobo laterale massimo banda di transizione attenuazione minima AsA_s
rettangolare 2⋅2πL2\cdot\frac{2\pi}L −13,3-13{,}3 dB 0,9⋅2πL0{,}9\cdot\frac{2\pi}L 21 dB
triangolare 4⋅2πL4\cdot\frac{2\pi}L −26,5-26{,}5 dB (calcolato −26,4-26{,}4) 3⋅2πL3\cdot\frac{2\pi}L 26 dB
Hann 4⋅2πL4\cdot\frac{2\pi}L −31,5-31{,}5 dB 3,1⋅2πL3{,}1\cdot\frac{2\pi}L 44 dB
Hamming 4⋅2πL4\cdot\frac{2\pi}L −42,7-42{,}7 dB (calcolato −42,3-42{,}3) 3,3⋅2πL3{,}3\cdot\frac{2\pi}L 54 dB
Blackman 6⋅2πL6\cdot\frac{2\pi}L −57-57 dB (calcolato −58,1-58{,}1) 5,5⋅2πL5{,}5\cdot\frac{2\pi}L 74 dB

Tre fatti generali per tutte le finestre fisse:

  1. la larghezza della transizione è inversamente proporzionale alla lunghezza: ω^s−ω^p2π≃αL\dfrac{\hat\omega_s-\hat\omega_p}{2\pi}\simeq\dfrac{\alpha}{L}, con α\alpha che dipende solo dalla finestra (colonna "banda di transizione");
  2. gli errori sono quasi uguali nelle due bande, δp≃δs\delta_p\simeq\delta_s, e dipendono solo dal tipo di finestra, non da LL;
  3. entrambi non dipendono dalla frequenza di taglio ω^0=ω^p+ω^s2\hat\omega_0=\frac{\hat\omega_p+\hat\omega_s}2.

Il punto 2 ha una conseguenza pratica: con le finestre fisse non si possono scegliere δp\delta_p e δs\delta_s separatamente. Queste cifre sono regole pratiche (si vedrà nell'esempio sotto che per soddisfare davvero 50 dB serve un ordine un poco più grande di quello dato dalla tabella).

La finestra di Kaiser

La finestra di Kaiser ha un parametro β\beta che permette di scegliere l'attenuazione:

w[n]=I0 ⁣(β1−(2nN)2)I0(β),∣n∣≤N2,I0(x)=1+∑k=1∞((x/2)kk!)2,w[n]=\frac{I_0\!\Big(\beta\sqrt{1-\big(\frac{2n}{N}\big)^2}\Big)}{I_0(\beta)},\quad|n|\le\frac N2,\qquad I_0(x)=1+\sum_{k=1}^{\infty}\Big(\frac{(x/2)^k}{k!}\Big)^2,

dove I0I_0 è la funzione di Bessel modificata di ordine zero. Con β=0\beta=0 si ottiene la rettangolare (As=21A_s=21 dB). Date AsA_s in dB e la banda di transizione ω^s−ω^p\hat\omega_s-\hat\omega_p, si usano le formule empiriche

β={0,1102 (As−8,7),As>500,5842 (As−21)0,4+0,07886 (As−21),21<As≤500,As≤21N≥As−814,36 ω^s−ω^p2π.\beta=\begin{cases}0{,}1102\,(A_s-8{,}7),&A_s>50\\0{,}5842\,(A_s-21)^{0{,}4}+0{,}07886\,(A_s-21),&21<A_s\le50\\0,&A_s\le21\end{cases}\qquad N\ge\frac{A_s-8}{14{,}36\,\frac{\hat\omega_s-\hat\omega_p}{2\pi}} .

Esempio. Per As=50A_s=50 dB e ω^s−ω^p=0,125π\hat\omega_s-\hat\omega_p=0{,}125\pi (cioè 0,06250{,}0625 in unità di 2π2\pi): β=0,5842⋅290,4+0,07886⋅29=2,2466+2,2869=4,534\beta=0{,}5842\cdot29^{0{,}4}+0{,}07886\cdot29=2{,}2466+2{,}2869=4{,}534 con la seconda formula (con la prima, che vale sopra 50 dB, si avrebbe 4,5514{,}551: i due valori coincidono quasi sul confine) e N≥4214,36⋅0,0625=46,8N\ge\frac{42}{14{,}36\cdot0{,}0625}=46{,}8, quindi N=48N=48 (pari, per il tipo I).

Procedura di progetto

  1. Si calcola la risposta impulsiva ideale hd[n]h_d[n] (con taglio ω^0=ω^p+ω^s2\hat\omega_0=\frac{\hat\omega_p+\hat\omega_s}2).
  2. Si sceglie il tipo di finestra dalla AsA_s richiesta (la meno costosa che arriva a AsA_s) e l'ordine NN dalla larghezza della transizione: L=N+1≥α 2πω^s−ω^pL=N+1\ge\alpha\,\frac{2\pi}{\hat\omega_s-\hat\omega_p}.
  3. Si calcola hˉ[n]=hd[n] w[n]\bar h[n]=h_d[n]\,w[n] e, per un filtro causale, h[n]=hˉ[n−N/2]h[n]=\bar h[n-N/2].
  4. Si calcola H(ejω^)H(e^{j\hat\omega}) e si verifica che le specifiche siano rispettate; se no si aumenta NN o si cambia finestra.

Vantaggi del metodo: è semplicissimo, intuitivo e conserva gli zeri di hdh_d (utile per i filtri di interpolazione, vedi Elaborazione multirate - decimazione e interpolazioneL'elaborazione multirate cambia la frequenza di campionamento di un segnale. Interpolazione per $L$ (da $F_s$ a $LF_s$): l'espansore inserisce $L-1$ zeri fra i campioni, $W(\hat\omega)=X(L\hat\omega)$, lo spettro si ripete $L$ volte nell'asse più ampio; un passabasso con taglio $\pi/L$ e guadagno $L$ elimina le immagini, e con il sinc ideale $h[n]=\operatorname{sinc}(n/L)$ i campioni originali sono conservati ($y[nL]=x[n]$); in pratica FIR a finestre o interpolatore lineare (triangolo). Decimazione per $M$ (da $F_s$ a $F_s/M$): $y[n]=x[nM]$, $Y(\hat\omega)=\frac1M\sum_{k=0}^{M-1}X\big(\frac{\hat\omega-2\pi k}M\big)$, repliche sovrapposte (aliasing) se la banda supera $\pi/M$: si fa precedere da un passabasso con taglio $\pi/M$. Conversione razionale $F_s'=\frac LMF_s$ ($L,M$ coprimi): espansore $L$, un solo passabasso di taglio $\min(\frac\pi L,\frac\pi M)$ e guadagno $L$, decimatore $M$; $y[n]=\sum_kx[k],g[nM-kL]$ non è una convoluzione e il sistema è periodicamente tempo-invariante. Realizzare il tutto in più stadi (fattori piccoli prima per l'interpolazione, grandi prima per la decimazione) e con strutture polifase riduce molto il costo.Elaborazione multirate - decimazione e interpolazione →). Svantaggi: i filtri non sono ottimi (le stesse specifiche si ottengono con ordini minori con il minimax) e gli errori δp\delta_p, δs\delta_s sono simili, il che non è sempre ciò che serve. Nella pratica le finestre più usate sono Hamming (per la semplicità) e Kaiser (per le prestazioni).

Esempio completo e confronto fra i metodi

Specifiche: Fs=8F_s=8 kHz, banda passante fino a fp=1f_p=1 kHz, banda oscura da fs=1,5f_s=1{,}5 kHz, As=50A_s=50 dB (δp=δs=0,00316\delta_p=\delta_s=0{,}00316). Normalizzando ω^=2πf/Fs\hat\omega=2\pi f/F_s: ω^p=0,25π\hat\omega_p=0{,}25\pi, ω^s=0,375π\hat\omega_s=0{,}375\pi, ω^s−ω^p=0,125π\hat\omega_s-\hat\omega_p=0{,}125\pi e taglio ω^0=0,3125π\hat\omega_0=0{,}3125\pi.

  • Rettangolare: non va bene, perché δ≃0,09\delta\simeq0{,}09 qualunque sia NN.
  • Hamming: L≃3,3⋅2π0,125π=52,8L\simeq3{,}3\cdot\frac{2\pi}{0{,}125\pi}=52{,}8, quindi L=53L=53, N=52N=52. Controllo numerico: δp=0,00313\delta_p=0{,}00313, δs=0,00330\delta_s=0{,}00330 (As=49,6A_s=49{,}6 dB), appena fuori specifica; con N=54N=54 si ottiene δp=0,00258\delta_p=0{,}00258, δs=0,00220\delta_s=0{,}00220 e la specifica è soddisfatta. La tabella è una regola pratica, non una garanzia: il passo 4 serve.
  • Hann e Blackman: con la ricerca dell'ordine minimo servono N=76N=76 (Hann) e N=74N=74 (Blackman).
  • Kaiser: β=4,55\beta=4{,}55, N=48N=48 soddisfa le specifiche (δp=0,00299\delta_p=0{,}00299, δs=0,00260\delta_s=0{,}00260); con N=46N=46 si ha 0,00470{,}0047 e non basta.
  • Minimax (vedi sotto): N=42N=42 (δp=δs=0,00279\delta_p=\delta_s=0{,}00279); con N=40N=40 è 0,00430{,}0043.

Grafico interattivo: Stesse specifiche (banda passante fino a 0,25π, banda oscura da 0,375π, 50 dB): Hamming N = 54, Kaiser N = 48 (β = 4,55), minimax N = 42

I tre filtri hanno tutti δ≤0,00316\delta\le0{,}00316 ma ordini 54,48,4254,48,42: a parità di specifica il minimax è il più economico (e il filtro è più corto, quindi più veloce da calcolare e con minor ritardo, N/2N/2 campioni).

Campionamento in frequenza

L'idea è molto semplice: si campiona la risposta desiderata in L=N+1L=N+1 punti equispaziati ω^k=2πLk\hat\omega_k=\frac{2\pi}{L}k, k=0,…,Nk=0,\dots,N, si prendono questi LL valori come una DFT (Trasformata di Fourier discreta (DFT) e convoluzione circolareLa DFT di N campioni x[0..N-1] è X[k] = sum x[n] e^{-j2pi kn/N}, k = 0..N-1 (IDFT: x[n] = (1/N) sum X[k] e^{j2pi kn/N}); vede il segnale come periodico di periodo N e dà N campioni equispaziati della DTFT, cioè X(z) valutata sulle radici N-esime dell'unità. Se x ha durata M <= N non c'è aliasing temporale e lo zero-padding (N > M) infittisce solo i campioni della stessa DTFT. Proprietà: traslazione circolare, simmetria coniugata X[k] = X*[N-k], prodotto = convoluzione circolare. La convoluzione circolare coincide con la lineare solo se N >= Dx + M - 1; altrimenti la coda si ripiega sull'inizio. La FFT calcola la DFT con (N/2) log2 N moltiplicazioni invece di N^2.Trasformata di Fourier discreta (DFT) e convoluzione circolare →) e la risposta impulsiva è l'IDFT:

H[k]=Hd(ejω^k)=e−jω^kN/2D(ω^k),h[n]=IDFT{H[k]}.H[k]=H_d(e^{j\hat\omega_k})=e^{-j\hat\omega_k N/2}D(\hat\omega_k),\qquad h[n]=\mathrm{IDFT}\{H[k]\}.

Il filtro ottenuto ha esattamente H(ejω^k)=Hd(ejω^k)H(e^{j\hat\omega_k})=H_d(e^{j\hat\omega_k}) nei punti campione, ma fra un campione e l'altro non c'è controllo. Equivale a h[n]=∑mhd ⁣[n−N2+mL]h[n]=\sum_{m}h_d\!\left[n-\tfrac N2+mL\right], 0≤n≤N0\le n\le N, cioè la risposta ideale (infinita) ripiegata su sé stessa con periodo LL, perché campionare in frequenza significa ripetere in tempo (Trasformata di Fourier discreta (DFT) e convoluzione circolareLa DFT di N campioni x[0..N-1] è X[k] = sum x[n] e^{-j2pi kn/N}, k = 0..N-1 (IDFT: x[n] = (1/N) sum X[k] e^{j2pi kn/N}); vede il segnale come periodico di periodo N e dà N campioni equispaziati della DTFT, cioè X(z) valutata sulle radici N-esime dell'unità. Se x ha durata M <= N non c'è aliasing temporale e lo zero-padding (N > M) infittisce solo i campioni della stessa DTFT. Proprietà: traslazione circolare, simmetria coniugata X[k] = X*[N-k], prodotto = convoluzione circolare. La convoluzione circolare coincide con la lineare solo se N >= Dx + M - 1; altrimenti la coda si ripiega sull'inizio. La FFT calcola la DFT con (N/2) log2 N moltiplicazioni invece di N^2.Trasformata di Fourier discreta (DFT) e convoluzione circolare →): l'aliasing nel tempo della risposta impulsiva ideale è l'errore (verificato numericamente per l'esempio sotto).

Esempio. N=16N=16 (L=17L=17), ω^0=π/3\hat\omega_0=\pi/3. I campioni cadono in ω^k=2πk17\hat\omega_k=\frac{2\pi k}{17}, cioè in 00, 0,118π0{,}118\pi, 0,235π0{,}235\pi, 0,353π0{,}353\pi, 0,471π,…0{,}471\pi,\dots: i campioni k=0,1,2k=0,1,2 sono in banda passante (il taglio è π/3=0,333π\pi/3=0{,}333\pi), già k=3k=3 è oltre il taglio. Si pone D=1D=1 per k=0,1,2k=0,1,2 e k=15,16k=15,16 (i simmetrici), 00 negli altri. Si ottiene h[0]=0,0529h[0]=0{,}0529, h[1]=0,0112h[1]=0{,}0112, h[2]=−0,0443h[2]=-0{,}0443, h[3]=−0,0734h[3]=-0{,}0734, h[4]=−0,0460h[4]=-0{,}0460, h[5]=0,0404h[5]=0{,}0404, h[6]=0,1566h[6]=0{,}1566, h[7]=0,2555h[7]=0{,}2555, h[8]=0,2941h[8]=0{,}2941 (e simmetrici), con somma 11. L'errore è circa 0,100{,}10 in banda passante e 0,110{,}11 in banda oscura (dai campioni in poi).

Per attenuare le oscillazioni si ammorbidisce il salto con un campione di transizione: se si pone D=0,5D=0{,}5 nel campione k=3k=3 (che sta nella banda di transizione) gli errori scendono a 0,0300{,}030 (banda passante) e 0,0320{,}032 (banda oscura), e con 0,410{,}41 la banda oscura arriva a 0,0090{,}009 (con 0,0430{,}043 in banda passante). Il prezzo è una transizione più larga: la risposta scende da 11 a 00 attraverso due intervalli fra campioni (k=2→3→4k=2\to3\to4) invece che uno. Nel grafico i punti sono i campioni imposti.

Grafico interattivo: Campionamento in frequenza, N = 16 (17 campioni a ω_k = 2πk/17), ω0 = π/3: la risposta passa per i campioni (punti) ma oscilla fra l'uno e l'altro; un campione di transizione a 0,5 riduce le oscillazioni

Minimax e algoritmo di Parks-McClellan

Il metodo minimax (o Chebyshev approximation) è ottimale nel caso peggiore: dati l'ampiezza desiderata D(ω^)D(\hat\omega) e un peso positivo W(ω^)W(\hat\omega), entrambi continui su un insieme compatto I⊂[0,π]I\subset[0,\pi] (per un passa-basso I=[0,ω^p]∪[ω^s,π]I=[0,\hat\omega_p]\cup[\hat\omega_s,\pi]: la transizione è esclusa), si cerca

min⁡h max⁡ω^∈I W(ω^) ∣D(ω^)−Hˉ(ω^)∣.\min_{h}\ \max_{\hat\omega\in I}\ W(\hat\omega)\,\big|D(\hat\omega)-\bar H(\hat\omega)\big|.

Il peso rende più o meno importante l'errore in una banda: per avere δs\delta_s dieci volte più piccolo di δp\delta_p si pone W=110W=\frac1{10} in banda passante e W=1W=1 in banda oscura.

Teorema (alternanza). Sia Hˉ(ω^)=∑n=0rpncos⁡(nω^)\bar H(\hat\omega)=\sum_{n=0}^{r}p_n\cos(n\hat\omega) una combinazione di r+1r+1 coseni e E(ω^)=W(ω^)(D(ω^)−Hˉ(ω^))E(\hat\omega)=W(\hat\omega)(D(\hat\omega)-\bar H(\hat\omega)). Hˉ\bar H è la soluzione del problema minimax se e solo se EE ha almeno r+2r+2 alternanze, cioè punti ω^0<⋯<ω^r+1\hat\omega_0<\dots<\hat\omega_{r+1} in II con E(ω^i)=−E(ω^i+1)E(\hat\omega_i)=-E(\hat\omega_{i+1}) e ∣E(ω^i)∣=max⁡I∣E∣|E(\hat\omega_i)|=\max_I|E|.

Una combinazione di r+1r+1 coseni ha r+1r+1 gradi di libertà: serve una alternanza in più. Le alternanze stanno ai bordi delle bande o nei massimi e minimi dell'errore. La conseguenza è che l'errore ha tutti i picchi della stessa altezza: la risposta è equiripple, cioè con ondulazioni di ampiezza uguale. L'algoritmo di Remez parte da una stima dei punti ω^i\hat\omega_i, risolve il sistema lineare di r+2r+2 equazioni W(ω^i)(D(ω^i)−∑npncos⁡(nω^i))=(−1)iεW(\hat\omega_i)\big(D(\hat\omega_i)-\sum_np_n\cos(n\hat\omega_i)\big)=(-1)^i\varepsilon nelle incognite p0,…,pr,εp_0,\dots,p_r,\varepsilon, aggiorna i punti e ripete, e converge in poche iterazioni.

Esempio. N=10N=10 (r=5r=5, quindi servono 77 alternanze), banda passante [0,0,3π][0,0{,}3\pi], banda oscura [0,4π,π][0{,}4\pi,\pi], pesi uguali. scipy.signal.remez dà h={−0,0338,−0,1353,−0,0002,0,1237,0,2840,0,3493,… }h=\{-0{,}0338,-0{,}1353,-0{,}0002,0{,}1237,0{,}2840,0{,}3493,\dots\} (simmetrica) con errore massimo 0,17420{,}1742 in entrambe le bande. I punti di errore massimo sono ω^/π=0; 0,191; 0,3; 0,4; 0,514; 0,734; 1\hat\omega/\pi=0;\,0{,}191;\,0{,}3;\,0{,}4;\,0{,}514;\,0{,}734;\,1 con segni −,+,−,+,−,+,−-,+,-,+,-,+,-: sono proprio 77, di cui 44 ai bordi delle bande. Con peso 1:101:10 (banda oscura più importante) gli errori diventano 0,49260{,}4926 e 0,04940{,}0494, in rapporto 9,97≃109{,}97\simeq10.

Grafico interattivo: Minimax con N = 10, banda passante [0, 0,3π], banda oscura [0,4π, π]: l'errore oscilla con ampiezza costante (equiripple); con peso 10 sulla banda oscura l'errore lì è dieci volte più piccolo

Stima dell'ordine

Per un passa-basso, con δp\delta_p e δs\delta_s non necessariamente uguali:

N≃−10log⁡10(δpδs)−1314,6 ω^s−ω^p2π.N\simeq\frac{-10\log_{10}(\delta_p\delta_s)-13}{14{,}6\,\frac{\hat\omega_s-\hat\omega_p}{2\pi}} .

L'ordine è inversamente proporzionale alla larghezza della transizione, non dipende dal taglio e dipende da δpδs\delta_p\delta_s (raddoppiare δp\delta_p e dimezzare δs\delta_s lascia NN invariato). Vale anche per i passa-alto. Per passa-banda ed elimina-banda ci sono due transizioni: si calcolano N1N_1 e N2N_2 e l'ordine sta fra max⁡(N1,N2)\max(N_1,N_2) e N1+N2N_1+N_2, in pratica più vicino al massimo.

Esempio. Con δp=δs=0,00316\delta_p=\delta_s=0{,}00316: −10log⁡10(10−5)−13=37-10\log_{10}(10^{-5})-13=37 e N≃3714,6⋅0,0625=40,5N\simeq\frac{37}{14{,}6\cdot0{,}0625}=40{,}5. Il valore effettivo è N=42N=42 (con N=40N=40 l'errore è 0,00430{,}0043): la stima è approssimata e va verificata.

Confronto

metodo cosa controlla ottimale? errori in banda passante/oscura ordine
finestre hh ricavata da hdh_d e dalla finestra no (ma ottimo in errore quadratico per la rettangolare) quasi uguali, fissati dalla finestra più alto
campionamento in frequenza HH esatta nei campioni no non controllati fra i campioni dipende dai campioni
minimax errore massimo pesato sì, nel caso peggiore scelti con il peso WW, equiripple il più basso

Domande d'esame

  1. Descrivi la tecnica del windowing per il progetto di un filtro FIR e commenta come la scelta della finestra e della sua lunghezza incide sul risultato. Traccia: ampiezza desiderata DD periodica e serie di Fourier, coefficienti hd[n]h_d[n] del passa-basso ideale; troncamento a ∣n∣≤N/2|n|\le N/2 = finestra rettangolare, ritardo di N/2N/2 per la causalità e fase lineare; effetto in frequenza = convoluzione con il nucleo di Dirichlet, lobo principale (larghezza 4πL\frac{4\pi}{L}) e lobi laterali (22%); Gibbs 9% indipendente da LL; finestre rastremate: lobi laterali più bassi, lobo principale più largo, ω^s−ω^p2π≃αL\frac{\hat\omega_s-\hat\omega_p}{2\pi}\simeq\frac\alpha L e δp≃δs\delta_p\simeq\delta_s fissati dal tipo; stesso compromesso risoluzione/leakage nella STFT (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 →, Analisi spettrale con la DFT - finestre e leakageAnalizzare lo spettro di un segnale con la DFT vuol dire osservarne solo L campioni (finestra rettangolare) e campionare in frequenza la DTFT. Una sinusoide non dà una riga ma il nucleo di Dirichlet della finestra centrato in w0: lobo principale largo 4pi/L e lobi laterali (il primo a -13.3 dB). Due toni più vicini della mezza larghezza del lobo non si separano (risoluzione, che dipende solo da L), e i lobi laterali di un tono mascherano i toni deboli (leakage). La DFT campiona la DTFT a 2pi k/N: l'ampiezza è corretta solo se il tono cade su un bin (periodi interi nella finestra), altrimenti si perde fino a 3.9 dB; lo zero-padding infittisce i campioni ma non migliora la risoluzione. Le finestre rastremate (Hann, Hamming, Blackman) abbassano i lobi laterali (-31, -42, -58 dB) a prezzo di un lobo principale più largo.Analisi spettrale con la DFT - finestre e leakage →).
  2. Confronta i metodi delle finestre, del campionamento in frequenza e minimax. Traccia: tabella sopra; ottimalità e alternanza, r+2r+2 alternanze, equiripple, pesi; ordine inferiore a parità di specifiche (esempio 5454 contro 4242); campionamento in frequenza esatto nei campioni, campione di transizione.
  3. Dimostra che il troncamento della serie di Fourier minimizza l'errore quadratico fra i filtri FIR di ordine NN. Traccia: Parseval, separazione dei termini ∣n∣≤r|n|\le r e ∣n∣>r|n|>r, la seconda somma non dipende da hh; ma non minimizza l'errore massimo (per questo esiste il minimax).

Versione ripasso

  • Specifiche del passa-basso. ω^p\hat\omega_p e ω^s\hat\omega_s bordi di banda passante e oscura; δp\delta_p e δs\delta_s tolleranze, con 1−δp≤∣H∣≤1+δp1-\delta_p\le\lvert H\rvert\le1+\delta_p in banda passante e ∣H∣≤δs\lvert H\rvert\le\delta_s in banda oscura. In dB: Rp=20log⁡101+δp1−δpR_p=20\log_{10}\frac{1+\delta_p}{1-\delta_p}, As=−20log⁡10δsA_s=-20\log_{10}\delta_s. Esempio: δp=δs=10−2,5\delta_p=\delta_s=10^{-2{,}5} dà As=50A_s=50 dB e Rp=0,055R_p=0{,}055 dB.
  • Tipo I. NN pari, h[n]=h[N−n]h[n]=h[N-n]: H=e−jω^N/2HˉH=e^{-j\hat\omega N/2}\bar H, con Hˉ=∑n=0N/2pncos⁡(nω^)\bar H=\sum_{n=0}^{N/2}p_n\cos(n\hat\omega), p0=h[N/2]p_0=h[N/2], pn=2h[N/2−n]p_n=2h[N/2-n]. Esempio: h={1,2,3,2,1}h=\{1,2,3,2,1\} dà Hˉ=3+4cos⁡ω^+2cos⁡2ω^\bar H=3+4\cos\hat\omega+2\cos2\hat\omega, Hˉ(0)=9\bar H(0)=9.
  • Obiettivo. Hd=e−jω^N/2D(ω^)H_d=e^{-j\hat\omega N/2}D(\hat\omega) con DD reale, non negativa, periodica 2π2\pi. Serie di Fourier: D=∑nhd[n]e−jω^nD=\sum_nh_d[n]e^{-j\hat\omega n}, hd[n]=12π∫−ππD ejω^ndω^h_d[n]=\frac1{2\pi}\int_{-\pi}^{\pi}D\,e^{j\hat\omega n}d\hat\omega. Un FIR è una somma finita, quella ideale infinita: si sceglie hh perché la somma finita approssimi l'infinita.
  • Metodo delle finestre. Troncamento: hˉ[n]=hd[n] wR[n]\bar h[n]=h_d[n]\,w_R[n] per ∣n∣≤N/2\lvert n\rvert\le N/2, poi ritardo: h[n]=hˉ[n−N/2]h[n]=\bar h[n-N/2], n=0,…,Nn=0,\dots,N. hh è simmetrica perché lo è hdh_d.
  • Passa-basso ideale. hd[n]=sin⁡(ω^0n)πn=ω^0πsinc⁡ ⁣(ω^0nπ)h_d[n]=\dfrac{\sin(\hat\omega_0n)}{\pi n}=\dfrac{\hat\omega_0}\pi\operatorname{sinc}\!\big(\dfrac{\hat\omega_0n}\pi\big), hd[0]=ω^0/πh_d[0]=\hat\omega_0/\pi. Con sinc⁡(x)=sin⁡πxπx\operatorname{sinc}(x)=\frac{\sin\pi x}{\pi x}.
  • Esempio. N=20N=20, ω^0=π/3\hat\omega_0=\pi/3, rettangolare: h[10]=13h[10]=\frac13, h[10±1]=0,2757h[10\pm1]=0{,}2757, h[10±2]=0,1378h[10\pm2]=0{,}1378, h[10±4]=−0,0689h[10\pm4]=-0{,}0689, h[10±5]=−0,0551h[10\pm5]=-0{,}0551, h[10±7]=0,0394h[10\pm7]=0{,}0394, h[10±8]=0,0345h[10\pm8]=0{,}0345, h[10±10]=−0,0276h[10\pm10]=-0{,}0276; zero per ±3,±6,±9\pm3,\pm6,\pm9. Somma 1,00481{,}0048.
  • Ottimalità. Per Parseval, il troncamento minimizza l'errore quadratico medio fra i FIR di ordine NN; non minimizza l'errore massimo.
  • Gibbs. Il filtro è la convoluzione in frequenza con il nucleo di Dirichlet: Hˉ=12π∫D(θ)WR(ω^−θ)dθ\bar H=\frac1{2\pi}\int D(\theta)W_R(\hat\omega-\theta)d\theta, con L=N+1L=N+1. Lobo principale 4π/L4\pi/L, primo lobo laterale −13,3-13{,}3 dB (circa 22%22\%) indipendente da LL. Vicino a un salto compaiono oscillazioni: sovraelongo circa 9%9\% indipendente da LL, cioè As≃21A_s\simeq21 dB. Esempio con ω^0=π/3\hat\omega_0=\pi/3: massimo 1,07061{,}0706 per L=21L=21, 1,09001{,}0900 per L=401L=401.
  • Effetto di LL. Aumentando LL la transizione si stringe, circa 0,9⋅2π/L0{,}9\cdot2\pi/L; il sovraelongo non si riduce.
  • Finestre fisse. Rettangolare w=1w=1; triangolare 1−∣n∣N/21-\frac{\lvert n\rvert}{N/2}; Hann 12+12cos⁡2πnN\frac12+\frac12\cos\frac{2\pi n}N; Hamming 0,54+0,46cos⁡2πnN0{,}54+0{,}46\cos\frac{2\pi n}N; Blackman 0,42+0,5cos⁡2πnN+0,08cos⁡4πnN0{,}42+0{,}5\cos\frac{2\pi n}N+0{,}08\cos\frac{4\pi n}N. Lobo principale in unità di 2π/L2\pi/L: 22 rettangolare, 44 triangolare, Hann, Hamming, 66 Blackman. Transizione in unità di 2π/L2\pi/L: 0,90{,}9, 33, 3,13{,}1, 3,33{,}3, 5,55{,}5. Attenuazione minima: 2121, 2626, 4444, 5454, 7474 dB.
  • Tre fatti generali. La transizione è inversamente proporzionale a LL: ω^s−ω^p2π≃αL\frac{\hat\omega_s-\hat\omega_p}{2\pi}\simeq\frac\alpha L. Gli errori sono quasi uguali, δp≃δs\delta_p\simeq\delta_s, e dipendono solo dalla finestra. Non dipendono dal taglio ω^0\hat\omega_0.
  • Kaiser. w[n]=I0(β1−(2n/N)2)I0(β)w[n]=\dfrac{I_0(\beta\sqrt{1-(2n/N)^2})}{I_0(\beta)}, con β=0\beta=0 rettangolare. Formule empiriche: β=0,1102(As−8,7)\beta=0{,}1102(A_s-8{,}7) per As>50A_s>50; β=0,5842(As−21)0,4+0,07886(As−21)\beta=0{,}5842(A_s-21)^{0{,}4}+0{,}07886(A_s-21) per 21<As≤5021<A_s\le50. Ordine: N≥As−814,36 ω^s−ω^p2πN\ge\dfrac{A_s-8}{14{,}36\,\frac{\hat\omega_s-\hat\omega_p}{2\pi}}.
  • Esempio di Kaiser. As=50A_s=50 dB, transizione 0,125π0{,}125\pi: β≈4,55\beta\approx4{,}55, N≥46,8N\ge46{,}8, quindi N=48N=48.
  • Procedura. Taglio ω^0=ω^p+ω^s2\hat\omega_0=\frac{\hat\omega_p+\hat\omega_s}2; finestra dalla AsA_s richiesta; ordine dalla transizione; hˉ=hd w\bar h=h_d\,w e ritardo; verifica di HH sulle specifiche.
  • Esempio completo. Fs=8F_s=8 kHz, fp=1f_p=1 kHz, fs=1,5f_s=1{,}5 kHz, As=50A_s=50 dB: ω^p=0,25π\hat\omega_p=0{,}25\pi, ω^s=0,375π\hat\omega_s=0{,}375\pi, taglio 0,3125π0{,}3125\pi.
    • Rettangolare: δ≃0,09\delta\simeq0{,}09 qualunque sia NN, non va bene.
    • Hamming: L≃52,8L\simeq52{,}8; con N=52N=52 si ha As=49,6A_s=49{,}6 dB (appena fuori); con N=54N=54 si ha δp=0,00258\delta_p=0{,}00258, δs=0,00220\delta_s=0{,}00220, specifica soddisfatta.
    • Hann e Blackman: N=76N=76 e N=74N=74.
    • Kaiser: β=4,55\beta=4{,}55, N=48N=48 (δp=0,00299\delta_p=0{,}00299, δs=0,00260\delta_s=0{,}00260); con N=46N=46 non basta.
    • Minimax: N=42N=42 (δp=δs=0,00279\delta_p=\delta_s=0{,}00279); con N=40N=40 è 0,00430{,}0043, non basta.
  • Campionamento in frequenza. H[k]=e−jω^kN/2D(ω^k)H[k]=e^{-j\hat\omega_kN/2}D(\hat\omega_k) in L=N+1L=N+1 punti ω^k=2πk/L\hat\omega_k=2\pi k/L, h=IDFT{H[k]}h=\mathrm{IDFT}\{H[k]\}. Esatto nei campioni, nessun controllo fra un campione e l'altro. Equivale a ripiegare la risposta ideale con periodo LL: l'aliasing nel tempo è l'errore.
  • Esempio di campionamento. N=16N=16, L=17L=17, ω^0=π/3\hat\omega_0=\pi/3: D=1D=1 per k=0,1,2k=0,1,2 e k=15,16k=15,16, 00 altrove. Si ottiene h[0]=0,0529h[0]=0{,}0529, h[1]=0,0112h[1]=0{,}0112, h[2]=−0,0443h[2]=-0{,}0443, h[3]=−0,0734h[3]=-0{,}0734, h[4]=−0,0460h[4]=-0{,}0460, h[5]=0,0404h[5]=0{,}0404, h[6]=0,1566h[6]=0{,}1566, h[7]=0,2555h[7]=0{,}2555, h[8]=0,2941h[8]=0{,}2941, somma 11; errore circa 0,100{,}10 e 0,110{,}11.
  • Campione di transizione. Con D=0,5D=0{,}5 nel campione k=3k=3 gli errori scendono a 0,0300{,}030 e 0,0320{,}032; con 0,410{,}41 la banda oscura arriva a 0,0090{,}009. Prezzo: transizione più larga.
  • Minimax (Parks-McClellan). Si minimizza max⁡IW(ω^)∣D−Hˉ∣\max_I W(\hat\omega)\lvert D-\bar H\rvert su II (esclusa la transizione). Teorema: Hˉ\bar H con r+1r+1 coseni è ottima se e solo se l'errore pesato ha almeno r+2r+2 alternanze. La risposta è equiripple. L'algoritmo di Remez risolve un sistema lineare di r+2r+2 equazioni con ±ε\pm\varepsilon e aggiorna i punti. Peso 1,101{,}10: δs\delta_s dieci volte più piccolo di δp\delta_p.
  • Esempio minimax. N=10N=10, banda passante [0;0,3π][0;0{,}3\pi], oscura [0,4π;π][0{,}4\pi;\pi]: errore massimo 0,17420{,}1742 in entrambe, 77 alternanze; con peso 1:101:10 gli errori sono 0,49260{,}4926 e 0,04940{,}0494.
  • Stima dell'ordine. N≃−10log⁡10(δpδs)−1314,6 ω^s−ω^p2πN\simeq\dfrac{-10\log_{10}(\delta_p\delta_s)-13}{14{,}6\,\frac{\hat\omega_s-\hat\omega_p}{2\pi}}. Esempio: δp=δs=0,00316\delta_p=\delta_s=0{,}00316 dà N≃40,5N\simeq40{,}5, effettivo 4242.
  • Confronto. Finestre: errori fissati dalla finestra, ordine più alto. Campionamento in frequenza: esatto nei campioni, non controllato fra i campioni. Minimax: ottimale nel caso peggiore, ordine più basso a parità di specifiche.
  • Perché le finestre rastremate costano banda. Il prodotto di wRw_R con il segnale è convoluzione in frequenza: moltiplicare per una finestra che scende a zero ai bordi attenua i lobi laterali, ma allarga il lobo principale e quindi la transizione. Non esiste una finestra che migliori entrambi.
  • Hamming e Hann come coseni rialzati. Sono un coseno più una costante; i loro tre nuclei di Dirichlet (centrale e due traslati di ±2π/N\pm2\pi/N, con pesi 0,50{,}5 e 0,250{,}25 per Hann) hanno lobi laterali che si cancellano in parte.
  • Finestre con L=51L=51. Il grafico dei moduli in dB mostra che più il lobo principale è largo, più i lobi laterali sono bassi.
  • Verifica della specifica. Con Hamming N=54N=54 si ha δp=0,00258\delta_p=0{,}00258 e δs=0,00220\delta_s=0{,}00220; con N=52N=52 si ha As=49,6A_s=49{,}6 dB. La tabella dà un ordine di partenza, il passo 4 della procedura è obbligatorio.
  • Minimax, errore alternato. Per N=10N=10 (r=5r=5) servono 77 alternanze, di cui 44 ai bordi delle bande. Punti di errore massimo: ω^/π=0; 0,191; 0,3; 0,4; 0,514; 0,734; 1\hat\omega/\pi=0;\,0{,}191;\,0{,}3;\,0{,}4;\,0{,}514;\,0{,}734;\,1, con segni alternati. Il filtro è simmetrico: h={−0,0338, −0,1353, −0,0002, 0,1237, 0,2840, 0,3493,… }h=\{-0{,}0338,\,-0{,}1353,\,-0{,}0002,\,0{,}1237,\,0{,}2840,\,0{,}3493,\dots\}.
  • Vantaggi e svantaggi. Finestre: semplicissime, conservano gli zeri di hdh_d (utile per i filtri di interpolazione, Elaborazione multirate - decimazione e interpolazioneL'elaborazione multirate cambia la frequenza di campionamento di un segnale. Interpolazione per $L$ (da $F_s$ a $LF_s$): l'espansore inserisce $L-1$ zeri fra i campioni, $W(\hat\omega)=X(L\hat\omega)$, lo spettro si ripete $L$ volte nell'asse più ampio; un passabasso con taglio $\pi/L$ e guadagno $L$ elimina le immagini, e con il sinc ideale $h[n]=\operatorname{sinc}(n/L)$ i campioni originali sono conservati ($y[nL]=x[n]$); in pratica FIR a finestre o interpolatore lineare (triangolo). Decimazione per $M$ (da $F_s$ a $F_s/M$): $y[n]=x[nM]$, $Y(\hat\omega)=\frac1M\sum_{k=0}^{M-1}X\big(\frac{\hat\omega-2\pi k}M\big)$, repliche sovrapposte (aliasing) se la banda supera $\pi/M$: si fa precedere da un passabasso con taglio $\pi/M$. Conversione razionale $F_s'=\frac LMF_s$ ($L,M$ coprimi): espansore $L$, un solo passabasso di taglio $\min(\frac\pi L,\frac\pi M)$ e guadagno $L$, decimatore $M$; $y[n]=\sum_kx[k],g[nM-kL]$ non è una convoluzione e il sistema è periodicamente tempo-invariante. Realizzare il tutto in più stadi (fattori piccoli prima per l'interpolazione, grandi prima per la decimazione) e con strutture polifase riduce molto il costo.Elaborazione multirate - decimazione e interpolazione →); ma non sono ottime e gli errori sono simili nelle due bande. Nella pratica: Hamming per semplicità, Kaiser per le prestazioni.
  • Ordine a parità di specifica. Con le stesse specifiche: 5454 (Hamming), 4848 (Kaiser), 4242 (minimax). Il minimax è anche il più corto, quindi con il ritardo più basso (N/2N/2 campioni).
  • Limiti del metodo. Il metodo non tratta bande con tolleranze diverse senza cambiare finestra; per farlo serve il minimax con pesi WW.
  • Esempio di transizione. Con il campione k=3k=3 a 0,410{,}41 la risposta scende da 11 a 00 attraverso due intervalli invece di uno.
  • Errore tipico. Confondere la tabella delle finestre con una garanzia: le cifre sono regole pratiche, va sempre verificato HH sulle specifiche.

Esercizi su questo argomento

Teoria collegata