Filtri per SAD Alberto Vallan Filtri per sistemi di acquisizione dati • Impiego di filtri nei SAD • Cenni sui filtri analogici – Caratteristiche – Approssimazioni di filtri ideali • Filtri numerici – Implementazioni FIR/IIR – Esempi e applicazioni 1 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Quando impiegare i filtri nei sistemi di acquisizione. Alcuni esempi. • L’utilizzo di filtri nei sistemi di acquisizione dati è spesso motivato dall’esigenza di incrementare il rapporto S/N dei segnali. • Le componenti spettrali del segnale che non portano informazione costituiscono il ‘rumore’ sovrapposto al segnale. • Se le componenti di rumore sono spettralmente separate dal segnale utile è possibile usare un filtro per migliorare il S/N Esempio: Incremento del S/N 2 2 Ampiezza 0 -1 -2 10 10 10 10 10 200 400 600 800 0 -1 -2 1000 0 10 Spettro -1 Ampiezza 1 Filtro passa basso 10 -2 10 0 200 400 600 800 1000 1200 400 500 600 0 -1 Spettro -2 Segnale di uscita Segnale di ingresso 1 -3 10 -3 -4 0 100 200 300 400 500 10 600 -4 0 100 200 300 Esistono filtri per eliminare il rumore spettralmente non separato 2 Torino, 21/09/2004 Pag. -1 1 Filtri per SAD Alberto Vallan Altro impiego molto comune è quello dei filtri antialiasing che “limitano” la banda del segnale alla frequenza di Nyquist Esempio: Filtri antialiasing (1) 1 0.8 0.6 Il segnale di ingresso è y(t)=sin (2πf0t) con f0= 19 kHz 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 0.5 1 1.5 2 x 10 -3 1 Se si osserva il segnale con un oscilloscopio la cui frequenza di campionamento è fS= 10 kHz appare una sinusoide avente la stessa ampiezza del segnale di ingresso ma con frequenza 1 kHz 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 0.5 1 1.5 2 -3 x 10 3 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Esempio: Filtro antialiasing (2) Si vuole misurare l’ampiezza di un segnale sinusoidale x1=sin(2πf1t) con f1 = 500 Hz Al segnale di ingresso è sovrapposto un disturbo anch’esso sinusoidale x2=sin(2πf2t+pi) con f2 = 19500 Hz Purtroppo non sapete che è presente un disturbo e impostate la frequenza di campionamento del vostro sistema a 10 kHz. 2 1.5 1 1 0.5 0.5 0 0 -0.5 -0.5 -1 -1 -1.5 -2 0 Segnale acquisito Segnale di ingresso 2 1.5 -1.5 0.002 0.004 0.006 0.008 0.01 -2 4 5 6 7 8 9 10 -3 x 10 •Il segnale acquisito ha una sola componente avente frequenza 500 Hz •La frequenza del segnale misurato è 500 Hz ma l’ampiezza è il doppio di quella della componente in ingresso a 500 Hz 4 Torino, 21/09/2004 Pag. -2 2 Filtri per SAD Alberto Vallan Filtri analogici I filtri più comunemente impiegati nei SAD sono lineari, tempo invarianti, dotati di un ingresso e un’uscita. x(t) y(t) h(t) •Se il segnale di ingresso x(t) è sinusoidale, anche l’uscita è sinusoidale. Il legame tra le ampiezze e le fasi dei due segnali dipende dalle caratteristiche del filtro. •Il filtro è descritto univocamente dalla sua risposta all’impulso h(t). •La risposta y(t) ad uno stimolo qualunque può essere calcolata con la riposta all’impulso y(t)=x(t)*h(t) dove l’operatore * indica l’integrale di convoluzione, cioè: +∞ y(t) = ∫ x(t − )h( )d τ τ τ −∞ 5 Torino, 21/09/2004 Filtri per SAD Alberto Vallan • Utilizzando le trasformate di Laplace è possibile descrivere il filtro nel dominio della frequenza. La trasformata H(s) della risposta all’impulso h(t) è detta funzione di trasferimento e il legame tra le trasformate dei segnali di ingresso e uscita è: Y(s)=X(s)H(s) • La funzione H(s) è razionale e assume la forma H(s) = a0 + a1s + ... + an sn b0 + b1s + ... + bm sm • Le radici del numeratore sono dette zeri, mentre quelle del denominatore sono dette poli. • Le caratteristiche (risposta in frequenza, stabilità, etc) del filtro dipendono dal numero e dalla posizione di poli e zeri nel piano complesso. • Nei filtri fisicamente realizzabili il grado del numeratore è inferiore a quello del denominatore (ordine del filtro) 6 Torino, 21/09/2004 Pag. -3 3 Filtri per SAD Alberto Vallan La risposta in frequenza del filtro,ottenuta ponendo s=jω nella funzione dintrasferimento, indica l’effetto (in modulo H(jω ) e fase ∠H(jω ) ) che il filtro ha su segnali sinusoidali. Nel caso di segnale sinusoidale x(t)=A sin (ω0t+ϕ) l’uscita sarà y(t)= H(jω 0 ) A sin (ω0t+ϕ+ ∠H(jω 0 ) ) H(jω) A FdT del filtro Segnale in ingresso ω0 H(jω 0 ) A ω Segnale filtrato ω0 ω 7 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Principali tipi di filtri I filtri possono essere classificati sulla base della risposta in frequenza: H(f) H(f) Passa alto Passa basso f f fT fT H(f) H(f) Elimina banda Passa banda f f B B La frequenza di taglio e la banda di questi filtri sono generalmente misurate al livello –3dB (corrispondente ad una riduzione del modulo pari a 1 / 2 ) 8 Torino, 21/09/2004 Pag. -4 4 Filtri per SAD Alberto Vallan I filtri passa banda ed elimina banda possono essere realizzati con una combinazione di filtri passa alto e passa basso. x(t) y'(t) f2 y(t) f1 x(t) f1 + y(t) f2 f0 0 -2 -3 dB -4 |H(f)| (dB) Per ottenere una banda passante più stretta si utilizzano altre tecniche (filtri risonanti). In questi filtri la banda è spesso riferita alla frequenza di centro banda. Si definisce il fattore di qualità di un filtro come Q=f0/B -6 -8 B -10 -12 -14 -16 -18 -20 20 30 40 50 60 70 80 90 100 f (Hz) 9 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Caratteristiche dei filtri • La funzione di trasferimento di un filtro passa basso ideale ha il modulo del costante all’interno della banda passante, nullo nella banda d’arresto. Fase nulla in banda. • Un filtro con queste caratteristiche non è fisicamente realizzabile (non è causale) e quindi si utilizzano filtri reali che approssimano quelli ideali. Le approssimazioni più utilizzate sono: • Butterworth • Chebyshev • Ellittici • Bessel (raramente in forma numerica) Questi filtri possono essere progettati come passa basso, alto, banda ed elimina banda 10 Torino, 21/09/2004 Pag. -5 5 Filtri per SAD Alberto Vallan Filtri di Butterworth • Presentano una risposta in frequenza massimamente piatta in banda passante • La risposta è monotona decrescente al crescere della frequenza 1 0.9 Specifiche di progetto: • ordine • frequenza di taglio • guadagno in banda (spesso nei tool di progetto è fissato di default ad 1) 0.8 0.7 0.6 0.5 N=2 0.4 0.3 0.2 0.1 0 N=20 0 0.2 0.4 0.6 N=5 0.8 1 11 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Filtri di Chebyshev •Hanno una banda di transizione minore di quella dei filtri Butterworth (a parità di ordine) •La ridotta banda di transizione è ottenuta a spese della monotonicità della risposta. •I filtri di Tipo I presentano un ripple costante nella banda passante; quelli di Tipo II hanno ripple nella banda attenuata. Per entrambi i parametri di progetto sono: ordine, frequenza di taglio e ripple 12 Torino, 21/09/2004 Pag. -6 6 Filtri per SAD Alberto Vallan TIPO I 1 0 0.9 0.8 -0.5 Modulo in dB Modulo 0.7 -1 0.6 0.5 -1.5 N=2 0.4 Ripple = 1dB -2 0.3 0.2 N=20 0.1 N=5 -2.5 -3 0 0 0.2 0.4 0.6 0.8 1 0 0.1 0.2 0.3 0.4 0.5 TIPO II 20 1.2 Modulo -20 N=20 0.8 Modulo in dB 0 1 N=5 -40 -60 0.6 0.4 -80 N=2 -100 0.2 0 Ripple = 40 dB -120 0 0.2 0.4 0.6 0.8 -140 1 0 0.2 0.4 0.6 0.8 1 13 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Filtri di Ellittici (o di Cauer o equiripple) equiripple) • Caratteristica principale dei filtri ellittici è di avere la minima banda di transizione, a parità di ordine. • Il ripple nella risposta in frequenza è presente nelle due bande. • I parametri di progetto sono: ordine, ripple in banda passante, ripple in banda attenuata, frequenza di taglio. 0 1 -1 0.9 -3 0.8 -4 0.7 Modulo Modulo in banda passante (dB) -2 Ripple = 1dB -5 -6 0.6 -7 0.5 0 0.1 0.2 0.3 0.4 0.5 0.4 N=2 0.3 Ripple = 30dB Modulo in banda attenuata (dB) -20 N=5 0.1 0 0 0 -10 0.2 -30 N=20 -40 -50 0.2 0.4 0.6 0.8 1 -60 -70 -80 0.5 0.6 0.7 0.8 0.9 1 14 Torino, 21/09/2004 Pag. -7 7 Filtri per SAD Alberto Vallan Confronto a parità di ordine e frequenza di taglio Modulo Fase* Butterworth 4 Chebyshev I 3 II Chebyshev Ellittico 2 1.2 1 0.8 1 0.6 0 -1 0.4 -2 0.2 0 -3 0 0.2 0.4 0.6 0.8 1 -4 0 0.2 0.4 0.6 0.8 1 Osservare: • frequenza di taglio (Chebyshev II...) • banda di transizione • ripple • fase in banda 15 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Progetto e realizzazione E’ possibile reperire numerosi progetti di filtri analogici: • nella bibliografia specializzata; • nelle note applicative dei costruttori di amplificatori operazionali. A titolo di esempio si riporta lo schema di un filtro Butterworth del secondo ordine (Texas Instruments). Le formule di progetto dei componenti consentono di scegliere la frequenza di taglio e il tipo di approssimazione. Modulo Fase 16 Torino, 21/09/2004 Pag. -8 8 Filtri per SAD Alberto Vallan Uso di filtri numerici • I filtri analogici sono utilizzati all’interno del blocco di condizionamento dei segnali, prima della conversione A/D. • In molti casi è possibile ottenere lo stesso effetto utilizzando filtri numerici che operano sui campioni prodotti dal convertitore. condizion. analogico segnali condizion. analogico segnali conversione A/D A/D Memoria di acquisizione Pre elaborazione Mem Elaborazione Post elab Talvolta i filtri numerici sono contenuti all’interno degli A/D o della scheda di acquisizione 17 Torino, 21/09/2004 Filtri per SAD Alberto Vallan 18 Torino, 21/09/2004 Pag. -9 9 Filtri per SAD Alberto Vallan Quali Quali scegliere? I filtri numerici presentano i seguenti vantaggi: • Sono programmabili • Non presentano derive • Non richiedono componenti di precisione • Non devono essere accordati • Sono insensibili al rumore esterno • Generalmente forniscono prestazioni superiori (a parità di “costo”) Ove possibile è quindi preferibile usare filtri numerici. I filtri analogici, in alcuni casi, rappresentano una scelta obbligata: • filtri antialiasing • filtri per disturbi transitori • filtri per ridurre rumore e disturbi quando le loro ampiezze sono paragonabili o superiori alle ampiezze dei segnali utili. • filtri per segnali ad alta frequenza • filtri passivi per grandi dinamiche 19 Torino, 21/09/2004 Filtri per SAD Alberto Vallan I filtri numerici I filtri numerici sono sistemi che trasformano una sequenza numerica d’ingresso x[k] in una sequenza d’uscita y[n]. x[n] Filtro numerico h[n], H(z) y[n] Il legame tra le due sequenze (nel caso di filtri lineari e tempo invarianti) può essere espresso con un’equazione alle differenze y[n] + a1y[n-1] +…+ aNy[n-N] = b0x[n] + b1x[n-1] +…+ bMx[n-M] y[n]= -a1y[n-1] -…-aNy[n-N] + b0x[n] + b1x[n-1] +…+ bMx[n-M] La relazione lega il generico campione y[n] all’istante n agli ingressi e alle uscite precedenti e può essere utilizzata per calcolare l’uscita del filtro per un ingresso x[n] se sono noti i coefficienti ai e bi. Filtri in cui almeno un coefficiente ai è diverso da zero sono detti ricorsivi. In alcuni filtri la risposta dipende solo dagli ingressi e quindi i coefficienti ai sono nulli. Questi filtri sono detti non ricorsivi. 20 Torino, 21/09/2004 Pag. -10 10 Filtri per SAD Alberto Vallan La funzione di trasferimento La trasformata Z è lo strumento utilizzato per definire la funzione di trasferimento dei filtri numerici in modo analogo a quanto fatto nel dominio analogico con la trasformata di Laplace. Ricordando che trasformata Z della sequenza ritardata di m campioni x[n-k] è X(z)z-k , è possibile trasformare la relazione precedente ottenendo così la funzione di trasferimento del filtro numerico H(z) = Y(z) b 0 + b1z −1 + b 2 z −2 + ... + bMz −M = X(z) 1+ a1z −1 + a 2 z −2 + ... + aNz −N Si può osservare che la funzione di trasferimento è costituita dal rapporto di due polinomi nella variabile complessa z. 21 Torino, 21/09/2004 Filtri per SAD Alberto Vallan La risposta nel tempo del filtro per un generico ingresso x[n] può essere calcolata come: M N k =0 k =1 y[n] = ∑ bk x[n − k] −∑ ak y[n − k] dove a1,..., aN e b0,...,bM sono i coefficienti della funzione di trasferimento 22 Torino, 21/09/2004 Pag. -11 11 Filtri per SAD Alberto Vallan Descrizione nel dominio del tempo La funzione di trasferimento H(z) può anche essere ottenuta applicando la trasformata Z della risposta all’impulso h[n] del filtro. Nel dominio del tempo la sequenza di uscita, come per i filtri analogici, è legata da quella di ingresso da una relazione (convoluzione) che coinvolge la risposta all’impulso y[n] = +∞ ∑ x[k ]h[n − k ] k = −∞ • Filtri con risposta all’impulso costituita da un numero finito di termini non nulli sono detti FIR. • Filtri con risposta all’impulso infinita sono detti IIR. • La risposta all’impulso di un filtro non ricorsivo è una sequenza finita. Questi filtri sono dunque di tipo FIR; la loro risposta all’impulso coincide con i coefficienti del filtro. • I filtri ricorsivi sono generalmente IIR. 23 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Descrizione di filtri tramite diagrammi a blocchi La descrizione coinvolge tre blocchi base: • Il ritardatore unitario • Il moltiplicatore • Il sommatore Il ritardatore unitario genera un’uscita identica all’ingresso ma ritardata di un intervallo di campionamento x[n] y[n]=x[n-1] z-1 In generale, un filtro IIR ha la seguente struttura: 24 Torino, 21/09/2004 Pag. -12 12 Filtri per SAD Alberto Vallan Esempio Nel filtro a media mobile: l’uscita è calcolata come media di N campioni precedenti y[n] = 1 N N −1 ∑ x[n − k ] k =0 Nel caso N=4 si ha y[n]=0.25 x[n]+0.25 x[n-1]+0.25 x[n-2] +0.25 x[n-3] E la risposta all’impulso è h[0]=0.25; h[1]=0.25; h[2]=0.25; h[3]=0.25; sinteticamente h[n]=[0.25, 0.25, 0.25, 0.25] Questo filtro ha risposta finita ed è quindi di tipo FIR La funzione di trasferimento ha gli stessi coefficienti della risposta all’impulso H(z)=0.25+0.25 z-1+0.25 z-2+0.25 z-3 25 Torino, 21/09/2004 Filtri per SAD Alberto Vallan 26 Torino, 21/09/2004 Pag. -13 13 Filtri per SAD Alberto Vallan Calcoliamo la risposta al gradino unitario tramite la convoluzione x[k] x[k] 0 0 -3 h[3] -2 h[2] -1 0 1 2 3 -3 k h[0-k] h[0] 0.25 h[1] 1 n=1 1 n=0 -2 h[3] -1 h[2] 0 h[1] 1 2 h[1-k] h[0] 0.25 3 k k x[k] x[k] 1 n=2 1 n=3 0 0 -3 -2 -1 0 1 h[2-k] h[2] h[1] h[3] k 2 h[0] 3 -3 k h[3] 0.25 -2 h[2] -1 h[1] 0 h[0] 1 2 3 k h[0-k] 0.25 k k La risposta y[n] è y[n] 1 -2 -1 0 1 2 3 n 4 27 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Per prevedere il comportamento del filtro con altri segnali di stimolo bisogna calcolarne la risposta in frequenza. Si può procedere analiticamente (sostituendo a z=ejωt) oppure utilizzare uno specifico programma (Matlab, Octave, SciLab, ..) 1 0.9 Le funzioni ML sono: b=[1 1 1 1]/4; [H w]=freqz(b,1,1000); plot(w,abs(H)) 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.5 1 1.5 2 2.5 3 3.5 freqz() restituisce 1000 punti della risposta in frequenza H equispaziati tra 0 e π (π corrisponde alla frequenza di Nyquist) Il filtro si comporta come un passa basso. 28 Torino, 21/09/2004 Pag. -14 14 Filtri per SAD Alberto Vallan La risposta del filtro ad un certo ingresso può essere calcolata • utilizzando i coefficienti della funzione di trasferimento • utilizzando la sua risposta all’impulso b=[1 1 1 1]/4; a=1 • xf=filter(b,a,x); • xf=conv(x,b); 1.5 Esempio: risposta di un filtro a media mobile ad un segnale sinusoidale corrotto da rumore Il risultato è simile a quello che si otterrebbe con un filtro analogico del primo ordine avente banda pari a circa un decimo della frequenza di campionamento 1 0.5 0 -0.5 -1 -1.5 0 1 2 3 4 5 -3 x 10 29 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Risposta all’onda quadra corrotta da rumore fS=10 kHz; f0= 100 Hz Implementazione in Segnale di ingresso 2.5 MS-VB: 2 for i=1 to Ns-N for j=1 to N y(i)=x(i)*h(j) next next 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5 0 0.002 0.004 0.006 0.008 0.01 1.5 1.5 0 -0.5 -1 -1.5 -2 0 0.002 0.004 0.006 0.008 0.01 1 N=4 Segnale di uscita Segnale di uscita 1 0.5 0.5 0 -0.5 -1 -1.5 0 0.002 0.004 0.006 0.008 N=20 0.01 All’aumentare dell’ordine • si riduce il rumore all’uscita • aumenta il tempo di risposta • aumenta il tempo impiegato per ‘caricare’ il filtro 30 Torino, 21/09/2004 Pag. -15 15 Filtri per SAD Alberto Vallan • Aumentando l’ordine del filtro si riduce la banda passante. • L’attenuazione in banda d’arresto è comunque modesta. • Non è quindi adatto per applicazioni ove è richiesta una grande attenuazione (filtri antialiasing, anche se in realtà bisognerebbe considerare lo spettro del segnale d’ingresso) 0 -5 N=4 N=8 -10 N=16 -15 -20 -25 -30 -35 -40 0 0.5 1 1.5 2 2.5 3 31 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Quando è importante avere un filtro a fase lineare La linearità della fase è importante quando il filtro deve preservare la forma d’onda del segnale (ECG). La condizione di non distorsione dei segnali richiede che, in banda, il modulo della funzione di trasferimento sia costante e la fase lineare Se la fase è una funzione lineare della frequenza allora le componenti armoniche del segnale subiscono lo stesso ritardo temporale ∆t = ∠H (ω ) ω = a ⋅ω ω =a ∀ω Esempio angle(H(ω))= a·ω, con a=1/1000 calcoliamo il ritardo introdotto dal filtro per • f1 = 100 Hz, la fase vale 0.2π e il ritardo vale 1 ms • f2 = 200 Hz la fase vale 0.4π e il ritardo vale 1 ms (ritardo costante pari ad a) 32 Torino, 21/09/2004 Pag. -16 16 Filtri per SAD Alberto Vallan Filtri FIR a fase lineare I filtri FIR possono essere progettati per avere fase esattamente lineare. Esistono 4 tipi di filtri FIR a fase lineare Le funzioni di progetto di ML forniscono sempre filtri a fase lineare (fa eccezione la funzione cremez) 33 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Progetto di filtri FIR I coefficienti della risposta all’impulso di un filtri FIR possono essere ricavati dalla risposta in frequenza voluta utilizzando l’antitrasformata di Fourier h[n] = 1 2π π ∫ π H (ω )e − jωn dω Con questa relazione si ottengono i campioni della risposta all’impulso che coincidono con i coefficienti del filtro. Purtroppo i filtri a banda limitata, come il passa basso ideale, hanno un infiniti coefficienti non nulli e quindi non sono fisicamente realizzabili. La soluzione più semplice è quella di troncarne la risposta all’impulso; la risposta in frequenza del filtro risulta però corrotta da sovraelongazioni (fenomeno di Gibbs). 34 Torino, 21/09/2004 Pag. -17 17 Filtri per SAD Alberto Vallan Esempio Progettare un filtro FIR filtro passa basso avente frequenza di taglio ω0 e riposta unitaria in banda con fase nulla. La funzione di trasferimento è dunque: 1 per ω < ω 0 H (ω ) = 0 altrove Con l’equazione precedente è possibile calcolare analiticamente l’espressione della risposta all’impulso, ottenendo h[n] = 1 2π π ∫ π H (ω )e j ωn − dω = ω0 ω sin c 0 π π n con ω compreso tra -π e π 35 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Calcoliamo i primi 21 coefficienti del filtro (con ML) che lavorerà con segnali campionati alla frequenza di 10 kHz. Fissiamo la frequenza di taglio a f0=2 kHz 0.4 0.35 b=f0/fny*sinc(f0/fny*[-10:10]); 0.3 0.25 0.2 0.15 0.1 0.05 0 -0.05 -0.1 1.4 0 5 10 15 20 25 La risposta in frequenza risulta 1.2 1 [H w]=freqz(b,1,1000); N=101 N=21 0.8 L’ampiezza delle sovraelongazioni non può essere ridotta nemmeno incrementando l’ordine del filtro 0.6 0.4 0.2 0 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 36 Torino, 21/09/2004 Pag. -18 18 Filtri per SAD Alberto Vallan Uso di finestre di pesatura Il fenomeno di Gibbs nasce dal brusco troncamento dei coefficienti del filtro. L’utilizzo di finestre (funzioni) di pesatura dei coefficienti del filtro consente di ottenere code della risposta all’impulso più “morbide” hw[n]=h[n]·w[n] Esempio Una finestra molto usata è quella di Hanning, così definita: w[n] = 0.5 − 0.5 ⋅ cos 1.2 1.4 1 1.2 Finestra di Hann 0.8 Risposta in frequenza • coefficienti pesati • non pesati 1 0.6 0.8 0.4 0.6 0.2 0.4 0 0.2 -0.2 2πn N 0 0 5 10 15 20 25 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Coefficienti non pesati/ pesati 37 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Fonte: Analog Devices 38 Torino, 21/09/2004 Pag. -19 19 Filtri per SAD Alberto Vallan Scelta della finestra Le caratteristiche della finestra usata determinano le caratteristiche della funzione di trasferimento del filtro hw[n]=h[n]·w[n] ⇓ Hw(ω)=H(ω)*W(ω) la funzione di trasferimento del filtro con coefficienti pesati è la convoluzione della funzione di trasferimento H(ω) ottenuta senza finestra e la trasformata della finestra W(ω) Non applicare alcuna finestra significa, in realtà, applicare una finestra rettangolare la cui trasformata è 8 7 sin(ωN / 2) − jω ((N−1) / 2) W (ω ) = e sin(ω / 2) Nucleo di Dirichlet 6 5 4 3 2 1 0 0 1 0 2 3 4 5 6 2π 7 39 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Principali finestre 2 n N π Hamming w[n] = 0.54 − 0.46 cos Blackman w[n] = 0.42 − 0.5 cos Hanning w[n ] = 0.5 − 0.5 cos 2 n 2 n + 0.08cos N N π π 2 n N π 2 n N 4 n + 0.14128 cos N 6 n − 0.01168 cos N π BH 4 - terms w[n] = 0.35875 − 0.48829 cos π π 40 Torino, 21/09/2004 Pag. -20 20 Filtri per SAD Alberto Vallan 41 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Finestra Rettangolare Hanning Hanmming Blackman BH Larghezza di banda a Ampiezza lobo -3 dB (campioni) laterale (dB) 0.89 1.44 1.3 1.68 1.9 Pendenza lobi laterali (dB/ottava) -12 -32 -42 -58 -92 6 18 6 18 6 Esempio: Passa basso, B=1 kHz, fs=10 kHz b=FIR1(N,B/fs*2,hann(N+1)); 20 20 0 0 -20 -20 -40 -60 -40 -80 -60 -100 Rettangolare Hanning Hamming -80 -100 -120 -140 -160 -180 0 500 1000 1500 2000 Rettangolare Hanning Hamming -120 2500 3000 3500 4000 4500 5000 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 N=101 N=21 42 Torino, 21/09/2004 Pag. -21 21 Filtri per SAD Alberto Vallan La funzione FIR1 di ML consente di progettare filtri • passa basso • passa alto • passa banda • elimina banda Esempio Filtro passa banda FIR, banda passante da f1=1000 Hz a f2=10 kHz, frequenza di campionamento fS=48 kHz b=FIR1(N,[f1/fny f2/fny],rectwin(N+1)); 0 -10 -20 N=21 -30 N=101 -40 N=41 -50 -60 -70 -80 0 0.5 1 1.5 2 x 10 4 43 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Progetto di filtri FIR con risposta arbitraria Filtri FIR con risposta arbitraria possono essere progettati con il metodo del campionamento in frequenza. La funzione FIR2 di ML impiega questa tecnica e consente di ottenere i coefficienti del filtro a partire da un insieme di punti della funzione di trasferimento voluta. Può essere usata per progettare filtri multibanda. Esempio Realizzare un filtro avente la seguente risposta in frequenza 1.2 1 1 N=401 0.9 0.8 0.8 N=101 0.7 0.6 0.6 0.5 0.4 0.4 0.3 0.2 0.2 N=21 0.1 0 0 0 0.5 1 1.5 2 2.5 x 10 0 0.5 1 1.5 2 2.5 4 4 x 10 44 Torino, 21/09/2004 Pag. -22 22 Filtri per SAD Alberto Vallan Impiego di filtri numerici come filtri antialiasing • I filtri antialiasing sono filtri passa basso usati per limitare la banda del segnale alla frequenza di Nyquist del sistema di acquisizione • Tutta l’informazione contenuta nel segnale fino alla frequenza di Nyquist è teoricamente disponibile dopo l’acquisizione, purché non sia stata eliminata dal filtro. • Se il segnale utile ha banda B, e la frequenza di transizione del filtro è fT, la frequenza di campionamento dovrà essere almeno fS=2(B+fT) • In generale si cerca di utilizzare la più piccola frequenza di campionamento possibile così da poter utilizzare AD più lenti (più economici o più accurati) e da ridurre il numero di campioni acquisiti. 45 Torino, 21/09/2004 Filtri per SAD Alberto Vallan • L’utilizzo di filtri aventi una ridotta banda di transizione consente di ridurre la frequenza di campionamento, ma ciò richiede di utilizzare filtri analogici di ordine elevato. • La tecnica del sovracampionamento, basata sull’impiego di frequenze di campionamento superiori al minimo richiesto, consente di utilizzare filtri analogici più semplici. Il processo di decimazione può generare aliasing e quindi i segnali devono essere preventivamente filtrati con filtri numerici. 46 Torino, 21/09/2004 Pag. -23 23 Filtri per SAD Alberto Vallan Come si procede: Risposta del f iltro analogico Spettro del segnale da acquisre Bu f OS/2 f Risposta del filtro numerico Spettro del segnale acquisto Bu f S/2 f OS/2 f Si filtra il segnale (a larga banda) con un filtro passa basso analogico e si ‘sovracampiona’ alla frequenza fOS Si applica un filtro numerico avente banda passante poco superiore alla banda utile Bu e ridotta banda di transizione Infine si decimano i campioni acquisiti. • Le specifiche del filtro analogico sono meno stringenti sia in banda passante sia in banda attenuata (aliasing oltre fOS-Bu) • Aumenta il tempo di elaborazione e l’utilizzo della memoria 47 Torino, 21/09/2004 Filtri per SAD Alberto Vallan I filtri FIR consentono di ridurre i tempi di calcolo in caso di decimazione La funzione decimate(x,R) di ML esegue filtraggio e decimazione. 48 Torino, 21/09/2004 Pag. -24 24 Filtri per SAD Alberto Vallan Filtri IIR La struttura di filtri IIR è simile a quella dei FIR, ma l’uscita dipende anche dalle uscite precedenti Le funzioni viste precedentemente si utilizzano anche per questi filtri • [H w]=freqz(b,a,N); • xf=filter(b,a,x); 49 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Caratteristiche dei filtri IIR 50 Torino, 21/09/2004 Pag. -25 25 Filtri per SAD Alberto Vallan FIR vs IIR 51 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Progetto di filtri IIR Esistono numerosi metodi di progetto di filtri numerici. I principali riguardano: • la conversione della risposta in frequenza di filtri analogici nella risposta dell’equivalente numerico (trasformazione biblineare+prewarping) • l’approssimazioni di una risposta in frequenza arbitraria (equazioni di Yule-Walker) 52 Torino, 21/09/2004 Pag. -26 26 Filtri per SAD Alberto Vallan Progetto di IIR da filtri analogici: la trasformazione bilineare Si converte la funzione di trasferimento di un filtro analogico in quella di un filtro numerico operando la sostituzione: s→ 2 1 − z −1 T 1 + z −1 Se il filtro analogico è stabile lo sarà anche quello numerico (salvo problemi dovuti all’arrotondamento numerico) 53 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Utilizzando la trasformazione bilineare si ottiene una relazione non lineare tra le frequenze del dominio analogico e le frequenze di quello numerico. Tale relazione deve essere usata per corregge la risposta in frequenza del filtro analogico prima dell’impiego della trasformazione bilineare (frequency prewarping) 2 1.8 fs 1.6 1.4 1.2 fd/fny π tan πf d fa/fny fa = fs 1 0.8 0.6 0.4 0.2 0 0 0.1 0.2 0.3 0.4 fa/fny 0.5 0.6 0.7 0.8 fd/fny 54 Torino, 21/09/2004 Pag. -27 27 Filtri per SAD Alberto Vallan Esempio: filtro passa banda del secondo ordine Si vuole realizzare un filtro numerico in grado di isolare la componente fondamentale del segnale acquisito dalla rete di distribuzione dell’energia elettrica. Si vuole quindi utilizzare un filtro passa banda del secondo ordine centrato alla frequenza di 50 Hz ω0 H ( s) = Q s2 + ω0 Q s s + ω 02 Dove ω0=2πf0 con f0=50 Hz e Q, fattore di qualità del filtro Q=5 55 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Si applica la relazione di prewarp alla frequenza di centro banda del filtro (è la frequenza che dovrà avere il filtro numerico) e si ottiene la frequenza che si dovrà usare nella descrizione del filtro analogico. Supponendo che la frequenza di campionamento sia fS= 500 Hz f 0a = fs π tan πf 0 d fs = 500 π tan π 50 500 ≈ 51.7 Hz Applichiamo la trasformazione bilineare H ( z) = b0 = 2 ω 0d Qf S b1 = 0 ; ; ω 0d ω a0 = 4 + 2 + 0 d Qf S f S b0 + b1 z −1 + b2 z −2 a0 + a1 z −1 + a2 z − 2 2 ω ; a1 = −8 + 2 0 d fS dove b2 = −b0 2 ω ω ; a2 = 4 − 2 0 d + 0 d Qf S f S 2 56 Torino, 21/09/2004 Pag. -28 28 Filtri per SAD Alberto Vallan Si ottiene a=[4.6822 -7.1554 4.1624] b=[0.2599 0 -0.2599] Il modulo della funzione di trasferimento risulta (con ML) [H w]=freqz(b,a,1000) 0 Verificare la frequenza di centro banda ed il fattore di qualità -5 Modulo in dB -10 -15 -20 -25 -30 -35 -40 0 50 100 150 200 250 f(Hz) 57 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Filtriamo un segnale sinusoidale (Vp=1) corrotto da rumore gaussiano bianco (std=0.4) Q=5 Q=20 a=[4.6822 -7.1554 4.1624] b=[0.2599 0 -0.2599] a=[4.4873 -7.1554 4.3573] b=[0.0650 0 -0.0650] Unfiltered Unfiltered 2 1 0 -1 -2 0 0.05 0.1 0.15 0. 2 0.25 0.3 0.35 0.4 Non filtrato Non filtrato 3 2 1 0 -1 -2 0 0.05 0.1 0.15 Filtered Filtrato Filtrato 0.25 0.3 0.35 0.4 0.25 0.3 0.35 0.4 1 1 0 -1 -2 0.2 Filtered 2 0.5 0 -0.5 -1 0 0.05 0.1 0.15 0. 2 0.25 0.3 0.35 0.4 0 0.05 0.1 0.15 0.2 • All’aumentare del fattore di qualità migliora la selettività del filtro, ma aumenta il tempo di risposta. • Gli effetti dell’arrotondamento possono rende il filtro instabile. • I filtri dl secondo ordine sono i meno sensibili agli effetti di quantizzazione. Filtri IIR di ordine superiore sono spesso realizzati come cascata di filtri del secondo ordine. 58 Torino, 21/09/2004 Pag. -29 29 Filtri per SAD Alberto Vallan Utilizzo delle funzioni Matlab per il progetto di filtri IIR basati su prototipi analogici [b, [b, [b, [b, a] a] a] a] = = = = } BUTTER(N,Wn); CHEBY1(N,R,Wn); CHEBY2(N,R,Wn); ELLIP(N,Rp,Rs,Wn); per il progetto di filtri passa basso [B,A] = ELLIP(N,Rp,Rs,Wn,'high') per il progetto di filtri passa alto 59 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Esempio Si vuole progettare un filtro passa banda del secondo ordine con f0= 50 Hz, Q=5 Si calcolano le frequenze minima e massima della banda a -3 dB fmin=f0-f0/Q fmax=f0+f0/Q I coefficienti del filtro si calcolano con la funzione [b a]=butter(1,[fmin/fny fmax/fny]); 0 La funzione di trasferimento è molto simile a quella ottenuta con la trasformazione bilineare -5 -10 -15 -20 -25 -30 -35 -40 0 50 100 150 200 250 60 Torino, 21/09/2004 Pag. -30 30 Filtri per SAD Alberto Vallan Progetto di filtri IIR con il metodo di YuleYule-Walker Permette di ottenere i coefficienti di un filtro IIR che approssima una risposta in frequenza arbitraria. Il metodo è basato su una tecnica di fitting. Si descrive, per punti, il modulo della riposta voluta I coefficienti del filtro IIR si ottengono con la funzione [b a]=yulewalk(N,f,m); Nota: la fase non è specificata ed è quindi un parametro non controllato 61 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Progettando con il metodo di Y-W un filtro che ha le stesse caratteristiche degli esempi precedenti si osserva che per ottenere una “buona” risposta utilizzare almeno un filtro del 20° ordine 0 -5 -10 -15 -20 -25 -30 -35 -40 0 50 100 150 200 250 L’impiego del metodo di Y-W non presenta particolari difficoltà, ma deve essere utilizzato quando si vogliono realizzare filtri con risposte difficili da ottenere con gli altri metodi 62 Torino, 21/09/2004 Pag. -31 31 Filtri per SAD Alberto Vallan Correzione della risposta in frequenza • I filtri ideali a banda piatta non possono essere fisicamente realizzati, ma possono essere approssimati utilizzando filtri di ordine sufficientemente elevato. • Filtri di ordine elevato richiedono elevati tempi di calcolo. • Non sempre però è necessario avere una risposta piatta. In alcuni casi l’effetto del filtro sui segnali in banda può essere corretto a posteriori, ad esempio quando l’informazione cercata è contenuta in una piccola porzione della banda del segnale (FFT). • In questo caso è possibile utilizzare filtri di ordine inferiore, anche con elevato ripple in banda, ma comunque in grado di garantire sufficiente attenuazione in banda d’arresto. (Chebyshev). • Se l’informazione è contenuta su una banda larga (RMS) la correzione può essere apportata dopo aver trasformato il segnale nel dominio della frequenza (può essere eccessivamente dispendioso) 63 Torino, 21/09/2004 Filtri per SAD Alberto Vallan Vantaggi derivanti da una risposta con fase lineare Si vuole realizzare un filtro passa basso, ellittico, dell’ottavo ordine avente frequenza di taglio pari ad 1/10 della frequenza di campionamento, ripple in banda 0.5 dB e in banda attenuata 40 dB. [b a]=ellipt(8,0.5,40,0.2); 1 0.8 La risposta in modulo e fase risulta: 0.6 0.4 0.2 0 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 4 2 0 -2 -4 64 Torino, 21/09/2004 Pag. -32 32 Filtri per SAD Alberto Vallan Osserviano il segnale all’uscita del filtro quando in ingresso sono presenti due sinusoidi di frequenza f0=253 Hz e 3f0. L’attenuazione del filtro alle due frequenze vale 0.988 1 0.99 0.98 0.97 0.96 0.95 0.94 0 100 200 300 400 500 600 700 800 900 1000 65 Torino, 21/09/2004 Filtri per SAD Alberto Vallan 2 1 Segnale di ingresso 0 -1 -2 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 2 ∆VP 1 Segnale d’uscita 0 -1 -2 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 La fase alla frequenza f0 vale -0.8 rad La fase alla frequenza 3f0 vale -3.13 rad (per avere fase lineare deve essere -2.4 rad). Nota: Per non avere distorsioni è possibile usare filtri IIR • rendendo la fase circa nulla (bisogna aumentare l’ordine) • usando un filtro anticausale (se il fitraggio può avvenire dopo l’acquisizione) 66 Torino, 21/09/2004 Pag. -33 33 Filtri per SAD Alberto Vallan Filtri IIR anticausali a fase nulla Questa tecnica si può applicare solo se tutti i dati da filtrare disponibili: • si filtra la sequenza • si inverte l’ordine della sequenza filtrata • si filtra nuovamente Filtrare una sequenza invertita è equivalente a filtrare la sequenza diretta con un filtro avente lo stesso modulo della funzione di trasferimento ma fase opposta. Le due operazioni di filtraggio portano ad una compensazione della fase. E’ come filtrare con un filtro a fase nulla e modulo pari al modulo del filtro applicato al quadrato. Attenzione alla presenza di fenomeni transitori all’inizio e alla fine dei dati. 67 Torino, 21/09/2004 Filtri per SAD Alberto Vallan In ML la funzione per filtraggio anticausale è y_nc=filtfilt(b,a,x); 2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 I segnali appaiono in fase, senza distorsioni. E’ presente una piccola differenza nelle ampiezze (0.9882). 68 Torino, 21/09/2004 Pag. -34 34