Teorema del campionamento, quantizzazione e codifica
FCI · Segnali
Campionare e ricostruire
Il teorema del campionamento dice quando un segnale continuo x(t) si ricostruisce senza errori dai suoi campioni. Il campionatore preleva un campione ogni Ts, il passo di campionamento. La frequenza di campionamento è Fs=1/Ts e la sequenza dei campioni, che si scrive xn o x[n], è
xn=x(nTs),n∈Z
L'ipotesi è che x(t) sia a banda limitata: X(f)=0 per ∣f∣>fm, con fm finita, e la banda ha larghezza W=2fm. Per saperlo si calcola la trasformata di Fourier. L'impulso matematico non soddisfa l'ipotesi, perché la sua trasformata è costante.
Per tornare a x(t) la sequenza passa in un formatore di impulsi e poi in un filtro passa basso:
x(t)TscampionatorexnFormatore di impulsix~(t)Passa bassoy(t)
Il campionatore dà la sequenza xn. Formatore e passa basso la riportano a un segnale continuo, uguale a x(t) se vale la condizione di Nyquist.
Il formatore mette in ogni nTs un impulso matematico di area xn. Poiché x(nTs)δ(t−nTs)=x(t)δ(t−nTs):
x~(t)=n∑xnδ(t−nTs)=x(t)ΓTs(t)
Repliche dello spettro
Il prodotto nel tempo diventa una convoluzione in frequenza. Il treno di impulsi si trasforma in un treno, FT{ΓTs(t)}=FsΓFs(f), e convolvere con un impulso trasla:
Lo spettro di x~(t) è quindi una replica di X(f) in ogni multiplo di Fs, scalata di Fs.
La condizione di Nyquist
La replica centrale occupa [−fm,fm] e la prima a destra comincia in Fs−fm. Le repliche sono separate se Fs−fm≥fm:
Fs≥2fm
È la condizione di Nyquist, e 2fm è la frequenza di Nyquist. Allora un passa basso largo Fs tiene solo la replica centrale. La sua altezza 1/Fs compensa il fattore Fs delle repliche:
H(f)=Fs1rect(Fsf),Y(f)=X~(f)H(f)=X(f)
Quindi y(t)=x(t): è il primo enunciato del teorema. Se invece Fs<2fm le repliche si sovrappongono. È l'aliasing: lo spettro si distorce e nessun passa basso recupera X(f).
Spesso Fs è fissata dal sistema, e la condizione si legge al contrario: il sistema ricostruisce i segnali con fm≤Fs/2. Se la banda di x(t) è più larga, le repliche si sovrappongono.
Repliche e filtro, con X(f)=tri(f)
f/fm
X~(f)/Fs
X(f)
FsH(f)
Le repliche di X(f) stanno nei multipli di Fs. Con Fs≥2fm restano separate e il passa basso tiene la centrale. Sotto, si sommano e X(f) si perde.
Ricostruzione nel tempo
Dalla forma H(f)=Tsrect(Tsf) si ricava la risposta impulsiva h(t)=sinc(t/Ts). Il segnale in uscita è y(t)=x~(t)∗h(t), e ogni impulso trasla la sinc nel suo campione:
y(t)=n∑xnsinc(Tst−nTs)
È il secondo enunciato del teorema: in ogni nTs si mette una sinc alta xn e si somma. Ogni sinc si annulla negli altri istanti di campionamento, perché sinc(m)=0 per m intero non nullo. Quindi in mTs la somma vale xm, e fra i campioni interpola. Il primo enunciato dà la condizione sulla frequenza di campionamento, il secondo la formula che ricostruisce il segnale nel tempo.
Somma di sinc, con x(t)=sinc2(t)
t
x(t)
campioni xn
somma delle sinc y(t)
La somma delle sinc, una per campione, coincide con x(t) finché Ts≤1/2, cioè Fs≥2fm. Oltre, la ricostruzione si discosta: è l'aliasing.
Quantizzazione
Il campionamento discretizza il tempo, ma le ampiezze restano continue. Un elaboratore numerico lavora su sequenze di valori discreti, quindi per salvare, elaborare o trasmettere il segnale si discretizzano anche le ampiezze, in due passi: la quantizzazione e la codifica.
La dinamica è l'intervallo [−D,D] delle ampiezze ammesse, e si suppone ∣xn∣<D. Si divide in M intervalli di larghezza
Δ=M2D
A ogni intervallo si associa un livello di restituzione x^i, con i=0,…,M−1, per esempio il suo centro. Ogni campione prende il livello del suo intervallo, quindi xq[n]∈{x^0,…,x^M−1}, e si commette l'errore
eq[n]=x[n]−xq[n]
Dentro la dinamica, con i livelli al centro, ∣eq[n]∣≤Δ/2. Aumentando M l'errore cala.
Fuori dalla dinamica il campione cade nel primo o nell'ultimo intervallo: è la saturazione, e l'errore non ha limite.
La dinamica può essere fissata dal dispositivo, valida per i segnali che deve trattare, oppure adattata al segnale. Adattarla evita la saturazione, ma è inefficiente se pochi valori anomali la allargano per tutti i campioni.
L'operazione non è invertibile: campioni diversi nello stesso intervallo danno lo stesso livello.
Quantizzatore con K bit
−DD2DΔx[n]xq[n]
senza quantizzare
xq[n]
Con K bit i livelli sono 2K. Ogni bit in più dimezza Δ e l'errore dentro [−D,D]. Fuori dalla dinamica il livello satura e l'errore cresce.
Codifica
Il codificatore assegna a ogni livello una sequenza di K bit. Con K bit le sequenze sono 2K, e servono almeno M sequenze:
M≤2K⟺K≥log2M
Conviene M=2K, che non lascia sequenze inutilizzate. Con M=8 e K=3 la tabella associa x^0→000, x^1→001, fino a x^7→111. Per decodificare si divide la sequenza in blocchi di K bit e ogni blocco dà il suo livello, per esempio 010→x^2 e 110→x^6. La tabella rende la codifica invertibile.
Con tutta la catena, il segnale ricostruito x^(t) non coincide con x(t) anche se Fs≥2fm, perché la quantizzazione ha perso quale fosse il campione dentro il suo intervallo. Aumentando M si avvicina a x(t).
x(t)TscampionatorexnQuantizzatorexq[n]CodificatorebitDecodificatorexq[n]Formatore di impulsix^q(t)Passa bassox^(t)
I bit si salvano, si elaborano o si trasmettono. La decodifica li riporta ai livelli senza errore, ma x^(t)=x(t) per la quantizzazione.
Frequenza di bit
Ogni campione dà K bit, quindi la frequenza di bit è
Fb=KFs
Aumentare M riduce l'errore ma aumenta K, e quindi Fb: la precisione si paga in bit da trasmettere o memorizzare.
Esercizi
Dalla condizione di Nyquist si ricava Fs o Ts. Da M=2K si ricava K, poi Fb=KFs, e moltiplicando Fb per la durata si ottengono i bit totali.
Passo massimo. Un segnale con fm=20kHz si ricostruisce se Fs≥40kHz, quindi:
Ts≤40kHz1=25μs
Frequenza di bit. Con Fs=40kHz e K=16 bit:
Fb=16⋅40kHz=640kbit/s
Dimensione di un segnale. Tre minuti, cioè 180 s, a 44,1 kHz con M=512 intervalli: