Trasformata di Fourier a tempo breve e spettrogramma
In questa pagina 5
La DFT (Trasformata di Fourier discreta (DFT) e convoluzione circolareLa DFT di N campioni x[0..N-1] è X[k] = sum x[n] e^{-j2pi kn/N}, k = 0..N-1 (IDFT: x[n] = (1/N) sum X[k] e^{j2pi kn/N}); vede il segnale come periodico di periodo N e dà N campioni equispaziati della DTFT, cioè X(z) valutata sulle radici N-esime dell'unità. Se x ha durata M <= N non c'è aliasing temporale e lo zero-padding (N > M) infittisce solo i campioni della stessa DTFT. Proprietà: traslazione circolare, simmetria coniugata X[k] = X*[N-k], prodotto = convoluzione circolare. La convoluzione circolare coincide con la lineare solo se N >= Dx + M - 1; altrimenti la coda si ripiega sull'inizio. La FFT calcola la DFT con (N/2) log2 N moltiplicazioni invece di N^2.Trasformata di Fourier discreta (DFT) e convoluzione circolare →) dà lo spettro globale di un segnale finito: dice quali frequenze ci sono ma non quando. Un segnale audio, una voce, un fischio che si sposta, hanno un contenuto in frequenza che cambia nel tempo. Calcolare una DFT enorme su tutto il segnale richiederebbe di aspettare tutti i campioni e di fare un calcolo gigantesco, inaccettabile per l'elaborazione in tempo reale. La soluzione è vedere il segnale lungo come la concatenazione di tanti segnali brevi e calcolare molte DFT brevi: la trasformata di Fourier a tempo breve (short-time Fourier transform, STFT, o short-time DFT, STDFT; nelle slide anche time-dependent DFT), la cui rappresentazione grafica è lo spettrogramma (spectrogram).
Definizione
Definizione (STFT, "DFT dipendente dal tempo"). Sia una sequenza lunga e una finestra di analisi (analysis window, per esempio di Hann) diversa da zero solo per , con molto minore della lunghezza di . Per ogni istante di analisi si definisce
Contiene due passi:
- Finestratura: preleva dal segnale il tratto lungo che comincia in (frame, segmento) e lo pesa. Cambiando si sposta la finestra sul segnale.
- DFT breve: la DFT a punti di quel frame ( con zero-padding se si vuole una griglia di frequenze più fitta, Analisi spettrale con la DFT - finestre e leakageAnalizzare lo spettro di un segnale con la DFT vuol dire osservarne solo L campioni (finestra rettangolare) e campionare in frequenza la DTFT. Una sinusoide non dà una riga ma il nucleo di Dirichlet della finestra centrato in w0: lobo principale largo 4pi/L e lobi laterali (il primo a -13.3 dB). Due toni più vicini della mezza larghezza del lobo non si separano (risoluzione, che dipende solo da L), e i lobi laterali di un tono mascherano i toni deboli (leakage). La DFT campiona la DTFT a 2pi k/N: l'ampiezza è corretta solo se il tono cade su un bin (periodi interi nella finestra), altrimenti si perde fino a 3.9 dB; lo zero-padding infittisce i campioni ma non migliora la risoluzione. Le finestre rastremate (Hann, Hamming, Blackman) abbassano i lobi laterali (-31, -42, -58 dB) a prezzo di un lobo principale più largo.Analisi spettrale con la DFT - finestre e leakage →) dà lo spettro locale.
Il parametro è la frequenza: , cioè . Il parametro è il tempo. L'istante si muove a salti di campioni (hop size), con , con . Se i frame si sovrappongono e ogni campione cade in almeno una finestra; la scelta comune è (sovrapposizione del ). Il numero di frame per un segnale di lunghezza è .
Esempio. Un segnale di campioni, finestra , passo () e : frame; per un segnale reale bastano i bin ( valori) per la simmetria coniugata. Con e : frame. Il numero di valori calcolati è , circa : ogni frame costa una FFT a punti (Trasformata di Fourier discreta (DFT) e convoluzione circolareLa DFT di N campioni x[0..N-1] è X[k] = sum x[n] e^{-j2pi kn/N}, k = 0..N-1 (IDFT: x[n] = (1/N) sum X[k] e^{j2pi kn/N}); vede il segnale come periodico di periodo N e dà N campioni equispaziati della DTFT, cioè X(z) valutata sulle radici N-esime dell'unità. Se x ha durata M <= N non c'è aliasing temporale e lo zero-padding (N > M) infittisce solo i campioni della stessa DTFT. Proprietà: traslazione circolare, simmetria coniugata X[k] = X*[N-k], prodotto = convoluzione circolare. La convoluzione circolare coincide con la lineare solo se N >= Dx + M - 1; altrimenti la coda si ripiega sull'inizio. La FFT calcola la DFT con (N/2) log2 N moltiplicazioni invece di N^2.Trasformata di Fourier discreta (DFT) e convoluzione circolare →).
Lo spettrogramma
è una funzione di due variabili: per ogni istante c'è un diverso spettro locale. Il modo di rappresentarla è lo spettrogramma: un'immagine in cui l'asse orizzontale è il tempo (), l'asse verticale è la frequenza ( in rad/campione, , oppure Hz) e il livello di grigio (o di colore) è proporzionale a oppure a (scala in dB, che mostra anche le componenti deboli) o a (densità di potenza). Un'orizzontale chiara indica un tono stabile; una linea inclinata una frequenza che cresce o decresce; un trattino verticale un impulso (che ha spettro piatto).
Esempio (come nel laboratorio 2). scipy.signal.spectrogram con finestra di Hamming di campioni, nfft=256 e noverlap=128: , risoluzione in frequenza e per un segnale di campioni si hanno frame e bin; l'asse delle frequenze si normalizza dividendo per per leggere . I toni si vedono come righe orizzontali, da cui si ricavano le per i filtri notch (Filtri notch e applicazioni dei filtri FIRUno zero di H(z) sulla circonferenza unitaria in z0 = e^{j w0} annulla (a regime) le sinusoidi alla pulsazione w0. Per eliminare un coseno servono i due zeri coniugati: H(z) = (1 - e^{jw0} z^-1)(1 - e^{-jw0} z^-1) = 1 - 2 cos(w0) z^-1 + z^-2, cioè h = {1, -2cos w0, 1}, un FIR simmetrico di tipo I (ritardo 1). Si normalizza dividendo per 2 - 2cos(w0) per avere guadagno 1 in continua; più toni si eliminano mettendo in cascata (convoluzione) un filtro per ogni tono. Segue una panoramica delle applicazioni dei FIR (equalizzazione audio), vantaggi (fase lineare, stabilità) e costo (N moltiplicazioni per campione, molte più di un IIR).Filtri notch e applicazioni dei filtri FIR →).
Il compromesso tra tempo e frequenza
La scelta più importante è la lunghezza della finestra, perché agisce in due modi opposti.
Risoluzione in frequenza (frequency resolution). Ogni riga spettrale compare nello spettrogramma come il lobo principale della trasformata della finestra, la cui larghezza è inversamente proporzionale a : , con costante che dipende dalla finestra (lobo principale rettangolare, per Hann e Hamming, Blackman). Due frequenze che distano meno di circa la mezza larghezza del lobo si fondono. Per separare righe vicine serve una finestra lunga: serve tempo per vedere che le due sinusoidi hanno periodi diversi. Una finestra più corta di un periodo del segnale non dà alcuna informazione sulla periodicità.
Risoluzione nel tempo (time resolution). Il frame vede un tratto lungo : un cambiamento improvviso del segnale (per esempio una frequenza che parte di colpo) comparirà sfocato su un intervallo di durata confrontabile con . Per localizzare con precisione i cambiamenti serve una finestra corta.
Compromesso (time-frequency trade-off). La finestra deve essere corta per seguire i cambiamenti nel tempo e lunga per risolvere frequenze vicine: i due requisiti sono opposti e non si possono soddisfare insieme. Per un segnale sconosciuto si calcolano spettrogrammi con lunghezze diverse: ciò che è evidente in uno può essere nascosto in un altro.
Esempio: due toni vicini e una transizione
Il segnale di prova delle slide (lunghezza ) è Si calcola la STFT con finestra di Hann, , in tre istanti (finestra centrata nell'istante indicato; valori calcolati con Python).
| istante | contenuto vero | ||
|---|---|---|---|
| toni a e | due picchi: () e () | un solo picco a () | |
| un tono a | un picco a | un picco a (largo) | |
| toni a e | due picchi , | due picchi , (larghi) |
I toni a e distano . Con la mezza larghezza del lobo di Hann è , quindi li risolve; con vale , quindi li fonde. Quelli a e distano e si separano anche con .
Il costo nel tempo. Nell'istante il tono a compare di colpo. Misurando l'ampiezza della riga a nei frame, la salita dal al del massimo avviene in campioni per e in per : la finestra lunga sfoca la transizione di circa campioni, quella corta la localizza bene. Un modello: per una finestra di Hann centrata in , con limitato in , la riga ha ampiezza relativa (è l'area della finestra che cade dopo l'istante ); in vale (con Python ).
Grafico interattivo: Ampiezza relativa della riga a 0,6π nei frame centrati in t, finestra di Hann: la transizione che avviene in n = 7000 è sfocata su circa 0,5 L campioni (L = 301 contro L = 75)
Questa relazione è un esempio del principio generale: finestra lunga risoluzione in frequenza e sfocatura temporale ; il prodotto delle due incertezze resta costante.
Grafico interattivo: Mezza larghezza del lobo principale della finestra di Hann, 4π/L (in unità di π), contro L: sotto la separazione 0,027π dei due toni (linea) servono L > 148 campioni
Come scegliere i parametri
- Finestra : dalla risoluzione voluta, ( per Hann/Hamming) e dalla durata dei fenomeni da seguire ( non più lunga dell'evento).
- Forma di : Hann o Hamming per un buon equilibrio; rettangolare solo se serve il lobo più stretto e il leakage non conta (Analisi spettrale con la DFT - finestre e leakageAnalizzare lo spettro di un segnale con la DFT vuol dire osservarne solo L campioni (finestra rettangolare) e campionare in frequenza la DTFT. Una sinusoide non dà una riga ma il nucleo di Dirichlet della finestra centrato in w0: lobo principale largo 4pi/L e lobi laterali (il primo a -13.3 dB). Due toni più vicini della mezza larghezza del lobo non si separano (risoluzione, che dipende solo da L), e i lobi laterali di un tono mascherano i toni deboli (leakage). La DFT campiona la DTFT a 2pi k/N: l'ampiezza è corretta solo se il tono cade su un bin (periodi interi nella finestra), altrimenti si perde fino a 3.9 dB; lo zero-padding infittisce i campioni ma non migliora la risoluzione. Le finestre rastremate (Hann, Hamming, Blackman) abbassano i lobi laterali (-31, -42, -58 dB) a prezzo di un lobo principale più largo.Analisi spettrale con la DFT - finestre e leakage →).
- Passo : come predefinito; per un'immagine più liscia (costa più frame).
- : potenza di due, ; zero-padding per tracciare meglio i picchi (non cambia la risoluzione).
Il codice Python è in Esercizio - Spettrogramma e finestra di analisi.
Domande d'esame
- Definire la STFT e lo spettrogramma. Perché si usano tante DFT brevi invece di una sola lunga? Traccia: , finestra, passo (tipicamente ), frame; segnale non stazionario; calcolo di una DFT enorme e impossibilità del tempo reale; rappresentazione in dB come immagine tempo-frequenza; numero di frame.
- Spiegare il compromesso tra risoluzione in tempo e in frequenza nello spettrogramma. Traccia: (lobo della finestra); due toni più vicini della mezza larghezza si fondono; finestra corta per transizioni brevi (sfocatura ); esempio con e ( risolve, no); strategia di più lunghezze.
- Come si sceglie la lunghezza della finestra per risolvere due toni a distanza ? Traccia: mezza larghezza del lobo principale : per Hann (con si ricava ).
Versione ripasso
- STFT. , con , e (di solito ). Frequenza . Numero di frame per un segnale di lunghezza : .
- Due passi. Finestratura del frame , poi DFT breve a punti dello spettro locale.
- Esempio di conteggio. , , , : frame, bin utili per un segnale reale. Con , : frame.
- Spettrogramma. Immagine con tempo in ascissa, frequenza in ordinata, livello proporzionale a , a (dB, mostra le componenti deboli) o a . Riga orizzontale = tono stabile; riga inclinata = frequenza variabile; trattino verticale = impulso.
- Esempio di laboratorio.
spectrogramcon Hamming di campioni,nfft=256,noverlap=128: , frame, bin su campioni. - Compromesso. Lobo principale della finestra circa ( rettangolare, Hann e Hamming, Blackman): finestra lunga = buona risoluzione in frequenza, ma sfocatura temporale di circa . Finestra corta = buona localizzazione nel tempo, ma righe vicine fuse. Si provano più lunghezze.
- Esempio del segnale di prova. per ; fino a ; fino a . A : con due picchi a e ; con un solo picco a .
- Transizione. Il tono a compare in : la salita dal al dura circa campioni con e con .
- Tabella dei tre istanti. : un tono a , picco a con entrambe le lunghezze, largo con . : toni a e , due picchi e con entrambe le lunghezze, larghi con .
- Modello della transizione. Per una finestra di Hann centrata in e limitato in , la riga a ha ampiezza relativa ; in vale .
- Soglia per i due toni. Mezza larghezza di Hann sotto la separazione richiede . Toni a e , distanti , si separano già con .
- Principio. Finestra lunga: risoluzione in frequenza proporzionale a , sfocatura temporale proporzionale a ; il prodotto delle due incertezze resta circa costante.
- Scelta dei parametri. con per Hann e Hamming, non più lunga dell'evento; come predefinito; potenza di due.
- Errore tipico. Pensare che lo zero-padding migliori la risoluzione temporale o frequenziale: infittisce soltanto i campioni.