uso della correlazione per la misura della funzione di risposta
Transcript
uso della correlazione per la misura della funzione di risposta
NOTA INTERNA USO DELLA CORRELAZIONE PER LA MISURA DELLA FUNZIONE DI RISPOSTA IMPULSIONALE DI UN SISTEMA LINEARE DAVIDE BASSI (revisione 1.0c - Novembre 1999) Questa nota descrive sinteticamente i metodi per la misura della funzione di risposta impulsionale dei sistemi lineari, con particolare riferimento all'uso della correlazione, abbinata a funzioni di test a spettro bianco. Per ciascun argomento vengono presentati esempi sviluppati in ambiente LabVIEW (® National Instruments). I file originali relativi a tali esempi sono contenuti nella library "correlatore_xxx.llb", dove xxx indica il livello di revisione, scaricabile dalla sezione "didattica" della URL: http://alpha.science.unitn.it/~bassi/index.html Indice 1 Definizione e proprietà della “funzione di risposta impulsionale” ____ 2 1.1 2 Metodo impulsivo________________________________________ 4 2.1 3 1 Esempio LabVIEW_______________________________________________ 3 Esempio LabVIEW_______________________________________________ 5 Correlazione ___________________________________________ 7 3.1 Segnali a spettro "bianco" ________________________________________ 8 3.2 Sequenze “pseudo-random” _______________________________________ 8 3.3 Esempio LabVIEW______________________________________________ 10 Definizione e proprietà della “funzione di risposta impulsionale” La funzione di risposta impulsionale h(t) di un sistema lineare e stazionario è definita come il segnale generato in uscita quando, in entrata, viene applicato un impulso di test x(t) = δ(t), dove δ(t) è una funzione del tipo “delta di Dirac”. x(t) h(t) y(t) Figura 1: Schema a blocchi di un sistema lineare e stazionario, dotato di una singola entrata ed una singola uscita. Se è nota h(t), la risposta del sistema ad una generica entrata x(t) può essere calcolata tramite l’integrale di convoluzione: y(t)= x(t) ⊗ h(t) = h(t) ⊗ x(t) ≡ t ∫ x(τ)h(t − τ)dτ (1) t − tM Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 2 dove si è supposto che il sistema sia “causale”1 ed abbia un “tempo di memoria” (tM) finito, ovvero h(t) = 0 per t > tM. Applichiamo la trasformata di Fourier2 alla (1). Utilizzando il “teorema di convoluzione”, l’integrale di convoluzione si trasforma in un semplice prodotto di trasformate: Y(ω) = X(ω)H(ω) (2) 1.1 Esempio LabVIEW Nel caso di un segnale numerico, campionato con un intervallo di tempo ∆t, l’integrale di convoluzione (1) è sostituito da una sommatoria e diventa: yK = x K ⊗ h K ≡ K ∑x J =K - M J ⋅ hK − J (3) dove xK ≡ x(k∆t) rappresenta il valore campionato al tempo k∆t ed M = tM/∆t. Supponiamo che l’entrata x(t) sia una funzione periodica con periodo T0 = N∆t. Se M ≤ N è facile verificare che l’uscita è una funzione periodica con lo stesso periodo dell’entrata. Per un segnale che soddisfi questa condizione, il calcolo della convoluzione può essere fatto utilizzando il seguente diagramma LabVIEW: Figura 2: Diagramma di “periodic convolution.vi”. Si suppone che l’entrata x sia periodica. Le operazioni svolte per N = 3 sono descritte in tabella 1. 1 La causa deve precedere l ’effetto ovvero h(t) = 0 per t < 0. Affinché h(t) sia diversa da 0 per tempi negativi, il sistema – quando t è minore di 0 - dovrebbe essere in grado di “prevedere” che nel futuro (t = 0) l’impulso di test sarà applicato all’entrata del sistema. 2 La notazione X(ω) indica la trasformata di Fourier di x(t) Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 3 Entrano gli array x ed h Inverte h Sposta h di una posizione Moltiplica membro a membro e somma, ottenendo y0 Sposta h di una posizione Moltiplica membro a membro e somma, ottenendo y1 Sposta h di una posizione Moltiplica membro a membro e somma, ottenendo y2 x0 x1 x2 x0 x1 x2 x0 x1 x2 h0 h1 h2 h2 h1 h0 h0 h2 h1 y0 = h0x0 + h2x1 + h1x2 x0 x1 x2 h1 h0 h2 y1 = h1x0 + h0x1 + h2x2 x0 x1 x2 h2 h1 h0 y2 = h2x0 + h1x1 + h0x2 Tabella 1: Dettaglio delle operazioni svolte da “periodic convolution.vi” per N = 3. 2 Metodo impulsivo Esistono diversi metodi per misurare la funzione h(t). Il più "semplice" consiste nell'inviare in entrata del sistema un impulso di forma rettangolare del tipo: x(t) = A, per 0 ≤ t < ∆T, con A costante (4) = 0, per ogni altro t. La scelta dei parametri A e ∆T dipende dalle specifiche condizioni operative. In generale, per migliorare il rapporto segnale/rumore (S/N ratio) della misura converrà massimizzare l'energia associata al segnale d'entrata, la quale è proporzionale a A2∆T. Bisognerà quindi scegliere il valore più alto possibile di A, compatibilmente con i vincoli posti dalla condizione di linearità (in molti sistemi reali la risposta è effettivamente lineare solo per piccole ampiezze dei segnali d'ingresso). Un aumento del tempo ∆T produrrà un aumento dell’energia associata al segnale d’entrata, ma causerà – contemporaneamente – un peggioramento del potere risolutivo. Infatti, quando ∆T diventa troppo grande, non è più possibile risolvere i dettagli dell'andamento temporale di h(t). Per evidenziare questo fenomeno, consideriamo la trasformata di Fourier della (4) che vale: X(ω) = A ∆T exp(-jΩ) sin(Ω)/Ω dove j = (5) − 1 , Ω = π ω/ω 0 ed ω 0 = 2π/∆T. Si noti che per ω « ω 0, X(ω) varia molto lentamente ed è circa uguale ad A∆T, mentre si annulla quando ω è un multiplo intero di ω 0. Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 4 Se la funzione H(ω) è limitata in banda, con larghezza ω B = 2πfB (ovvero H(ω) ≈ 0 per ω > ω B) e se è soddisfatta la relazione ω B « ω 0, la X(ω) potrà essere considerata come praticamente costante in tutto l'intervallo di pulsazioni in cui la H(ω) è diversa da 0. In altre parole se ∆T « 1/fB, la (5) diventa: Y(ω) ≈ A∆T H(ω) ⇒ y(t) ≈ A∆T h(t) (6) Per misurare con accuratezza la funzione di risposta impulsionale di un sistema, la durata dell'impulso di test applicato in ingresso deve essere molto minore rispetto all'inverso della frequenza massima fB contenuta nello spettro di h(t). Quando ∆T è molto piccolo, può succedere che il S/N della misura diventi troppo sfavorevole e che sia quindi necessario ricorrere ad una acquisizione multipla, mediando i risultati delle singole acquisizioni. In questo caso, si invierà in entrata del sistema sotto esame (detto anche DUT3) una sequenza d’impulsi, ciascuno di durata pari a ∆T, spaziati tra loro di un tempo T0 maggiore di tM (in caso contrario la risposta generata da un impulso andrebbe a sovrapporsi con quella generata dall'impulso successivo). Il "duty-cycle" ∆T/T0 ovvero il rapporto tra il tempo in cui si invia in entrata un segnale non nullo ed il tempo tra due impulsi successivi assume tipicamente valori inferiori a 10-2. 2.1 Esempio LabVIEW Tramite il programma “pulse measurement.vi” è possibile verificare, contemporaneamente, nello spazio dei tempi ed in quello delle frequenze, l’effetto della variazione della durata dell’impulso di test in una misura di tipo impulsivo. Al crescere della durata dell’impulso, si osserva sia una crescente deformazione dell’uscita y(t) rispetto ad h(t), sia uno spostamento verso sinistra degli zeri della trasformata di X(ω). Il primo zero si trova ad una frequenza pari all’inverso della durata del periodo. In figura 4 si osserva una situazione in cui, a causa della durata eccessiva dell’impulso di test, si verifica una perdita quasi totale di informazioni. 3 DUT = "Device Under Test" Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 5 Figura 3: Diagramma di “pulse measurement.vi”. Mostra l’andamento di h(t) ed y(t) in funzione del tempo (espresso in ms) ed il modulo (normalizzato rispetto al massimo) di X(ω) ed H(ω). in funzione della frequenza. La forma di h(t) può essere modificata cambiando l’espressione inserita nel “formula node”. Figura 4: Pannello frontale di “pulse measurement.vi”, calcolato per una durata dell’impulso x(t) pari a 50 ms. Nel pannello a sinistra è mostrato il modulo, espresso in unità arbitrarie, della trasformata X(ω) (linea continua) e H(ω) (linea tratteggiata). Si noti che sull’asse delle ascisse è riportata la frequenza (f = ω/2π). Nel pannello di destra è mostrato l’andamento in funzione del tempo di h(t) (linea tratteggiata) e dell’uscita y(t) (linea continua). Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 6 3 Correlazione Un approccio più efficiente per la misura della funzione di risposta impulsionale di un sistema lineare è basato sull'uso di funzioni di test a spettro bianco. Una funzione x(t), che supponiamo periodica con periodo T0, si dice a spettro bianco se la sua funzione di autocorrelazione4 soddisfa la relazione: 1 cxx(t) ≡ T0 T0 /2 ∫ x (τ)x(τ + t)dτ ∗ = Aδ(t) (7) - T0 / 2 dove A è una costante. Lo "spettro di potenza" Cxx(ω) di x(t)5 si ottiene trasformando secondo Fourier la cxx(t). Nel caso di un segnale a spettro bianco è facile verificare che Cxx(ω) = A. Ricordiamo inoltre che, sulla base del teorema di Wiener-Khintchine, si può scrivere: X* (ω)X(ω) X(ω) Cxx(ω)= = T0 T0 2 (8) Supponiamo ora di inviare un segnale x(t) periodico con periodo T0 all'entrata di un blocco lineare avente funzione di trasferimento h(t). L'uscita y(t) viene poi mandata, assieme ad x(t), alle entrate di un crosscorrelatore, ovvero di uno strumento che misura la funzione: 1 cxy(t) ≡ T0 T0 /2 ∫ x (τ)y(τ + t)dτ ∗ (9) - T0 / 2 x(t) h(t) y(t) crosscorrelatore cxy(t) Figura 5: Schema a blocchi per la misura della funzione di risposta impulsionale di un sistema lineare tramite il metodo della correlazione. 4 5 Nella definizione della funzione di autocorrelazione si è tenuto conto che la funzione è periodica. Indicato anche con l'acronimo PSD, da "Power Spectral Density". Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 7 Nello scrivere la relazione precedente abbiamo esplicitamente assunto che l'uscita y(t) abbia lo stesso periodo dell'entrata x(t).6 Lo schema del sistema di misura è mostrato in figura 5. Utilizzando il teorema di Wiener-Khintchine, otteniamo: X(ω) Y (ω) X(ω) X(ω) ⋅ H(ω) Cxy(ω) = = = Cxx(ω)H(ω) T0 T0 * * (10) dove è stato usato il teorema di convoluzione (2). La (10) ci dice che la trasformata di Fourier della funzione di cross-correlazione tra entrata ed uscita (detto anche "spettro di potenza incrociato") è uguale al prodotto dello spettro di potenza dell'entrata, moltiplicato per la trasformata di Fourier della funzione di risposta impulsionale. Se il segnale d'entrata è a spettro bianco, ovvero se Cxx(ω) = A, allora Cxy(ω) = AH(ω), da cui segue h(t) = cxy(t)/A. Questo risultato è molto importante perché ci dice che la funzione di risposta impulsionale può essere misurata correlando i segnali di entrata e d'uscita quando il segnale d'entrata è a spettro bianco. 3.1 Segnali a spettro "bianco" Prima di discutere il metodo per la generazione di segnali a spettro "bianco" conviene ricordare che, ai fini pratici, è sufficiente che Cxx(ω) sia costante per ω ≤ ω B. La condizione è analoga a quella vista precedentemente per la misura con il metodo impulsivo, anche se si applica allo spettro di potenza Cxx(ω) invece che a X(ω). In altre parole, il segnale di test deve avere uno spettro di potenza il più possibile costante nella zona in cui la trasformata di Fourier della funzione di risposta impulsionale è apprezzabilmente diversa da zero. 3.2 Sequenze “pseudo-random” Segnali con tali caratteristiche sono generati naturalmente nei sistemi soggetti a fluttuazioni statistiche di tipo termico. In alternativa, è possibile generare segnali con spettro quasi "bianco", detti segnali 6 Ricordiamo che questo è vero solo se T 0 è maggiore del tempo di risposta massima t M del blocco lineare sotto studio. Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 8 "pseudo-random", costituiti da sequenze di lunghezza pari a J = 2K-1, dove K è un intero positivo.7 Per produrre tali segnali si deve utilizzare uno "shifth-register" costituito da K elementi, dotandolo di un opportuno sistema di retroazione formato da una o più porte XOR. Un esempio per K = 8 (J = 255) è mostrato in figura 6. Il diagramma di figura 6 può essere facilmente adattato per generare sequenze di lunghezza diversa, modificando i collegamenti alla(e) porta(e) XOR a seconda della lunghezza dello shift-register utilizzato. Lo schema da adottare per shift-register costituiti da un numero di elementi K compreso tra 3 e 10 è riportato in tabella 2. Figura 6: Diagramma di “Generatore p.r. 8 bits.vi”. Genera una sequenza pseudorandom di lunghezza J pari a 255 elementi (K = 8). Lo shift-register è realizzato via software collegandolo al lato d'entrata di un circuito di loop. La sequenza in uscita è trasformata da digitale ad analogica con valori pari a +/-1. K 3 4 5 6 7 8 9 10 J 7 15 31 63 127 255 511 1023 Prese per XOR 2, 3 3, 4 3, 5 5, 6 6, 7 4, 5, 6, 8 5, 9 7, 10 Tabella 2: Posizione degli elementi da utilizzare per il feedback tramite XOR di uno shiftregister costituito da K elementi (numerati da 1 a K) che genera una sequenza pseudorandom. L’autocorrelazione di una sequenza pseudo-random è data da: 7 Per maggiori dettagli si veda P. Horowitz and W. Hill, "The Art of Electronics",(Cambridge University Press, Cambridge, 1989), second edition, pp. 655 - 660. Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 9 t 1 1 + per t ≤ ∆t 1 − J cxy(t) = ∆ T − 1/J per ∆T < t < (J − 1)∆T (11) ed è periodica con periodo J∆T, dove ∆T è la base tempi dell'orologio (clock) che comanda gli spostamenti dello shift-register. Notiamo che l'espressione (11) differisce rispetto alla delta di Dirac per due motivi: a) intorno a t = 0 assume la forma di un triangolo con larghezza a metà altezza pari a ∆T, e b) lontano dallo zero non si annulla, ma assume un valore costante negativo. Quest'ultima caratteristica deriva dal fatto che qualsiasi sequenza pseudo-random è costituita da un numero dispari di elementi (lo shift-register assume tutti i valori tra 1 e J, ma non 0 che lo bloccherebbe) e quindi il suo valore medio non può essere zero. La scelta di J è ∆T deve soddisfare le seguenti condizioni: a) ∆T « 1/fB, analogamente a quanto visto nel caso della misura impulsiva e b) J < M, onde evitare la sovrapposizione, all’uscita, degli effetti generati da sequenze successive. Utilizzando una sequenza pseudo-random è possibile misurare con grande efficienza la funzione di risposta impulsionale di un sistema lineare. Infatti il duty-cycle del segnale in entrata è prossimo a 0.5, contro valori inferiori a 10-2 tipici delle misure realizzate con il metodo impulsivo. 3.3 Esempio LabVIEW In figura 7 è mostrato un esempio che simula l’applicazione del metodo della correlazione alla misura di un segnale del tipo a “tempo di volo”, ovvero il segnale che si genera facendo partire da un punto prefissato un certo numero di particelle aventi una certa distribuzione di velocità. Il segnale viene misurato su un rivelatore, posto a distanza nota dal punto di partenza. L’esempio di figura 7 si adatta facilmente a qualsiasi misura della funzione di risposta impulsionale di un sistema lineare causale: è sufficiente cambiare opportunamente la funzione h(t) che è specificata, in forma analitica, all’interno del modulo “Simulatore di blocco lineare”. Con semplici modifiche, è anche possibile utilizzare questo programma per Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 10 verificare il diverso rapporto S/N che si otterrebbe, a parità di numero di cicli di misura e di rumore in entrata, usando – in alternativa alla correlazione - il metodo impulsivo. Figura 7: Diagramma di “Media di spettri TOF.vi” che simula l'acquisizione di un segnale di tempo di volo (TOF)8 in presenza di un livello programmabile di rumore. Si noti che il risultato è corretto per tener conto del fatto che lo spettro della sequenza pseudorandom non è esattamente bianco: la funzione di risposta impulsionale h(t) è calcolata come l'antitrasformata di Fourier del rapporto tra lo spettro di potenza incrociato C xy(ω) e lo spettro di potenza Cxx(ω). Il programma non è ottimizzato rispetto alla velocità di esecuzione. 8 TOF = Time Of Flight. Misura della risposta impulsionale (rev.1.0b, Nov. 1999) 11