Salta al contenuto
Note per Studenti Elaborazione multirate - decimazione e interpolazione

Elaborazione multirate - decimazione e interpolazione

In questa pagina 6

Molte applicazioni (audio, immagini, video, telecomunicazioni) trattano segnali con frequenze di campionamento diverse: un CD ha 44,144{,}1 kHz, un file professionale 4848 kHz, un video può essere a 3030 o 6060 fotogrammi al secondo. L'elaborazione numerica che cambia la frequenza di campionamento (sample rate conversion) si chiama multirate. I casi sono tre:

  • interpolazione (interpolation): la frequenza di uscita è LL volte quella di ingresso, Fs′=LFsF_s'=LF_s con LL intero positivo;
  • decimazione (decimation): la frequenza di uscita è MM volte più piccola, Fs′=Fs/MF_s'=F_s/M, con MM intero positivo;
  • conversione generica: Fs′=LMFsF_s'=\frac LM F_s con L,ML,M interi positivi coprimi (rapporto razionale).

Gli obiettivi sono due: conservare nell'uscita il più possibile l'informazione del segnale di ingresso (cioè ridurre le distorsioni) e farlo con un costo di calcolo basso. Le basi sono il campionamento e la ripetizione degli spettri (Campionamento e ricostruzioneIl campionamento $s_c(nT)=s(nT)$ trasforma un segnale continuo in uno discreto e, in frequenza, ripete lo spettro con periodo $F_c=1/T$: $S_c(f)=\sum_kS(f-kF_c)$. Se le repliche si sovrappongono si ha aliasing e il segnale non è recuperabile. Un interpolatore $\mathbb Z(T)\to\mathbb R$ con risposta impulsiva $g$ produce $\tilde s(t)=\sum_nT g(t-nT)s(nT)$ e $\tilde S=G,S_c$. Teorema del campionamento: se $s$ ha banda $B$ e $F_c\ge2B$, l'interpolatore ideale $G=\operatorname{rect}(f/F_c)$ ricostruisce esattamente $s(t)=\sum s(nT)\operatorname{sinc}(F_c(t-nT))$. Se le ipotesi non valgono c'è un errore, in banda e fuori banda, riducibile con un prefiltro anti-aliasing.Campionamento e ricostruzione →, Interpolazione LTI e teorema del campionamentoIl campionatore R→Z(T) ripete lo spettro con periodo Fc = 1/T (Sc(f) = Σ S(f - kFc), senza fattore 1/T). Il filtro interpolatore Z(T)→R ha y(t) = Σ x(nT) g0(t-nT) con g0 = T g e in frequenza Y = G·X. Se S è nulla fuori da (-B,B) e Fc ≥ 2B, con g0(t) = sinc(Fc t) si ricostruisce esattamente s(t) dai campioni. Altrimenti c'è un errore (in banda per l'aliasing, fuori banda per la parte tagliata), ridotto da un prefiltro anti-aliasing.Interpolazione LTI e teorema del campionamento →) e la DTFT (Trasformata di Fourier a tempo discretoLa trasformata di Fourier di un segnale discreto è $S(f)=\sum_nT,s(nT),e^{-i2\pi fnT}$: una funzione continua e periodica in $f$ di periodo $F_p=1/T$. L'antitrasformata è l'integrale su un periodo, $s(nT)=\int_0^{F_p}S(f)e^{i2\pi fnT}df$. Le regole sono quelle del caso continuo (traslazione, convoluzione $\leftrightarrow$ prodotto, Parseval $\sum T|s|^2=\int_0^{F_p}|S|^2$), con incremento e somma corrente al posto di derivata e integrale. Per segnali reali $S(f)=S^*(-f)$, quindi basta $[0,F_p/2]$. Esempi: $\delta\to1$, $1\to\delta_{F_p}$, rect $\to$ sinc periodico, $a^n\mathbf 1_0\to\frac T{1-ae^{-i2\pi fT}}$.Trasformata di Fourier a tempo discreto →).

Segnali su griglie diverse

Un sistema che cambia la frequenza di campionamento ha l'ingresso x[nT]x[nT] con Fs=1TF_s=\frac1T e l'uscita y[nT′]y[nT'] con Fs′=1T′F_s'=\frac1{T'}. Il sistema non è omogeneo: i domini temporali dell'ingresso e dell'uscita sono diversi, quindi bisogna dire sempre con quale griglia di tempo si lavora. Per esempio il fotogramma 4040 di un video a 3030 fps cade a 4030\frac{40}{30} s, quello di un video a 6060 fps a 4060\frac{40}{60} s.

In questa nota, per semplicità, si lavora con indici interi nn e frequenza normalizzata ω^\hat\omega del segnale a cui ci si riferisce; per passare alle frequenze in Hz basta ricordare che ω^=2πf/F\hat\omega=2\pi f/F, con FF la frequenza di campionamento di quel segnale. I tre numeri che compaiono in un sistema generale sono: la frequenza di ingresso FsF_s, la frequenza di uscita Fs′=LMFsF_s'=\frac LMF_s e la frequenza intermedia Fs′′=LFs=MFs′F_s''=LF_s=MF_s', la più alta del sistema: Fs′′=mcm⁡(Fs,Fs′)F_s''=\operatorname{mcm}(F_s,F_s') in senso stretto (il minimo comune multiplo delle frequenze, cioè T′′=MCD⁡(T,T′)T''=\operatorname{MCD}(T,T') per i periodi).

Esempio. Fs=2F_s=2 e Fs′=3F_s'=3 (unità arbitrarie): Fs′′=6F_s''=6, T′′=16T''=\frac16. Esempio (audio). Da 44,144{,}1 kHz a 4848 kHz: Fs′Fs=4800044100=160147\frac{F_s'}{F_s}=\frac{48000}{44100}=\frac{160}{147} (MCD⁡=300\operatorname{MCD}=300), quindi L=160L=160, M=147M=147 e Fs′′=44100⋅160=7056F_s''=44100\cdot160=7056 kHz.

Struttura della conversione generica

Un sistema di conversione LM\frac LM è la cascata di tre blocchi (l'ordine conta: prima si interpola, poi si decima; l'inverso perderebbe informazione):

  1. un interpolatore per LL (espansore ↑L\uparrow L), da FsF_s a Fs′′=LFsF_s''=LF_s;
  2. un sistema LTI con risposta impulsiva hh (filtro passabasso) che lavora a Fs′′F_s'';
  3. un decimatore per MM (↓M\downarrow M), da Fs′′F_s'' a Fs′=Fs′′/MF_s'=F_s''/M.

Il filtro lavora alla frequenza più alta Fs′′F_s'', quindi sembra costoso: più sotto si vede come si evita.

Equazione ingresso-uscita

Si indica con g[m]g[m] la risposta impulsiva del filtro sulla griglia di Fs′′F_s''. Il segnale dopo l'espansore è v[m]=x[m/L]v[m]=x[m/L] se LL divide mm, 00 altrimenti; dopo il filtro w[m]=∑kv[k]g[m−k]=∑ix[i] g[m−iL]w[m]=\sum_kv[k]g[m-k]=\sum_{i}x[i]\,g[m-iL] e dopo il decimatore y[n]=w[nM]y[n]=w[nM]. Quindi

y[n]=∑i=−∞+∞x[i]  g[nM−iL].y[n]=\sum_{i=-\infty}^{+\infty}x[i]\;g[nM-iL].

(Nelle slide, con i tempi: y[nT′]=T∑kx[kT] h[nT′−kT]y[nT']=T\sum_kx[kT]\,h[nT'-kT], dove hh è definita sui multipli di T′′T'' e il fattore TT viene dalla normalizzazione dell'integrale; nella versione discreta il guadagno LL del filtro assorbe quel fattore.)

Questa non è una convoluzione: i dominii dell'ingresso, dell'uscita e della risposta impulsiva sono diversi, e la somma non è commutativa. Il sistema è lineare ma non tempo-invariante in generale: se si trasla l'ingresso di un campione l'uscita non è semplicemente la traslata. È periodicamente tempo-invariante: traslando l'ingresso di MM campioni (cioè di MT=mcm⁡(T,T′)=LT′MT=\operatorname{mcm}(T,T')=LT' secondi) l'uscita trasla di LL campioni; il periodo di invarianza è mcm⁡(T,T′)\operatorname{mcm}(T,T').

Esempio. Con L=2L=2, M=3M=3: y[n]=∑ix[i] g[3n−2i]y[n]=\sum_ix[i]\,g[3n-2i]. Per n=0n=0 intervengono g[0]g[0] con x[0]x[0], g[−2]g[-2] con x[1]x[1], g[2]g[2] con x[−1]x[-1]; per n=1n=1 è g[3]g[3] con x[0]x[0], g[1]g[1] con x[1]x[1], g[5]g[5] con x[−1]x[-1]...: ogni campione d'uscita usa una fase diversa di gg: la fase nM mod LnM \bmod L cambia con nn e si ripete ogni LL uscite.

Interpolazione

L'espansore (upsampler)

Definizione (espansore per LL). Inserisce L−1L-1 zeri fra due campioni consecutivi dell'ingresso: v[n]={x[n/L],n=0,±L,±2L,…0,altrimenti.v[n]=\begin{cases}x[n/L],&n=0,\pm L,\pm2L,\dots\\0,&\text{altrimenti.}\end{cases} (Nelle slide e nelle dispense i campioni vengono anche moltiplicati per LL; qui il guadagno LL è assegnato al filtro che segue, il risultato non cambia.)

È un sistema lineare e tempo-invariante con ingresso e uscita su griglie diverse, e non perde informazione: i campioni di xx sono tutti dentro vv. Esempio. x={1,2,3}x=\{1,2,3\} e L=3L=3: v={1,0,0,2,0,0,3,0,0}v=\{1,0,0,2,0,0,3,0,0\}.

Teorema (spettro dell'espansore). V(ejω^)=X(ejLω^)V(e^{j\hat\omega})=X(e^{jL\hat\omega}).

Dimostrazione. V(ω^)=∑nv[n]e−jω^n=∑kx[k] e−jω^kLV(\hat\omega)=\sum_nv[n]e^{-j\hat\omega n}=\sum_kx[k]\,e^{-j\hat\omega kL}, perché sono diversi da zero solo i termini n=kLn=kL. Questa è XX calcolata in Lω^L\hat\omega. □\square

X(ejω^)X(e^{j\hat\omega}) ha periodo 2π2\pi in ω^\hat\omega, quindi X(ejLω^)X(e^{jL\hat\omega}) ha periodo 2πL\frac{2\pi}L: lo spettro del segnale d'ingresso si comprime di un fattore LL e si ripete LL volte nell'intervallo (−π,π)(-\pi,\pi). Con l'asse in Hz questo è il fatto che l'uscita ha il periodo Fs′′=LFsF_s''=LF_s e un intervallo fondamentale (−L2Fs,L2Fs)(-\frac L2F_s,\frac L2F_s) che contiene lo spettro originale in (−12Fs,12Fs)(-\frac12F_s,\frac12F_s) più L−1L-1 immagini (images).

Esempio. x[n]=cos⁡(0,4πn)x[n]=\cos(0{,}4\pi n) e L=3L=3: V(ω^)=X(3ω^)V(\hat\omega)=X(3\hat\omega) ha righe in ω^=±0,1333π+2π3m\hat\omega=\pm0{,}1333\pi+\frac{2\pi}3m, cioè in 0,1333π0{,}1333\pi (il segnale originale, compresso), 0,5333π0{,}5333\pi e 0,8π0{,}8\pi (le due immagini).

Il filtro di interpolazione

Per tenere solo l'informazione dell'ingresso si fa seguire l'espansore da un passabasso ideale con taglio πL\frac\pi L (in Hz 12Fs\frac12F_s) e guadagno LL: elimina le L−1L-1 immagini e ricostruisce lo spettro originale, ormai su una scala di frequenze LL volte più ampia.

Grafico interattivo: Interpolazione con L = 3: dopo l'espansione lo spettro (frequenza in unità di Fs, asse fino a L·Fs/2 = 1,5) contiene lo spettro originale e due immagini centrate in ±Fs; il filtro passabasso (tratteggio, taglio Fs/2) le elimina

Il filtro ideale ha h[n]=sinc⁡ ⁣(nL)h[n]=\operatorname{sinc}\!\big(\frac nL\big) (guadagno LL, taglio πL\frac\pi L), che vale 11 in n=0n=0 e si annulla in tutti gli altri multipli di LL. Di conseguenza l'uscita

y[n]=∑k=−∞∞x[k] sinc⁡ ⁣(n−kLL)y[n]=\sum_{k=-\infty}^{\infty}x[k]\,\operatorname{sinc}\!\Big(\frac{n-kL}{L}\Big)

coincide con l'ingresso nei punti n=kLn=kL (y[kL]=x[k]y[kL]=x[k]): è la proprietà di interpolazione corretta (correct interpolation property): i campioni originali non vengono modificati, quelli nuovi vengono dedotti. Il sinc ideale non è realizzabile (non causale e infinito), si approssima con un FIR (Progetto di filtri FIR con il metodo delle finestreUn filtro FIR a fase lineare di tipo I (ordine $N$ pari, $h[n]=h[N-n]$) ha risposta $H(e^{j\hat\omega})=e^{-j\hat\omega N/2}\bar H(\hat\omega)$ con ampiezza $\bar H(\hat\omega)=\sum_{n=0}^{N/2}p_n\cos(n\hat\omega)$. Per approssimare un'ampiezza desiderata $D(\hat\omega)$ (passa-basso: $1$ in banda passante, $0$ in banda oscura, con tolleranze $\delta_p,\delta_s$ e frequenze $\hat\omega_p,\hat\omega_s$) ci sono tre metodi. Finestre: si tronca la serie di Fourier di $D$, cioè $h[n]=h_d[n-N/2],w[n]$ con $h_d[n]=\frac{\hat\omega_0}{\pi}\operatorname{sinc}\frac{\hat\omega_0 n}{\pi}$; la rettangolare è ottima in errore quadratico ma dà il fenomeno di Gibbs (9%, $21$ dB), le finestre rastremate (Hann, Hamming, Blackman, Kaiser) abbassano i lobi laterali allargando la transizione ($\hat\omega_s-\hat\omega_p\simeq\alpha,2\pi/L$). Campionamento in frequenza: $h=\mathrm{IDFT}$ dei campioni di $D$, esatto solo sui campioni. Minimax (Parks-McClellan): errore pesato minimo nel caso peggiore, soluzione equiripple con almeno $r+2$ alternanze, ordine più basso a parità di specifiche.Progetto di filtri FIR con il metodo delle finestre →), per esempio con la finestra di Hamming: la finestra rettangolare darebbe Gibbs e un guadagno in continua sbagliato (vedi Esercizio - Laboratorio 4 - interpolazione e zoom di immagini). Il metodo delle finestre conserva gli zeri di hdh_d nei multipli di LL, quindi mantiene la proprietà di interpolazione corretta.

Esempio. L=3L=3, x[n]=cos⁡(0,4πn)x[n]=\cos(0{,}4\pi n): il passabasso (taglio π/3=0,333π\pi/3=0{,}333\pi) elimina le righe in 0,5333π0{,}5333\pi e 0,8π0{,}8\pi e lascia cos⁡(0,1333πn)\cos(0{,}1333\pi n), che nei multipli di 33 vale cos⁡(0,4πk)=x[k]\cos(0{,}4\pi k)=x[k].

Interpolazione lineare

Quando le risorse di calcolo sono poche si collegano i campioni con segmenti: interpolazione lineare. Il sistema è LTI. Per L=2L=2 si trova la risposta impulsiva applicando un impulso: i campioni intermedi sono la media dei vicini, e si ottiene un triangolo. In generale con picco 11 e lunghezza 2L−12L-1: h[n]={1−∣n∣L,∣n∣<L0,altroveL=2: h={12, 1, 12},L=3: {13,23,1,23,13}.h[n]=\begin{cases}1-\frac{|n|}{L},&|n|<L\\0,&\text{altrove}\end{cases}\qquad L=2:\ h=\big\{\tfrac12,\,1,\,\tfrac12\big\},\quad L=3:\ \big\{\tfrac13,\tfrac23,1,\tfrac23,\tfrac13\big\}. Vale h[kL]=δ[k]h[kL]=\delta[k] (zero nei multipli di LL diversi da zero), quindi anche qui i campioni originali restano. La risposta in frequenza è la somma di una progressione geometrica: H(ejω^)=1L(sin⁡(Lω^/2)sin⁡(ω^/2))2,L=2: H=1+cos⁡ω^,H(0)=L.H(e^{j\hat\omega})=\frac1L\Big(\frac{\sin(L\hat\omega/2)}{\sin(\hat\omega/2)}\Big)^2,\qquad L=2:\ H=1+\cos\hat\omega,\quad H(0)=L . (Il triangolo è la convoluzione di due rettangoli di lunghezza LL, divisa per LL, e il quadrato del nucleo di Dirichlet è la sua trasformata.) Il guadagno in continua è LL, proprio quello richiesto; nelle slide il guadagno è diviso fra espansore e filtro, che quindi vale 11 in continua: 1L2(sin⁡(Lω^/2)sin⁡(ω^/2))2\frac1{L^2}\big(\frac{\sin(L\hat\omega/2)}{\sin(\hat\omega/2)}\big)^2.

Grafico interattivo: Risposta in frequenza |H|/L dell'interpolatore lineare (triangolo di picco 1 e lunghezza 2L-1) per L = 2, 3, 5: (1/L²)(sin(Lω/2)/sin(ω/2))². Il filtro ideale avrebbe guadagno 1 fino a ω = π/L e 0 oltre

Il filtro lineare è lontano dall'ideale (rettangolo fino a πL\frac\pi L): la transizione è lenta (per L=5L=5 il guadagno normalizzato è 0,420{,}42 in π5\frac\pi5 e 0,100{,}10 in 0,3π0{,}3\pi) e oltre 0,4π0{,}4\pi il guadagno massimo è ancora 0,06250{,}0625, cioè solo −24-24 dB (con il sinc finestrato con Hamming si arriva a −51-51 dB, Esercizio - Laboratorio 4 - interpolazione e zoom di immagini). Per questo l'interpolazione lineare dà buoni risultati solo se il segnale occupa frequenze molto più basse della massima; altrimenti restano immagini e distorsione.

Interpolazione in più stadi

Se L=L1L2⋯LKL=L_1L_2\cdots L_K conviene interpolare in KK stadi (Fs→L1Fs→L1L2Fs→…F_s\to L_1F_s\to L_1L_2F_s\to\dots) invece che in uno solo: ogni filtro ha una banda di transizione più larga rispetto alla sua frequenza di lavoro e quindi meno coefficienti. Il costo minimo si ha con i fattori in ordine crescente, L1≤L2≤…L_1\le L_2\le\dots (il fattore più piccolo per primo), perché i primi filtri lavorano a frequenze basse.

Esempio numerico. Segnale a 22 kHz con banda utile fino a 800800 Hz, interpolato di L=24L=24 fino a 4848 kHz con 6060 dB di attenuazione (filtri di Kaiser, kaiserord; costo in moltiplicazioni al secondo con la struttura polifase):

stadi ordini dei filtri moltiplicazioni/s
2424 (uno) 437437 876 000876\,000
2×122\times12 38, 7438,\ 74 378 000378\,000
12×212\times2 219, 9219,\ 9 680 000680\,000
3×83\times8 56, 4156,\ 41 366 000366\,000
8×38\times3 147, 14147,\ 14 536 000536\,000
4×3×24\times3\times2 74, 15, 974,\ 15,\ 9 518 000518\,000
2×3×42\times3\times4 38, 20, 1838,\ 20,\ 18 390 000390\,000

In tutti i casi della tabella lo schema a più stadi costa meno del singolo stadio (dal 22%22\% al 58%58\% in meno), e per ogni coppia l'ordine con il fattore piccolo prima costa meno (378 000378\,000 contro 680 000680\,000 e 366 000366\,000 contro 536 000536\,000). Non è invece detto che più stadi siano meglio di due (qui il minimo è 3×83\times8). Vedere anche Esercizio - Decimazione in più stadi, che è il caso speculare.

Decimazione

Il decimatore (downsampler)

Definizione (decimatore per MM). Conserva un campione ogni MM: y[n]=x[nM]y[n]=x[nM] (la frequenza scende a Fs/MF_s/M).

Esempio. x={1,2,3,4,5,6,7}x=\{1,2,3,4,5,6,7\} e M=3M=3: y={1,4,7}y=\{1,4,7\}.

È lineare ma, a differenza dell'espansore, non tempo-invariante e perde informazione in generale.

Teorema (spettro del decimatore). Y(ejω^)=1M∑k=0M−1X ⁣(ejω^−2πkM)Y(e^{j\hat\omega})=\dfrac1M\displaystyle\sum_{k=0}^{M-1}X\!\Big(e^{j\frac{\hat\omega-2\pi k}M}\Big).

Dimostrazione. Si definisce u[n]=x[n] p[n]u[n]=x[n]\,p[n] con p[n]=∑kδ[n−kM]p[n]=\sum_{k}\delta[n-kM] (pettine di impulsi: vale 11 nei multipli di MM, 00 altrove). Allora u[n]=x[n]u[n]=x[n] se MM divide nn e 00 altrimenti, e y[m]=u[mM]y[m]=u[mM]. La DTFT del pettine è P(ω^)=2πM∑k=0M−1δ(ω^−2πkM)P(\hat\omega)=\frac{2\pi}{M}\sum_{k=0}^{M-1}\delta(\hat\omega-\frac{2\pi k}{M}) (periodica), e il prodotto in tempo è convoluzione in frequenza (Proprietà della trasformata di FourierCon le proprietà (linearità, simmetrie, ritardo $\leftrightarrow e^{-j\omega t_0}$, modulazione $\leftrightarrow$ traslazione in frequenza, scala, dualità, convoluzione $\leftrightarrow$ prodotto, Parseval $E=\frac1{2\pi}\int|X|^2$, derivata $\leftrightarrow j\omega$, moltiplicazione per $t\leftrightarrow j,d/d\omega$, integrazione) quasi tutte le trasformate si ottengono da poche coppie base senza integrare.Proprietà della trasformata di Fourier →): U(ω^)=1M∑k=0M−1X(ω^−2πkM)U(\hat\omega)=\frac1M\sum_{k=0}^{M-1}X(\hat\omega-\frac{2\pi k}M). Poi Y(ω^)=∑mu[mM]e−jω^m=∑nu[n]e−jω^n/M=U(ω^/M)Y(\hat\omega)=\sum_mu[mM]e^{-j\hat\omega m}=\sum_nu[n]e^{-j\hat\omega n/M}=U(\hat\omega/M), perché i soli nn non nulli di uu sono multipli di MM. Quindi Y(ω^)=1M∑kX(ω^M−2πkM)Y(\hat\omega)=\frac1M\sum_kX\big(\frac{\hat\omega}M-\frac{2\pi k}M\big). □\square (Verificato numericamente con una sequenza casuale.)

Quindi YY è la somma di MM versioni dello spettro di XX, dilatate di MM e traslate di 2πk2\pi k, divise per MM. Nelle slide, con la normalizzazione in Hz: Y~(f)=∑k=0M−1X~(f−kFs′)\tilde Y(f)=\sum_{k=0}^{M-1}\tilde X(f-kF_s'), cioè MM repliche dello spettro spaziate di Fs′=Fs/MF_s'=F_s/M.

Aliasing

Le repliche si sovrappongono se XX occupa più di ∣ω^∣<πM|\hat\omega|<\frac\pi M: in quella zona non si può più ricostruire XX da YY (la somma di più termini non si "separa"): è l'aliasing della decimazione. Se xx è a banda limitata in ∣ω^∣<πM|\hat\omega|<\frac\pi M (in Hz, ∣f∣<Fs2M=Fs′2|f|<\frac{F_s}{2M}=\frac{F_s'}2) non c'è sovrapposizione e tutta l'informazione si conserva.

Grafico interattivo: Decimazione con M = 2 senza filtro, segnale con banda 0,4·Fs > Fs/(2M) = 0,25·Fs: le due repliche (tratteggio) si sovrappongono nella banda ±0,5 della nuova frequenza (aliasing). Asse in unità di Fs' = Fs/2

Esempio. x[n]=cos⁡(0,6πn)x[n]=\cos(0{,}6\pi n) e M=2M=2: y[n]=cos⁡(1,2πn)=cos⁡(0,8πn)y[n]=\cos(1{,}2\pi n)=\cos(0{,}8\pi n), perché 1,2π≡−0,8π(mod2π)1{,}2\pi\equiv-0{,}8\pi\pmod{2\pi}. La frequenza 0,6π>π20{,}6\pi>\frac\pi2 riappare (falsamente) a 0,8π0{,}8\pi.

Il filtro anti-aliasing

Per limitare l'aliasing si fa precedere il decimatore da un passabasso con taglio πM\frac\pi M (in Hz Fs2M=Fs′2\frac{F_s}{2M}=\frac{F_s'}2) e guadagno 11. Il filtro ideale minimizza la distorsione: all'uscita YY coincide con XX nella banda ∣f∣<Fs′2|f|<\frac{F_s'}2 e la parte di xx oltre quel limite è persa, ma non viene riportata dentro la banda. In pratica un FIR progettato con le finestre o il minimax (Progetto di filtri FIR con il metodo delle finestreUn filtro FIR a fase lineare di tipo I (ordine $N$ pari, $h[n]=h[N-n]$) ha risposta $H(e^{j\hat\omega})=e^{-j\hat\omega N/2}\bar H(\hat\omega)$ con ampiezza $\bar H(\hat\omega)=\sum_{n=0}^{N/2}p_n\cos(n\hat\omega)$. Per approssimare un'ampiezza desiderata $D(\hat\omega)$ (passa-basso: $1$ in banda passante, $0$ in banda oscura, con tolleranze $\delta_p,\delta_s$ e frequenze $\hat\omega_p,\hat\omega_s$) ci sono tre metodi. Finestre: si tronca la serie di Fourier di $D$, cioè $h[n]=h_d[n-N/2],w[n]$ con $h_d[n]=\frac{\hat\omega_0}{\pi}\operatorname{sinc}\frac{\hat\omega_0 n}{\pi}$; la rettangolare è ottima in errore quadratico ma dà il fenomeno di Gibbs (9%, $21$ dB), le finestre rastremate (Hann, Hamming, Blackman, Kaiser) abbassano i lobi laterali allargando la transizione ($\hat\omega_s-\hat\omega_p\simeq\alpha,2\pi/L$). Campionamento in frequenza: $h=\mathrm{IDFT}$ dei campioni di $D$, esatto solo sui campioni. Minimax (Parks-McClellan): errore pesato minimo nel caso peggiore, soluzione equiripple con almeno $r+2$ alternanze, ordine più basso a parità di specifiche.Progetto di filtri FIR con il metodo delle finestre →).

Grafico interattivo: Stessa decimazione con M = 2 dopo un passabasso ideale di taglio Fs/(2M) = 0,25·Fs: le repliche si toccano solo ai bordi ±0,5 e la banda utile |f| < 0,5 Fs' è l'originale filtrato, senza sovrapposizioni

Esempio. Nel caso x[n]=cos⁡(0,6πn)x[n]=\cos(0{,}6\pi n), M=2M=2, il prefiltro con taglio π2\frac\pi2 elimina la componente: l'uscita è praticamente zero, invece di una sinusoide falsa.

Decimazione in più stadi

Come per l'interpolazione, se M=M1⋯MKM=M_1\cdots M_K conviene decimare in KK stadi. Il costo minimo si ha con i fattori in ordine decrescente (il fattore più grande per primo): i filtri più impegnativi lavorano a frequenza già ridotta. Esempio con Fs=48F_s=48 kHz, M=24M=24 (uscita 22 kHz), banda utile 800800 Hz, 6060 dB: un solo filtro ha ordine 437437 e costa 876 000876\,000 moltiplicazioni/s calcolando solo i campioni d'uscita; 12×212\times2 costa 378 000378\,000 contro 680 000680\,000 di 2×122\times12; 8×38\times3 costa 366 000366\,000 contro 536 000536\,000 di 3×83\times8 (tabella e calcoli in Esercizio - Decimazione in più stadi).

Conversione generica Fs′=LMFsF_s'=\frac LMF_s

Si interpola per LL e poi si decima per MM. I due filtri fra i blocchi, l'anti-immagine (taglio πL\frac\pi L, serve a eliminare le immagini create dall'espansore) e l'anti-aliasing (taglio πM\frac\pi M, serve a evitare l'aliasing del decimatore), lavorano alla stessa frequenza Fs′′F_s'' e sono in cascata, quindi si sostituiscono con un solo passabasso di guadagno LL e taglio

ω^c=min⁡(πL,πM)(in Hz: fc=min⁡(Fs2,Fs′2)).\hat\omega_c=\min\Big(\frac\pi L,\frac\pi M\Big)\qquad\Big(\text{in Hz: }f_c=\min\Big(\frac{F_s}2,\frac{F_s'}2\Big)\Big).

Il caso Fs′>FsF_s'>F_s (L>ML>M) è dominato dal taglio πL\frac\pi L (si conserva tutta la banda dell'ingresso), il caso Fs′<FsF_s'<F_s (M>LM>L) da πM\frac\pi M (la banda di uscita è più stretta e si perde parte dell'ingresso). L'equazione ingresso-uscita è la già vista y[n]=∑ix[i] g[nM−iL]y[n]=\sum_ix[i]\,g[nM-iL].

Esempio. 44,1→4844{,}1\to48 kHz: L=160L=160, M=147M=147. Il filtro lavora a 70567056 kHz ed ha taglio min⁡(π160,π147)=π160\min(\frac\pi{160},\frac\pi{147})=\frac\pi{160}, cioè 22,0522{,}05 kHz in Hz. Calcolarlo a 77 MHz sarebbe proibitivo: si usa la struttura polifase (sotto) e si calcolano solo i campioni d'uscita, con una frazione di 1L\frac1L dei coefficienti per campione.

Realizzazioni efficienti

Il filtro gg di lunghezza KK fa moltiplicazioni inutili: dopo l'espansore L−1L-1 campioni su LL sono zero, e il decimatore butta via M−1M-1 uscite su MM. Nella struttura polifase si scompone gg in LL sottofiltri gr[k]=g[kL+r]g_r[k]=g[kL+r], r=0,…,L−1r=0,\dots,L-1 (nell'interpolatore ognuno produce una delle LL uscite fra due campioni di ingresso, a frequenza FsF_s); per la decimazione la scomposizione è analoga. Con l'interpolazione per LL si fanno KL\frac KL moltiplicazioni per campione d'uscita invece di KK; con la decimazione per MM si calcolano solo le uscite necessarie, KK moltiplicazioni ogni MM campioni d'ingresso, non KK per campione. Entrambe le identità sono state verificate numericamente (errore ≈10−15\approx10^{-15}). I conteggi nelle tabelle sopra usano queste strutture.

Domande d'esame

  1. Descrivi un sistema di interpolazione e il ruolo del filtro dopo l'espansore. Traccia: espansore, V(ω^)=X(Lω^)V(\hat\omega)=X(L\hat\omega) (dimostrazione), compressione dello spettro e L−1L-1 immagini; passabasso ideale con taglio πL\frac\pi L e guadagno LL, risposta sinc⁡(n/L)\operatorname{sinc}(n/L), interpolazione corretta; FIR con finestre; interpolazione lineare (triangolo, 1L(sin⁡(Lω^/2)sin⁡(ω^/2))2\frac1L(\frac{\sin(L\hat\omega/2)}{\sin(\hat\omega/2)})^2) e suoi limiti.
  2. Descrivi la decimazione e spiega perché serve un filtro anti-aliasing. Traccia: y[n]=x[nM]y[n]=x[nM], pettine di impulsi, Y(ω^)=1M∑kX(ω^−2πkM)Y(\hat\omega)=\frac1M\sum_kX(\frac{\hat\omega-2\pi k}M), sovrapposizione delle repliche se la banda supera πM\frac\pi M; passabasso con taglio πM\frac\pi M; perdita di informazione fuori banda; più stadi con il fattore grande per primo.
  3. Descrivi la conversione di frequenza con rapporto razionale e commenta le proprietà del sistema. Traccia: cascata ↑L\uparrow L, filtro, ↓M\downarrow M (LL, MM coprimi), Fs′′=LFs=MFs′F_s''=LF_s=MF_s', filtro unico con taglio min⁡(πL,πM)\min(\frac\pi L,\frac\pi M) e guadagno LL; equazione y[n]=∑x[i]g[nM−iL]y[n]=\sum x[i]g[nM-iL] non è una convoluzione, sistema lineare periodicamente tempo-invariante, periodo mcm⁡(T,T′)\operatorname{mcm}(T,T'); esempio 44,1→4844{,}1\to48 kHz con L=160L=160, M=147M=147; ordine dei blocchi; realizzazione polifase.

Versione ripasso

  • Interpolazione per LL. Espansore: v[n]=x[n/L]v[n]=x[n/L] nei multipli di LL, 00 altrove; V(ω^)=X(Lω^)V(\hat\omega)=X(L\hat\omega), spettro compresso e ripetuto LL volte (immagini). Passabasso di taglio π/L\pi/L e guadagno LL.
  • Interpolazione corretta. Filtro ideale h[n]=sinc⁡(n/L)h[n]=\operatorname{sinc}(n/L), y[kL]=x[k]y[kL]=x[k]. Realizzato con FIR a finestre (Hamming), che conserva gli zeri nei multipli di LL.
  • Interpolazione lineare. h[n]=1−∣n∣/Lh[n]=1-\lvert n\rvert/L per ∣n∣<L\lvert n\rvert<L: L=2L=2 dà {12,1,12}\{\frac12,1,\frac12\}, L=3L=3 dà {13,23,1,23,13}\{\frac13,\frac23,1,\frac23,\frac13\}. H=1L(sin⁡(Lω^/2)sin⁡(ω^/2))2H=\frac1L\big(\frac{\sin(L\hat\omega/2)}{\sin(\hat\omega/2)}\big)^2, guadagno LL in continua. Per L=5L=5 il guadagno normalizzato è 0,420{,}42 in π/5\pi/5 e 0,100{,}10 in 0,3π0{,}3\pi; oltre 0,4π0{,}4\pi è ancora 0,06250{,}0625, cioè −24-24 dB.
  • Interpolazione in più stadi. L=L1⋯LKL=L_1\cdots L_K, fattori in ordine crescente: il fattore piccolo per primo. Esempio: 2424 con un solo stadio costa 876 000876\,000 moltiplicazioni al secondo, 3×83\times8 costa 366 000366\,000, 2×122\times12 costa 378 000378\,000, 12×212\times2 costa 680 000680\,000.
  • Decimazione per MM. y[n]=x[nM]y[n]=x[nM]; Y(ω^)=1M∑k=0M−1X(ω^−2πkM)Y(\hat\omega)=\frac1M\sum_{k=0}^{M-1}X\big(\frac{\hat\omega-2\pi k}M\big), dimostrazione con il pettine di impulsi. MM repliche dilatate di MM e traslate di 2πk2\pi k.
  • Aliasing. Le repliche si sovrappongono se la banda supera ∣ω^∣<π/M\lvert\hat\omega\rvert<\pi/M. Esempio: cos⁡(0,6πn)\cos(0{,}6\pi n) con M=2M=2 diventa cos⁡(0,8πn)\cos(0{,}8\pi n).
  • Filtro anti-aliasing. Passabasso di taglio π/M\pi/M prima del decimatore; il caso ideale non riporta dentro la banda la parte di xx oltre il limite.
  • Decimazione in più stadi. Fattori in ordine decrescente, il più grande per primo. Esempio: M=24M=24 con Fs=48F_s=48 kHz; un solo filtro ha ordine 437437, 12×212\times2 costa 378 000378\,000 contro 680 000680\,000 di 2×122\times12, 8×38\times3 costa 366 000366\,000 contro 536 000536\,000 di 3×83\times8.
  • Conversione LM\frac LM. Interpolazione per LL, poi decimazione per MM. Un solo passabasso di guadagno LL e taglio ω^c=min⁡(π/L,π/M)\hat\omega_c=\min(\pi/L,\pi/M), a frequenza Fs′′=LFs=MFs′F_s''=LF_s=MF_s'. Equazione: y[n]=∑ix[i] g[nM−iL]y[n]=\sum_ix[i]\,g[nM-iL], lineare, periodicamente tempo-invariante con periodo mcm⁡(T,T′)\operatorname{mcm}(T,T').
  • Esempio 44,1→4844{,}1\to48 kHz. L=160L=160, M=147M=147, taglio π/160\pi/160 (circa 22,0522{,}05 kHz), filtro a 70567056 kHz: si usa la struttura polifase, che calcola solo i campioni d'uscita.
  • Polifase. Sottofiltri gr[k]=g[kL+r]g_r[k]=g[kL+r], r=0,…,L−1r=0,\dots,L-1. Con l'interpolazione per LL si fanno K/LK/L moltiplicazioni per campione d'uscita invece di KK; con la decimazione, KK moltiplicazioni ogni MM campioni d'ingresso.
  • Tre casi. Interpolazione: Fs′=LFsF_s'=LF_s. Decimazione: Fs′=Fs/MF_s'=F_s/M. Conversione generica: Fs′=LMFsF_s'=\frac LMF_s con L,ML,M coprimi. Gli scopi sono conservare l'informazione e ridurre il costo.
  • Griglie diverse. Ingresso x[nT]x[nT] con Fs=1/TF_s=1/T, uscita y[nT′]y[nT'] con Fs′=1/T′F_s'=1/T'. Esempio: il fotogramma 4040 di un video a 3030 fps cade a 4030\frac{40}{30} s, a 6060 fps a 4060\frac{40}{60} s. La frequenza intermedia è Fs′′=LFs=MFs′F_s''=LF_s=MF_s'.
  • Esempi di frequenze. Fs=2F_s=2, Fs′=3F_s'=3: Fs′′=6F_s''=6. Audio da 44,144{,}1 kHz a 4848 kHz: 4800044100=160147\frac{48000}{44100}=\frac{160}{147}, quindi L=160L=160, M=147M=147, Fs′′=7056F_s''=7056 kHz.
  • Ordine dei blocchi. Prima l'interpolatore ↑L\uparrow L, poi il passabasso a Fs′′F_s'', poi il decimatore ↓M\downarrow M. L'ordine inverso perderebbe informazione.
  • Equazione ingresso-uscita. w[m]=∑ix[i]g[m−iL]w[m]=\sum_ix[i]g[m-iL] e y[n]=w[nM]y[n]=w[nM], quindi y[n]=∑ix[i] g[nM−iL]y[n]=\sum_ix[i]\,g[nM-iL]. Non è una convoluzione: i domini sono diversi e la somma non è commutativa.
  • Periodicamente tempo-invariante. Traslando l'ingresso di MM campioni, cioè di mcm⁡(T,T′)\operatorname{mcm}(T,T') secondi, l'uscita trasla di LL campioni.
  • Esempio con L=2L=2, M=3M=3. y[n]=∑ix[i]g[3n−2i]y[n]=\sum_ix[i]g[3n-2i]: ogni campione d'uscita usa una fase diversa di gg, e la fase nM mod LnM\bmod L si ripete ogni LL uscite.
  • Espansore. Lineare e tempo-invariante, non perde informazione. Esempio: x={1,2,3}x=\{1,2,3\} con L=3L=3 dà v={1,0,0,2,0,0,3,0,0}v=\{1,0,0,2,0,0,3,0,0\}. Dimostrazione: V(ω^)=∑kx[k]e−jω^kL=X(Lω^)V(\hat\omega)=\sum_kx[k]e^{-j\hat\omega kL}=X(L\hat\omega).
  • Immagini. XX ha periodo 2π2\pi e X(Lω^)X(L\hat\omega) ha periodo 2π/L2\pi/L. Esempio: x=cos⁡(0,4πn)x=\cos(0{,}4\pi n), L=3L=3: righe a 0,1333π0{,}1333\pi (originale compresso), 0,5333π0{,}5333\pi e 0,8π0{,}8\pi (immagini).
  • Interpolazione corretta, filtro. Il sinc ideale è non causale e infinito: si approssima con FIR a finestre. La finestra rettangolare darebbe Gibbs e un guadagno in continua sbagliato. Esempio: con L=3L=3 il passabasso di taglio π/3\pi/3 elimina 0,5333π0{,}5333\pi e 0,8π0{,}8\pi e lascia cos⁡(0,1333πn)\cos(0{,}1333\pi n), che nei multipli di 33 vale x[k]x[k].
  • Interpolazione lineare, limiti. Buona solo se il segnale occupa frequenze molto più basse della massima; altrimenti restano immagini e distorsione.
  • Decimatore. y[n]=x[nM]y[n]=x[nM]: esempio x={1,…,7}x=\{1,\dots,7\}, M=3M=3 dà y={1,4,7}y=\{1,4,7\}. Lineare, non tempo-invariante, perde informazione in generale.
  • Pettine di impulsi. p[n]=∑kδ[n−kM]p[n]=\sum_k\delta[n-kM] ha DTFT 2πM∑kδ(ω^−2πkM)\frac{2\pi}M\sum_k\delta(\hat\omega-\frac{2\pi k}M); il prodotto in tempo diventa convoluzione in frequenza.
  • Decimazione in Hz. Y~(f)=∑k=0M−1X~(f−kFs′)\tilde Y(f)=\sum_{k=0}^{M-1}\tilde X(f-kF_s'): MM repliche spaziate di Fs′=Fs/MF_s'=F_s/M.
  • Prefiltro su un caso. Con x=cos⁡(0,6πn)x=\cos(0{,}6\pi n) e M=2M=2, il prefiltro di taglio π/2\pi/2 elimina la componente: l'uscita è praticamente zero, invece di una sinusoide falsa.
  • Conversione: caso dominante. Se L>ML>M domina il taglio π/L\pi/L, si conserva tutta la banda dell'ingresso; se M>LM>L domina π/M\pi/M, la banda di uscita è più stretta e si perde parte dell'ingresso.
  • Polifase con il filtro gg di lunghezza KK. Dopo l'espansore L−1L-1 campioni su LL sono zero e il decimatore butta via M−1M-1 uscite su MM: le moltiplicazioni inutili si evitano con la polifase.
  • Errore tipico. Invertire l'ordine dei blocchi (decimazione prima dell'interpolazione perde informazione) o pensare che il sistema sia LTI.

Esercizi su questo argomento

Teoria collegata