Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Immacolata Ortosecco » 21.Filtri - parte terza


Sommario

  • Progetto di filtri numerici
  • Varie tipologie di filtri progettate con l’interfaccia grafica Matlab FDATOOL
  • Filtri comb

Progetto dei filtri numerici

I filtri numerici in origine sono stati derivati da quelli analogici e molti hanno ereditato anche i loro nomi. Es.: Butterworth, Cheby ed Ellittici.

In ambiente Matlab Signal Processing vengono offerte alcune functions per il progetto numerico di tali tipologie di filtri. (Vedi la documentazione di Signal Processing).

Esistono svariate modalità di progettazione che sono sganciate dal progetto del filtro analogico corrispondente e sono in grado di fornire direttamente i coefficienti dell’equazione alle differenze.

Progetto di filtro come progetto della risposta in frequenza

In figura viene mostrata la progettazione di una risposta in frequena assegnata (in colore blu).
Il filtro progettato è un filtro FIR equiripple. Il progetto è fatto utilizzando la function Matlab ‘firpm‘. ‘firpm‘ realizza l’algoritmo di Parks-McClellan. La scala delle frequenze è normalizzata alla frequenza di Nyquist.
(vedi Help firmp )


Progetto filtri (segue)

Per velocizzare i progetti di filtri è conveniente utilizzare l’interfaccia grafica ‘fdatool’di Matlab per avere sia il progetto che l’analisi del filtro che si intende realizzare.
Come detto precedentemente consultare l’appendice B di Oppenheim-Schafer Buck- Discrete time Signal processing per una rapida rassegna delle tipologie di filtri analogici.
Ricordiamo comunque, per grandi linee, cosa intendiamo per filtro, ad es.: Butteworth o C.hebyshev o Ellittico.
Tra i filtri a risposta all’impulso infinita IIR abbiamo:
Il tipo Butterworth passa basso con modulo della risposta in frequenza piatto nella banda passante.La banda di transizione è tanto più ripida quanto più elevato è l’ordine del filtro.
Il Cheby tipo I con ripple nella banda passante, il Cheby tipo II con ripple nella banda oscura.
L’Ellittico con ripple sia nella banda passante che in quella oscura.
Per i FIR
Il progetto dei FIR è richiesto quando c’è necessità di linearità della fase e stabilità, senza grosse limitazioni per la quantità di memoria per i coefficienti, il cui numero è legato all’ordine del filtro. Le specifiche di solito vengono soddisfatte da valori dell’ordine alti.
Nella slide successiva rivediamo la schermata iniziale dell’fdatool dove vengono definite le specifiche per i filtri da progettare.

Schermata di FDATOOL Matlab Signal Processing toolbox


Progetto di un filtro passa basso tipo Butterworth con le specifiche indicate nell’interfaccia grafica


Questo per un passa basso Cheby tipo I


Fdatool per lo stesso progetto per evidenziare l’oscillazione o ripple della risposta in frequenza nella banda passante


Tipo Cheby II: ripple nella stop band


Tipo IIR ellittico: ripple in entrambe le bande, ordine 5


Stesse specifiche per un FIR progettato con il metodo della finestra


Ancora su fdatool

L’interfaccia grafica FDATool offre tra le altre possibilità:

  • l’editing della posizione di poli e nel zeri piano z con visualizzazione contemporanea delle variazioni della risposta in frequenza.
  • l’esportazione dei coefficienti del filtro nel work space di Matlab, come coefficienti di sezioni del 2° ordine o come numeratore e denominatore di una singola sezione.

La possibiltà di creare un modello del filtro in esame in Simulink (altro ambiente software di Matlab). Da qui è possibile passare ad una realizzazione hardware con alcuni tipi di FPGA.
Questo completa il quadro delle applicazioni. (vedi documentazione Matlab+Simulink)

Filtri a pettine

I filtri a pettine, noti anche come filtri comb, sono filtri eliminatori di bande multiple, il loro spettro mostra degli zeri che si presentano periodicamente, fornendo un’immagine simile a quella dei denti di un pettine.
Una delle principali applicazioni è quella di eliminare linee spettrali armoniche.
Esempio di filtro comb.
Per il più semplice filtro comb, prendiamo in esame un filtro a media corrente ( moving-average) su M campioni
y[n]=\frac{1}{M+1}\sum_{k=0}^{M}x[n-k]
La funzione di trasferimento è
H(z)=\frac{1}{M+1}\sum_{k=0}^{M}z^{-k}=\frac{1}{M+1}\frac{1-z^{-(M+1)}}{1-z^{-1}}
e la sua risposta in frequenza è
H(e^{j\omega})=\frac{e^{-j\omega M/2}}{M+1}\frac{sin(\omega(\frac{M+1}{2})}{sin(\omega/2)}
Dall’espressione della funzione di trasferimento osserviamo che gli zeri sono le radici M-esime dell’unità.
Se M=3 abbiamo
H(z)=\frac{1}{M+1}\frac{1-z^{-(M+1)}}{1-z^{-1}}=\frac{1}{M+1}\frac{z^{M+1}-1}{z^{M}(z-1)}=\frac{1}{M+1}\frac{z^{4}-1}{z^{3}(z-1)}
Quindi il numeratore ha zeri che sono le radici (M+1)-esime dell’unità, ( M=3) , un polo a z=1 che si cancella con lo zero a z=1, e 3 poli a z =0.
Vedi grafico nella slide successiva.

Esempio #1

Posizione di zeri e poli del moving average

Anche in questo caso, il grafico è stato ottenuto con la function Matlab z-plane.
zplane(b,a) ha bisogno di b ed a che sono vettori riga e contengono I coefficienti delle polinomiali B(z) e A(z).
Essa fornisce il grafico nel piano z con la collocazione di poli e zeri. I poli sono indicati con il x e gli zeri con un pallino.
4 poli e 4 zeri, il polo a z=1 si annulla con lo zero a z=1.
Nel caso nostro il polinomio in z del numeratore della H(z) è di 4° grado, z4-1 con coefficienti [1 0 0 0 -1].
Il polinomio in z del denominatore è anch’esso di 4° grado, z4- z3 e con coefficienti [1 -1 0 0 0].
La regione di convergenza include il cerchi unitario.
Ricordiamo la
H(z)=\frac{z^{4}-1}{z^{3}(z-1)}
Segue comando Matlab per il grafico in figura:
zplane([1 0 0 0 -1],[1 -1 0 0 0])

Diagramma poli e zeri per la H(z).

Diagramma poli e zeri per la H(z).


H(z) visualizzazione tridimensionale e diagramma poli-zeri


Modulo e fase della risposta in frequenza

Risposta in frequenza del moving average dell’esempio 1.
H(z)=\frac{z^{4}-1}{z^{3}(z-1)}
Il grafico è stato ottenuto con la function Matlab freqz.
La function freqz fornisce la risposta in frequenza del filtro numerico. I coefficienti b ed a sono definiti come prima .
Freqz(b,a, N) fornisce i due grafici a lato: modulo in dB della risposta in frequenza calcolata su per N punti in frequenza equispaziati posti sulla metà superiore del cerchio unitario.
Nel caso in cui vengano dichiarate le variabili di uscita H e W per la function freqz , i valori della risposta in frequenza complessa sono memorizzati in H ed i relativi valori in frequenza sono in W, espressi in radianti/campioni.
Se N non viene assegnato, viene posto = 512.

Risposta in frequenza del filtro dell’esempio #1.

Risposta in frequenza del filtro dell'esempio #1.


Moving-average (segue)

Ancora sulla risposta in frequenza del moving average dell’esempio 1.

Il grafico è stato ottenuto con la function matlab freqz.
[H, W]=freqz([1 0 0 0 -1],[1 -1 0 0 0]).
Qui il modulo della risposta in frequenza non è stato calcolato in dB ed il grafico appare diverso.
Si osservi la posizione dello zero a π/2, e dello zero a π.
L’effetto dell’annullamento del polo a zero con lo zero a zero fornisce un modulo della risposta elevato, il comportamento del filtro è quello di un passa basso.

Modulo della risposta in frequenza del filtro dell’esempio #1.

Modulo della risposta in frequenza del filtro dell'esempio #1.


Esempio #2

Costruzione di una risposta in frequenza con più zeri. Filtro comb.

Consideriamo la funzione di trasferimento H(z) rappresentativa di un filtro FIR
H(z)=\sum_{k=0}^{M}h[k]z^{-k}
Se sostituiamo z con z^{L} abbiamo
H_{L}(z)=\sum_{k=0}^{M}h[k]z^{-Lk} e la risposta in frequenza risulta
H_{L}(e^{j\omega})=\sum_{k=0}^{M}h[k]e^{-jkL\omega}=H(L\omega)
Quindi la risposta in frequenza H_{L}(e^{j\omega}) è semplicemente una ripetizione di H(e^{j\omega}), L volte nel range da 0 a 2pi.
H_{L}(z)=\frac{1}{M+1}\frac{1-z^{-L(M+1)}}{1-z^{-L}}
H_{L}(e^{j\omega})=\frac{1}{M+1}e^{-j\omega LM/2}\frac{sin(\omega L(M+1)/2)}{sin(\omega L/2)}
Vediamo un esempio con L=4 ed M=3.
Ricalcoliamo poli e zeri, e poi la risposta in frequenza.

Pole-zero plot zplane([1 zeros(1,15) -1],[1 zeros(1,3) -1 zeros(1,4)]).

Pole-zero plot zplane([1 zeros(1,15) -1],[1 zeros(1,3) -1 zeros(1,4)]).


Visualizzazione in 3D della risposta in frequenza H(z) sul cerchio unitario e plot di poli e zeri


Pole zero plot e risposta in frequenza

Come si vede dalla figura viene ripetuto il pattern di zeri , 16 zeri su tutto il cerchio unitario, corrispondenti alle radici 16-esime dell’unità, equispaziati sulla circonferenza e 12 poli a z=zero e 4 a : z= 1, z= +i,z= -1,z= -i.

Pole-zero plot con function zplane([1 zeros(1,15) -1],[1 zeros(1,3) -1 zeros(1,4)]).

Pole-zero plot con function zplane([1 zeros(1,15) -1],[1 zeros(1,3) -1 zeros(1,4)]).

Risposta in frequenza L=4 , M=3.

Risposta in frequenza L=4 , M=3.


Srutture per filtri Comb senza e con feedback , FIR ed IIR

FIR
L=ritardo
y[n]=x[n]+ ax[n-L];
Passando alla z-transform Y(z)=(1+az-L)X(z)
ed alla funzione di trasferimento
H(z)=1+az-L
IIR
y[n]=x[n]+ay[n-L]
Passando alla z-transf (1-az-L )Y(z)=X(z)
ed alla funzione di trasferimento
H(z)=1/ (1-az-L )


Risposta in frequenza di un comb senza feedback – tipo FIR


Risposta in frequenza di un comb con feedback – tipo IIR


Codice Matlab per il grafico tridimensionale della z-transform

theta=0:.05:2*pi;
x=cos(theta);
y=sin(theta);
z=x+j*y;
hz=(z.^4-1)./(z.^4-z.^3);
stem3(x,y,abs(hz))
subplot(211),stem3(x,y,abs(hz))
hold
subplot(211),stem3(x,y,zeros(1,126))
subplot(211),plot3(x,y,zeros(1,126))
title (‘H(z) calcolata sul cerchio unitario’)

I materiali di supporto della lezione

Filtri:

Cap. 5 -Discrete Time Signal Processing – Oppenheim, Scafer, Buck.

Cap. 6 Signals & Systems -Oppenheim, Willsky (per approfondimenti).

Julius Orion Smith- Introduction to Digital filters with audio applications - CCRMA.

Manuale Matalb Signal Processing Toolbox.

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93