Esercizio - Conversione di frequenza da 44,1 kHz a 48 kHz
In questa pagina 4
Testo (esempio della lezione 20 del corso Multimedia Signal Processing, UniPD). Un segnale audio campionato a kHz deve essere portato a kHz.
- Determinare i fattori e del sistema di conversione e la frequenza intermedia.
- Disegnare lo schema a blocchi e dire quale taglio deve avere il filtro (in rad e in Hz) e quale guadagno.
- Il filtro deve avere banda passante fino a kHz, banda oscura da kHz e attenuazione dB: stimare la lunghezza con la finestra di Kaiser e confrontare il numero di moltiplicazioni al secondo con la realizzazione ingenua e con quella polifase.
- Cosa succederebbe nella conversione inversa ( kHz) senza filtro?
Teoria usata: Elaborazione multirate - decimazione e interpolazioneL'elaborazione multirate cambia la frequenza di campionamento di un segnale. Interpolazione per $L$ (da $F_s$ a $LF_s$): l'espansore inserisce $L-1$ zeri fra i campioni, $W(\hat\omega)=X(L\hat\omega)$, lo spettro si ripete $L$ volte nell'asse più ampio; un passabasso con taglio $\pi/L$ e guadagno $L$ elimina le immagini, e con il sinc ideale $h[n]=\operatorname{sinc}(n/L)$ i campioni originali sono conservati ($y[nL]=x[n]$); in pratica FIR a finestre o interpolatore lineare (triangolo). Decimazione per $M$ (da $F_s$ a $F_s/M$): $y[n]=x[nM]$, $Y(\hat\omega)=\frac1M\sum_{k=0}^{M-1}X\big(\frac{\hat\omega-2\pi k}M\big)$, repliche sovrapposte (aliasing) se la banda supera $\pi/M$: si fa precedere da un passabasso con taglio $\pi/M$. Conversione razionale $F_s'=\frac LMF_s$ ($L,M$ coprimi): espansore $L$, un solo passabasso di taglio $\min(\frac\pi L,\frac\pi M)$ e guadagno $L$, decimatore $M$; $y[n]=\sum_kx[k],g[nM-kL]$ non è una convoluzione e il sistema è periodicamente tempo-invariante. Realizzare il tutto in più stadi (fattori piccoli prima per l'interpolazione, grandi prima per la decimazione) e con strutture polifase riduce molto il costo.Elaborazione multirate - decimazione e interpolazione →, 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 →, 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 →.
1. Fattori di conversione
Il rapporto si riduce ai minimi termini dividendo per il massimo comune divisore : Si interpola per e si decima per . La frequenza intermedia, la più alta del sistema, è ( kHz, e coincide con Hz). L'ordine dei blocchi è: prima si interpola, poi si decima.
2. Schema e filtro
Un solo filtro fa sia l'anti-immagine sia l'anti-aliasing, con taglio (rispetto a ): in Hz kHz, cioè (essendo il taglio è fissato dall'ingresso: tutta la banda dell'ingresso passa, quella di uscita è più larga). Il guadagno in banda passante è (che compensa gli zeri inseriti).
3. Costo del filtro
Banda di transizione da a kHz, cioè kHz a kHz: rad. Con la formula di Kaiser:
e scipy.signal.kaiserord dà , : circa coefficienti. Un filtro così lungo calcolato ingenuamente a kHz richiede
Impossibile in tempo reale. La struttura efficiente sfrutta due fatti: dopo l'espansore campioni su sono zero (non servono moltiplicazioni) e il decimatore butta via uscite su (non vanno calcolate). Restano solo prodotti per campione d'uscita:
cioè volte meno. I coefficienti usati variano periodicamente da un'uscita all'altra (sistema periodicamente tempo-invariante, con periodo uscite): è la struttura polifase.
Esempio. scipy.signal.resample_poly(x, 160, 147) fa esattamente questo, con un filtro di Kaiser () di coefficienti per default. Convertendo s di un tono a kHz campionato a kHz si ottengono campioni e, a parte i bordi, la differenza dal tono ideale a kHz è (il filtro scelto è più corto di quello da dB, quindi ha una transizione più larga).
4. Il caso inverso
Da kHz a kHz si ha e , e il taglio è rispetto a kHz: kHz, fissato dall'uscita. Il filtro è necessario, perché le frequenze fra e kHz dell'ingresso non possono essere rappresentate a kHz. Senza filtro (per esempio prendendo semplicemente il campione più vicino all'istante ) un tono a kHz verrebbe ripiegato (aliasing) a kHz con ampiezza piena: il picco dello spettro del segnale così ottenuto cade a Hz (verificato numericamente).
Versione ripasso
Esercizio 1 - fattori. , con : , . Si interpola per , poi si decima per . La frequenza intermedia è kHz, uguale a kHz.
Esercizio 2 - filtro. Un solo filtro fa anti-immagine e anti-aliasing, con taglio . In Hz: kHz, cioè . Guadagno in banda passante , che compensa gli zeri inseriti dall'espansore.
Esercizio 3 - costo. Transizione da a kHz: rad. Kaiser: , e kaiserord dà , .
- Ingenua: moltiplicazioni/s, impossibile in tempo reale.
- Polifase: restano prodotti per uscita, cioè moltiplicazioni/s, cioè volte meno.
Esercizio 4 - inversa ( kHz). , , taglio rispetto a kHz, cioè kHz, fissato dall'uscita. Senza filtro un tono a kHz si ripiega a kHz con ampiezza piena.
Teoria: Elaborazione multirate - decimazione e interpolazioneL'elaborazione multirate cambia la frequenza di campionamento di un segnale. Interpolazione per $L$ (da $F_s$ a $LF_s$): l'espansore inserisce $L-1$ zeri fra i campioni, $W(\hat\omega)=X(L\hat\omega)$, lo spettro si ripete $L$ volte nell'asse più ampio; un passabasso con taglio $\pi/L$ e guadagno $L$ elimina le immagini, e con il sinc ideale $h[n]=\operatorname{sinc}(n/L)$ i campioni originali sono conservati ($y[nL]=x[n]$); in pratica FIR a finestre o interpolatore lineare (triangolo). Decimazione per $M$ (da $F_s$ a $F_s/M$): $y[n]=x[nM]$, $Y(\hat\omega)=\frac1M\sum_{k=0}^{M-1}X\big(\frac{\hat\omega-2\pi k}M\big)$, repliche sovrapposte (aliasing) se la banda supera $\pi/M$: si fa precedere da un passabasso con taglio $\pi/M$. Conversione razionale $F_s'=\frac LMF_s$ ($L,M$ coprimi): espansore $L$, un solo passabasso di taglio $\min(\frac\pi L,\frac\pi M)$ e guadagno $L$, decimatore $M$; $y[n]=\sum_kx[k],g[nM-kL]$ non è una convoluzione e il sistema è periodicamente tempo-invariante. Realizzare il tutto in più stadi (fattori piccoli prima per l'interpolazione, grandi prima per la decimazione) e con strutture polifase riduce molto il costo.Elaborazione multirate - decimazione e interpolazione →, 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 →, 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 →.
Errori tipici:
- Scambiare e : la diretta ha .
- Riferire il taglio a invece che a .