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