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.
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 )
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.
L’interfaccia grafica FDATool offre tra le altre possibilità:
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)
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
La funzione di trasferimento è
e la sua risposta in frequenza è
Dall’espressione della funzione di trasferimento osserviamo che gli zeri sono le radici M-esime dell’unità.
Se M=3 abbiamo
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.
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
Segue comando Matlab per il grafico in figura:
zplane([1 0 0 0 -1],[1 -1 0 0 0])
Risposta in frequenza del moving average dell’esempio 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.
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.
Costruzione di una risposta in frequenza con più zeri. Filtro comb.
Consideriamo la funzione di trasferimento H(z) rappresentativa di un filtro FIR
Se sostituiamo z con abbiamo
e la risposta in frequenza risulta
Quindi la risposta in frequenza è semplicemente una ripetizione di
, L volte nel range da 0 a 2pi.
Vediamo un esempio con L=4 ed M=3.
Ricalcoliamo poli e zeri, e poi la 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.
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 )
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’)
2. Segnali ed operazioni sui segnali
3. Sistemi e proprietà dei sistemi
4. Approfondimento su convoluzione e correlazione
5. Sistemi lineari tempo invarianti e equazioni alle differenze
7. Rappresentazione in serie di Fourier di segnali periodici a tempo discreto
9. Trasformata di Fourier a tempo discreto
10. DFT e convoluzione circolare
11. Applicazione della dft leakage spettrale
12. Dualità e trasformata coseno
13. Trasformata di F. dipendente dal tempo - time dependent Fourie transform TDFT
14. Trasformata z
17. Campionamento - parte prima
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.