DAI FILTRI ANALOGICI AI FILTRI NUMERICI
RICHIAMI SUI FILTRI CONTINUI(1) Descrizione in termini di variabili di stato Descrizione in termini di Funzione di Trasferimento In Matlab esistono tre modi equivalenti per rappresentare un modello lineare tempo-invariante, sia continuo che discreto: Variabili di stato Funzione di Trasferimento Zero-Polo-Guadagno
RICHIAMI SUI FILTRI CONTINUI(2) Variabili di stato >>A=[1,-2;2,-1] >>B=[2;3] >>C=[1,2] >>D=0 >>ss(A,B,C,D,-1) a = x1 x2 x x b = u1 x1 2 x2 3 c = x1 x2 y1 1 2 d = u1 y1 0 Sampling time: unspecified Discrete-time model. SYS = SS(A,B,C,D,Ts) Crea un modello in variabili di stato SYS dove: A Matrice della dinamica B Vettore degli ingressi C Vettore degli stati sull’uscita D Vettore degli ingressi sull’uscita Ts Tempo di campionamento Se non è specificato il tempo di campionamento il modello risultante sarà a tempo continuo NOTA: Impostare Ts=-1 se il tempo di campionamento è indeterminato.
>>NUM=[8,-2] >>DEN=[1,0,3] >>Ts=-1 >>sys=tf(NUM,DEN,Ts) Transfer function: 8 z z^2 + 3 Sampling time: unspecified >>z = tf('z'‚Ts) >>sys=(8*z-2)/(z^2+3) Transfer function: 8 z z^2 + 3 Sampling time: unspecified SYS = TF(Num,Den,Ts) Crea una funzione di trasferimento SYS dove: Num Numeratore della FdT Den Denominatore della FdT Ts Tempo di campionamento Se non è specificato il tempo di campionamento la FdT risultante sarà a tempo continuo. Un metodo alternativo è associare la variabile z all’oggetto tf e in seguito esprimere la FdT come espressione razionale. NOTA: Impostare Ts=-1 se il tempo di campionamento è indeterminato. RICHIAMI SUI FILTRI CONTINUI(3) Funzione di Trasferimento
>>Z=[1/4] >>P=[i*sqrt(3),-i*sqrt(3)] >>G=[8] >>Ts=-1 >>sys=zpk(Z,P,G,Ts) Zero/pole/gain: 8 (s-0.25) (s^2 + 3) Sampling time: unspecified >>z = zpk('z') >>(8*z-2)/(z^2+3) Zero/pole/gain: 8 (z-0.25) (z^2 + 3) Sampling time: unspecified SYS = ZPK(Z,P,G) Crea un modello zero-polo-guadagno SYS dove: Z Vettore degli zeri Den Vettore dei poli G Guadagno Ts Tempo di campionamento Se non è specificato il tempo di campionamento il modello risultante sarà a tempo continuo. Un metodo alternativo è associare la variabile z all’oggetto zpk e in seguito esprimere la FdT come espressione razionale. NOTA: Impostare Ts=-1 se il tempo di campionamento è indeterminato. RICHIAMI SUI FILTRI CONTINUI(4) Zero-Polo-Guadagno
RICHIAMI SUI FILTRI CONTINUI(5) TRASFORMAZIONE DI VARIABILI Vediamo un esempio molto significativo di come, applicando una trasformazione per similitudine a un generico sistema, la sua rappresentazione esterna resta identica. Prendiamo come esempio numerico il caso di una matrice diagonalizzabile (quindi con autovalori tutti con m.a. = m.g.)
Esempio >>A=[1,2;3,4] >>B=[1;1] >>C=[1,1] >>D=0 >>sys1=ss(A,B,C,D) >>[T,Adiag] = eig(A) >>sys2=ss(Adiag,(T^-1)*B,C*T,0) T = Adiag = >>tf(sys1) Transfer function: 2 s s^2 - 5 s – 2 >>tf(sys2) Transfer function: 2 s e s^2 - 5 s – 2 Definiamo il nostro sistema (sys1) in forma di variabili di stato Calcoliamo la matrice di trasformazione T e la matrice diagonalizzata Adiag Creiamo una nuova realizzazione interna (sys2) del filtro considerato Calcoliamo la FdT dei due sistemi A meno del termine noto al numeratore, errore introdotto dall’algoritmo iterativo utilizzato dal Matlab per il calcolo degli zeri, i due filtri sys1 e sys2 hanno la stessa rappresentazione esterna. NOTA:La trasformazione per similitudine applicata da Matlab segue la legge di sostituzione: x = Tx, diversa da quella applicata nella dispensa
Dal filtro continuo al filtro discreto(1) Il passaggio da filtro continuo a filtro discreto viene fatto partendo dal principio che questo debba comportarsi come illustrato in figura: Ossia i campioni ricevuti in ingresso vengono convertiti in un segnale continuo da un convertitore D/A (ad es. Sample&Hold), passati in ingresso al filtro continuo e il segnale prodotto in uscita dal filtro viene riconvertito in digitale da un convertitore A/D.
Dal filtro continuo al filtro discreto(2) >> s=tf('s') Transfer function: s >> sys=1/(s+1) Transfer function: s + 1 >> Ts=0.2 Ts = 0.2 >> sysd=c2d(sys,Ts) Transfer function: z Sampling time: 0.2 SYSd = C2D(SYSa,Ts,Method) Converte un modello tempo continuo in tempo discreto (SYSd): SYSa Modello tempo continuo Ts Tempo di campionamento Method Metodo di discretizzazione Il parametro Method può assumere i seguenti valori: ‘zoh’: Zero-order hold in ingresso(default) ‘foh’: First-order hold in ingresso 'tustin‘:Approssimazione bilineare di Tustin 'prewarp‘: Approssimazione Tustin con prewarping 'matched‘: Metodo Matched zero-pole
Trasformazione di Tustin(1) La trasformazione di Tustin viene costruita cercando una corrispondenza fra la variabile s e la variabile z. Sapendo che: TkT+T f(T+kT)- f(kT) Dato che si conoscono solo i campioni agli istanti kT e kT+T, interpoliamoli linearmente e valutiamo l’area sottesa alla nostra curva approssimata: e t
Trasformazione di Tustin(2) Calcolando la trasformata di Laplace della prima e la Z-trasformata della seconda e eguagliandole otteniamo: Questa è una trasformazione bilineare (a due passi) ed ha le seguenti proprietà: Trasforma luoghi circolari in luoghi circolari; Fa corrispondere al semipiano a parte reale negativa in s l’interno del cerchio unitario nel piano della variabile z; Quindi trasforma filtri continui stabili in filtri discreti stabili. Questa è una trasformazione bilineare (a due passi) ed ha le seguenti proprietà: Trasforma luoghi circolari in luoghi circolari; Fa corrispondere al semipiano a parte reale negativa in s l’interno del cerchio unitario nel piano della variabile z; Quindi trasforma filtri continui stabili in filtri discreti stabili.
Esempio >> s=tf('s') Transfer function: s >> FdT=1/((s+1)*(s^2+s+2)) Transfer function: s s^3 + 2 s^2 + 3 s + 2 >> pzmap(FdT) >> FdTd=c2d(FdT,0.2,'tustin') Transfer function: z^ z^ z z^ z^ z Sampling time: 0.2 >> pzmap(FdTd)
Confronto dei metodi Analizziamo come varia la localizzazione dei poli e degli zeri nel diagramma polare al variare del metodo utilizzando la FdT dell’esempio precedente: >> FdTdzoh=c2d(FdT,0.2,'zoh'); Transfer function: z^ z z^ z^ z Sampling time: 0.2 >> FdTdfoh=c2d(FdT,0.2,'foh') Transfer function: z^ z^ z z^ z^ z Sampling time: 0.2 >> FdTdmatch=c2d(FdT,0.2,'matched') Transfer function: z^ z z^ z^ z Sampling time: 0.2 >>pzmap(FdTdzoh,'r',FdTdfoh,'y',FdTdmatch,'g')
Confronto dei metodi(2) In questo lucido mostriamo gli output prodotti dalla funzione pzMap:
Condizione di Shannon-Nyquist Valida solo nel caso di segnali a banda limitata Tempo di campionamento Condizione per trasformazioni bilineari Valida anche per segnali a banda illimitata
Esempio Dato il sistema: Calcoliamo il tempo di campionamento necessario per un intervallo di frequenze di interesse [0;B], dove B è la banda passante di G(s) con:
Tecnica matched Z-transform Questa tecnica si basa su alcune corrispondenze fra generici termini al denominatore della trasformata di Laplace e le rispettive trasformazioni in Z, derivabili dalla corrispondenza esatta z=e sT : Per il numeratore non è possibile dedurre delle altrettante corrispondenze esatte; quindi si adottano le stesse corrispondenze ricavate per il denominatore, anche se producono risultati approssimati.
Esempio 1.1 Per il calcolo del numeratore possiamo imporre G d (1)=G(0) e G d (-1)=G(∞); otteniamo il sistema: Applichiamo il metodo alla FdT: Per il calcolo del denominatore applichiamo le regole esatte appena viste: Otteniamo…
Esempio 1.2 >> s=tf('s') Transfer function: s >> FdT=(7*s+1)/(5*s+1) Transfer function: 7 s s + 1 >> FdTd=c2d(FdT,1/5,‘matched') Transfer function: z z Sampling time: 0.2 Applicando l’algoritmo in Matlab: