Esercizio - Laboratorio 5 - notch IIR e vuvuzela
In questa pagina 3
Testo (laboratorio 5 del corso Multimedia Signal Processing, UniPD, lezione 23; con codice Python numpy/scipy). Una registrazione di una partita dei Mondiali del 2010 è disturbata dal suono della vuvuzela, un corno di plastica che emette una nota monotona a circa Hz (prima armonica) con le armoniche successive a circa , , ... Hz, e impedisce di sentire il commentatore. Con un filtro IIR a tacca (notch) si deve eliminare il disturbo:
- caricare il segnale, tracciarlo nel tempo e in frequenza (modulo in dB, asse in Hz) e verificare le armoniche;
- progettare un notch IIR del secondo ordine per la prima armonica, per : tracciare modulo e fase e il diagramma poli-zeri;
- filtrare il segnale e confrontare gli spettri; ascoltare;
- mettere in cascata più notch per togliere anche le armoniche successive;
- (facoltativo) confrontare il ritardo di gruppo del notch IIR con quello del notch FIR del laboratorio 2.
Dati. Il file vuvuzela.wav sta nella cartella del laboratorio 5 su Moodle. È mono, a bit, con Hz, campioni ( s); in scala ha picco e valore efficace . I risultati sotto sono ottenuti eseguendo il codice su questo file. Teoria usata: Filtri IIR - definizione e confronto con i FIRUn filtro IIR (infinite impulse response) è un sistema LTI descritto da $y[n]=\sum_{\ell=1}^{N}a_\ell y[n-\ell]+\sum_{k=0}^{M}b_kx[n-k]$: l'uscita usa anche le uscite passate (retroazione), per questo si chiama ricorsivo. Con le condizioni di riposo iniziale è LTI, $H(z)=\frac{\sum b_kz^{-k}}{1-\sum a_\ell z^{-\ell}}$ è un rapporto di polinomi, l'ordine è $N$ (numero di poli) e la risposta impulsiva ha durata infinita. Nel primo ordine $y[n]=a_1y[n-1]+b_0x[n]$ si ha $h[n]=b_0a_1^nu[n]$, ROC $|z|>|a_1|$, stabile se $|a_1|<1$; il gradino dà $b_0\frac{1-a_1^{n+1}}{1-a_1}\to\frac{b_0}{1-a_1}$. Si implementa iterando l'equazione alle differenze, non con la convoluzione. Rispetto ai FIR gli IIR rispettano le stesse specifiche di modulo con ordine molto più basso, ma possono essere instabili e non hanno fase lineare. Progetto: per tentativi (notch), con la trasformazione $s\to z$ dai filtri analogici, o con ottimizzazione numerica.Filtri IIR - definizione e confronto con i FIR →, Funzione di sistema, poli, zeri e stabilitàLa funzione di sistema H(z) è la trasformata zeta della risposta impulsiva: con ingresso z^n l'uscita è H(z) z^n. Per un FIR H(z) = Σ b_k z^{-k} è un polinomio con M zeri e M poli in z = 0; in generale H = B(z)/A(z) dall'equazione alle differenze. Sulla circonferenza unitaria H(e^{jω̂}) è la risposta in frequenza: |H| = prodotto delle distanze dagli zeri / prodotto delle distanze dai poli, quindi gli zeri bloccano frequenze e i poli le esaltano. Un LTI causale è BIBO stabile se e solo se tutti i poli hanno modulo < 1 (a meno di cancellazioni polo-zero); i FIR sono sempre stabili.Funzione di sistema, poli, zeri e stabilità →, 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 →, Risposta in frequenza dei sistemi FIRSe all'ingresso di un FIR c'è un esponenziale complesso A e^{jφ} e^{jω̂n} (per ogni n), l'uscita è lo stesso esponenziale moltiplicato per H(ω̂) = Σ b_k e^{-jω̂k}: la frequenza non cambia, ampiezza e fase sono modificate da |H| (guadagno) e ∠H (sfasamento). Per sovrapposizione si trattano somme di sinusoidi. H è periodica di periodo 2π e, per coefficienti reali, hermitiana (|H| pari, fase dispari). La cascata ha H = H1·H2. Esempi: ritardo (fase lineare), differenza prima (passa-alto), {1,2,1} (passa-basso), media mobile di L punti (Dirichlet: |H| = |sin(Lω̂/2)/(L sin(ω̂/2))|, fase lineare -(L-1)ω̂/2).Risposta in frequenza dei sistemi FIR →, 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 →.
Il filtro notch del secondo ordine
Per cancellare la frequenza si pone (con Hz e kHz: ). Il notch IIR ha due zeri sulla circonferenza unitaria in (annullano esattamente ) e due poli coniugati vicini, in con ( vicino a ), che fanno tornare il modulo a appena ci si allontana da : Con si ottiene (guadagno dB in continua). A differenza del notch FIR con soli zeri (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 →), che ha una tacca larga e altera il modulo anche lontano da , qui i poli vicini agli zeri "compensano" lo zero appena ci si allontana dalla frequenza eliminata, e la tacca resta stretta. La larghezza della tacca a dB è circa rad, cioè Hz, purché sia molto minore di : se è confrontabile con la stima non vale più (vedi sotto, ).
Le equazioni alle differenze sono . Il filtro è stabile perché i poli hanno modulo .
Codice
import numpy as np
from scipy import signal
from scipy.io import wavfile
import matplotlib.pyplot as plt
Fs, y = wavfile.read('vuvuzela.wav') # int16, mono, Fs = 48000
x = y / 32768.0
f_h = np.array([235, 465, 694, 932, 1160, 1389, 1632.5, 1864, 2115, 2325, 2568, 2784]) # armoniche del corso (Hz)
def notch(w0, r):
"""Notch del secondo ordine: zeri in e^{+-j w0}, poli in r e^{+-j w0}, guadagno 1 in continua."""
b0 = (1 - 2 * r * np.cos(w0) + r ** 2) / (2 - 2 * np.cos(w0))
return b0 * np.array([1, -2 * np.cos(w0), 1]), np.array([1, -2 * r * np.cos(w0), r ** 2])
def potenza(sig, f1, f2): # potenza spettrale tra f1 e f2 Hz (si scarta il transitorio, 0,5 s)
s = sig[Fs // 2:]
X = np.abs(np.fft.rfft(s * np.hanning(len(s)))) ** 2
fr = np.fft.rfftfreq(len(s), 1 / Fs)
return X[(fr >= f1) & (fr < f2)].sum()
# ---- 0) spettro: dove stanno le armoniche? (Welch: 65536 campioni per segmento, risoluzione 0,73 Hz)
f, P = signal.welch(x, Fs, nperseg=2 ** 16, noverlap=2 ** 15)
for fh in f_h:
m = (f > fh - 25) & (f < fh + 25)
print(f"armonica del corso {fh:7.1f} Hz: picco a {f[m][np.argmax(P[m])]:7.1f} Hz, livello {10*np.log10(P[m].max()):.1f} dB")
# ---- 1) un solo notch sulla prima armonica, per due valori di r ----
w0 = 2 * np.pi * f_h[0] / Fs
for r in (0.95, 0.99):
b, a = notch(w0, r)
w, H = signal.freqz(b, a, worN=2000000); mag = np.abs(H)
sotto = np.where(mag < mag.max() / np.sqrt(2))[0]
larg = (w[sotto.max()] - w[sotto.min()]) * Fs / (2 * np.pi)
y1 = signal.lfilter(b, a, x)
print(f"r={r}: b={np.round(b, 4)} a={np.round(a, 4)}")
print(f" |H(0)|={mag[0]:.3f}, max|H|={mag.max():.4f}, larghezza a -3 dB = {larg:.1f} Hz (stima 2(1-r)Fs/2pi = {2*(1-r)*Fs/(2*np.pi):.1f} Hz)")
print(" attenuazione della prima armonica (220-250 Hz):", round(10 * np.log10(potenza(y1, 220, 250) / potenza(x, 220, 250)), 1), "dB")
plt.plot(w * Fs / (2 * np.pi), 20 * np.log10(mag + 1e-12), label=f"r={r}")
plt.xlim(0, 1000); plt.ylim(-40, 14); plt.xlabel("f (Hz)"); plt.ylabel("dB"); plt.legend(); plt.grid(); plt.savefig("lab5_notch.png")
# ---- 2) cascata di 12 notch ----
fuori = (lambda fr: (fr >= 100) & (fr < 8000) & np.all(np.abs(fr[:, None] - f_h) > 60, axis=1))
for r in (0.95, 0.99, 0.998):
yy = x.copy(); Htot = np.ones(400000, complex); ww = np.linspace(1e-4, np.pi, 400000)
for f in f_h:
b, a = notch(2 * np.pi * f / Fs, r)
yy = signal.lfilter(b, a, yy)
Htot *= signal.freqz(b, a, worN=ww)[1]
arm = sum(potenza(yy, f - 20, f + 20) for f in f_h) / sum(potenza(x, f - 20, f + 20) for f in f_h)
s = yy[Fs // 2:]; sx = x[Fs // 2:]
fr = np.fft.rfftfreq(len(s), 1 / Fs); k = fuori(fr)
Y = np.abs(np.fft.rfft(s * np.hanning(len(s)))) ** 2; Xs = np.abs(np.fft.rfft(sx * np.hanning(len(sx)))) ** 2
print(f"r={r}: armoniche (+-20 Hz) {10*np.log10(arm):.1f} dB; potenza totale {10*np.log10(Y.sum()/Xs.sum()):.1f} dB; "
f"fuori dalle armoniche {10*np.log10(Y[k].sum()/Xs[k].sum()):.2f} dB; guadagno massimo {20*np.log10(np.abs(Htot).max()):.2f} dB; "
f"valore efficace {yy.std():.4f} (ingresso {x.std():.4f}), picco {np.abs(yy).max():.3f}")
# ---- 3) ritardo di gruppo: notch IIR contro notch FIR (zeri sul cerchio, b = [1, -2cos w0, 1]) ----
wg = np.linspace(0.0005, np.pi, 400000)
for r in (0.95, 0.99):
b, a = notch(w0, r)
_, gd = signal.group_delay((b, a), w=wg)
i = np.argmax(gd)
print(f"r={r}: ritardo di gruppo IIR: massimo {gd[i]:.1f} campioni a {wg[i]*Fs/(2*np.pi):.0f} Hz;"
f" a 100 Hz {np.interp(2*np.pi*100/Fs, wg, gd):.1f}, a 1000 Hz {np.interp(2*np.pi*1000/Fs, wg, gd):.2f}, a 3000 Hz {np.interp(2*np.pi*3000/Fs, wg, gd):.2f}")
_, gdf = signal.group_delay((np.array([1, -2 * np.cos(w0), 1]), [1]), w=wg[wg > 0.3])
print("ritardo di gruppo del notch FIR (b=[1,-2cos w0,1]) lontano da w0:", np.round(gdf.min(), 3), "-", np.round(gdf.max(), 3), "campioni")Risultati e spiegazione
Lo spettro della registrazione. Quasi tutta la potenza è tra e Hz () e sopra kHz resta lo . Le dodici armoniche della lista del corso, prese in una banda di Hz, contengono il della potenza totale ( con Hz), la sola prima armonica (- Hz) il : il disturbo domina, e la voce sta sotto di esso. I picchi dello spettro (Welch, risoluzione Hz; livelli in dB rispetto al fondo scala) sono:
| armonica | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| lista del corso (Hz) | ||||||
| picco misurato (Hz) | ||||||
| livello (dB) |
| armonica | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|
| lista del corso (Hz) | ||||||
| picco misurato (Hz) | ||||||
| livello (dB) |
Nove armoniche su dodici coincidono con la lista del corso entro Hz; la seconda se ne scosta di Hz ( contro ), l'ottava e la nona di e Hz ( e contro e Hz): la lista è una lettura da grafico. Le armoniche si indeboliscono di circa dB dalla prima alla dodicesima, e la serie continua oltre i kHz (picchi a , , , Hz, tra e dB). Ci sono anche picchi non armonici a e Hz.
La nota non è stabile. La vuvuzela non emette una frequenza esatta: la prima armonica misurata su finestre di s si sposta tra e Hz durante la registrazione, e la riga nello spettro dell'intero file ha larghezza di Hz a dB e di Hz a dB (da a Hz). Una tacca più stretta della riga non la copre tutta: la scelta di è un compromesso, e con un tono sinusoidale ideale lo zero lo cancellerebbe del tutto, mentre qui l'attenuazione resta di una ventina di dB.
Progetto. Per la prima armonica () con i due valori estremi (con kHz):
| larghezza a dB | stima | massimo di | ||||
|---|---|---|---|---|---|---|
| Hz | Hz | ( dB) | ||||
| Hz | Hz | ( dB) |
I poli sono in () e (), gli zeri in (sul cerchio unitario, a ): poli e zeri sono vicinissimi, quindi l'effetto del filtro è locale. La costante di tempo del transitorio è campioni: campioni ( ms) contro ( ms).
Grafico interattivo: Notch IIR a 235 Hz con Fs = 48 kHz: più r è vicino a 1, più la tacca è stretta (a -3 dB: circa 700 Hz con r = 0,95, 158 Hz con r = 0,99, 31 Hz con r = 0,998)
Nota sul guadagno. Il testo del laboratorio dice che è scelto per avere "guadagno massimo uno". In realtà la normalizzazione impone in continua, e a kHz, con la tacca vicinissima alla continua (), questo ha un effetto grande: il modulo sale molto sopra appena si esce dalla tacca. Il massimo vale ( dB, in ) per e per ; nella cascata di notch i massimi diventano dB e dB. Si vede nel grafico: con il filtro amplifica di dB a Hz e di dB a Hz.
Filtraggio con un solo notch. La potenza nella banda - Hz (la prima armonica) scende di dB con e di dB con ; il picco dello spettro passa da dB a dB e a dB. La prima armonica diventa molto più debole ma non sparisce (la riga è larga e oscilla), e le altre undici armoniche restano: il disturbo si sente ancora. Con la potenza totale del segnale sale di dB (amplificazione fuori dalla tacca), con è invariata ( dB).
Cascata. Si ripete con i dodici notch (uno per armonica) uno dopo l'altro: la funzione di sistema complessiva è il prodotto delle funzioni di sistema (ordine ), e le tacche si sommano in dB. Per misurare l'effetto si confronta la potenza (spettro del segnale senza il primo mezzo secondo) dentro Hz dalle armoniche e nel resto tra e Hz (a più di Hz dalle armoniche, dove ci sono voce e folla):
| armoniche ( Hz) | potenza totale | resto del segnale | massimo di | valore efficace | picco | |
|---|---|---|---|---|---|---|
| dB | dB | dB | dB | |||
| dB | dB | dB | dB | |||
| dB | dB | dB | dB |
(Ingresso: valore efficace , picco .) Con , il risultato è peggiore dell'ingresso: le armoniche scendono di dB, ma il resto sale di dB e il segnale in uscita ha valore efficace volte quello d'ingresso, con picco , cioè oltre il fondo scala (salvando il file a bit andrebbe in saturazione). Con il segnale diventa dB più debole, le armoniche scendono di dB e il resto perde solo dB (il guadagno cade a dB a Hz e dB a Hz, dove la voce ha energia, perché la tacca è larga Hz e le tacche sono distanti circa Hz). Con il segnale utile è praticamente intatto ( dB) ma le armoniche calano di soli dB: a la tacca è di Hz, più stretta della oscillazione della nota. Scegliere vuol dire scegliere tra voce intatta e disturbo ridotto; dalla tabella un buon compromesso è (e dà dB sulle armoniche perdendo dB sul resto).
Grafico interattivo: Cascata dei 12 notch alle armoniche della vuvuzela (Fs = 48 kHz): la tacca di ogni armonica e l'attenuazione del segnale tra le armoniche
Un'avvertenza sulla normalizzazione. La scelta del corso (guadagno in continua) non è l'unica: se si normalizza a in , cioè , il guadagno massimo è e la cascata con riduce le armoniche di dB, ma il resto del segnale cala di dB (il guadagno a Hz è dB): una tacca da Hz, ripetuta ogni Hz, equivale a un filtro che attenua di oltre dB tutto fino a kHz, voce compresa. Per le cifre sono dB sulle armoniche e dB sul resto.
Ritardo di gruppo (opzionale). Il notch FIR con soli zeri sulla circonferenza (, fase lineare) ha ritardo costante di campione a tutte le frequenze (lontano da ). Il notch IIR no: con il ritardo di gruppo vale campioni a Hz e a Hz, ma cresce molto vicino alla tacca, fino a campioni ( ms) a Hz ( a Hz). Con la tacca è così larga che il massimo, campioni, si sposta a Hz, e anche a Hz il ritardo è campioni. Le componenti vicine alla frequenza eliminata vengono ritardate molto più delle altre. È il costo dell'IIR rispetto ai filtri a fase lineare (Sistemi a fase lineare e assenza di distorsioneUn sistema non deforma il segnale se y[n] = K x[n-n0]: modulo costante e fase lineare -n0 w, cioè ritardo di gruppo costante n0. Un sistema reale e causale ha fase lineare (generalizzata) se e solo se è FIR con risposta impulsiva simmetrica h[n] = h[N-n] (ampiezza pari, fase -N w/2) o antisimmetrica h[n] = -h[N-n] (ampiezza dispari, fase -N w/2 + pi/2). Il ritardo di gruppo è N/2: intero se N è pari (vale la condizione di non distorsione), semi-intero se N è dispari (uscita interpolata e ritardata). Un IIR causale non può essere simmetrico, quindi non ha fase lineare esatta.Sistemi a fase lineare e assenza di distorsione →); nel caso di una tacca stretta il ritardo è grande ma riguarda solo una banda molto stretta.
Versione ripasso
Notch IIR del secondo ordine. Per (con Hz e kHz, ): Zeri sul cerchio in , poli in , . Equazione alle differenze: . Larghezza a dB , valida se .
Dati. vuvuzela.wav: mono, Hz, s. Le armoniche ( Hz) hanno il della potenza. Picchi misurati: nove su dodici come nella lista del corso (entro Hz); , , Hz invece di , , Hz. La nota oscilla tra e Hz (riga larga Hz a dB e Hz a dB).
Progetto. Per : , larghezza a dB Hz, massimo dB. Per : , larghezza Hz, massimo dB. Poli e , zeri . Costante di tempo campioni ( e ). Con la normalizzazione in continua il modulo supera fuori dalla tacca.
Filtraggio. Un solo notch: potenza in - Hz dB () e dB (). Cascata di notch (ordine ):
| armoniche | resto | massimo | |
|---|---|---|---|
| dB | dB | dB (picco : saturazione) | |
| dB | dB | dB | |
| dB | dB | dB |
Compromesso: (con : e dB). Con la normalizzazione a in e le armoniche calano di dB ma il resto di dB.
Ritardo di gruppo. Il notch FIR con zeri sul cerchio ha ritardo costante di campione. Il notch IIR: da campioni a Hz e a Hz fino a campioni a Hz; massimo campioni a Hz.
Teoria: Filtri IIR - definizione e confronto con i FIRUn filtro IIR (infinite impulse response) è un sistema LTI descritto da $y[n]=\sum_{\ell=1}^{N}a_\ell y[n-\ell]+\sum_{k=0}^{M}b_kx[n-k]$: l'uscita usa anche le uscite passate (retroazione), per questo si chiama ricorsivo. Con le condizioni di riposo iniziale è LTI, $H(z)=\frac{\sum b_kz^{-k}}{1-\sum a_\ell z^{-\ell}}$ è un rapporto di polinomi, l'ordine è $N$ (numero di poli) e la risposta impulsiva ha durata infinita. Nel primo ordine $y[n]=a_1y[n-1]+b_0x[n]$ si ha $h[n]=b_0a_1^nu[n]$, ROC $|z|>|a_1|$, stabile se $|a_1|<1$; il gradino dà $b_0\frac{1-a_1^{n+1}}{1-a_1}\to\frac{b_0}{1-a_1}$. Si implementa iterando l'equazione alle differenze, non con la convoluzione. Rispetto ai FIR gli IIR rispettano le stesse specifiche di modulo con ordine molto più basso, ma possono essere instabili e non hanno fase lineare. Progetto: per tentativi (notch), con la trasformazione $s\to z$ dai filtri analogici, o con ottimizzazione numerica.Filtri IIR - definizione e confronto con i FIR →, Funzione di sistema, poli, zeri e stabilitàLa funzione di sistema H(z) è la trasformata zeta della risposta impulsiva: con ingresso z^n l'uscita è H(z) z^n. Per un FIR H(z) = Σ b_k z^{-k} è un polinomio con M zeri e M poli in z = 0; in generale H = B(z)/A(z) dall'equazione alle differenze. Sulla circonferenza unitaria H(e^{jω̂}) è la risposta in frequenza: |H| = prodotto delle distanze dagli zeri / prodotto delle distanze dai poli, quindi gli zeri bloccano frequenze e i poli le esaltano. Un LTI causale è BIBO stabile se e solo se tutti i poli hanno modulo < 1 (a meno di cancellazioni polo-zero); i FIR sono sempre stabili.Funzione di sistema, poli, zeri e stabilità →, 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 →, Risposta in frequenza dei sistemi FIRSe all'ingresso di un FIR c'è un esponenziale complesso A e^{jφ} e^{jω̂n} (per ogni n), l'uscita è lo stesso esponenziale moltiplicato per H(ω̂) = Σ b_k e^{-jω̂k}: la frequenza non cambia, ampiezza e fase sono modificate da |H| (guadagno) e ∠H (sfasamento). Per sovrapposizione si trattano somme di sinusoidi. H è periodica di periodo 2π e, per coefficienti reali, hermitiana (|H| pari, fase dispari). La cascata ha H = H1·H2. Esempi: ritardo (fase lineare), differenza prima (passa-alto), {1,2,1} (passa-basso), media mobile di L punti (Dirichlet: |H| = |sin(Lω̂/2)/(L sin(ω̂/2))|, fase lineare -(L-1)ω̂/2).Risposta in frequenza dei sistemi FIR →, 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 →, Sistemi a fase lineare e assenza di distorsioneUn sistema non deforma il segnale se y[n] = K x[n-n0]: modulo costante e fase lineare -n0 w, cioè ritardo di gruppo costante n0. Un sistema reale e causale ha fase lineare (generalizzata) se e solo se è FIR con risposta impulsiva simmetrica h[n] = h[N-n] (ampiezza pari, fase -N w/2) o antisimmetrica h[n] = -h[N-n] (ampiezza dispari, fase -N w/2 + pi/2). Il ritardo di gruppo è N/2: intero se N è pari (vale la condizione di non distorsione), semi-intero se N è dispari (uscita interpolata e ritardata). Un IIR causale non può essere simmetrico, quindi non ha fase lineare esatta.Sistemi a fase lineare e assenza di distorsione →.
Errori tipici:
- Mettere senza dividere per .
- Scrivere : il guadagno in continua non è e va normalizzato.
- Usare la stima per la larghezza quando non è piccolo rispetto a (qui ).
- Scegliere vicino a senza considerare che la frequenza vera dell'armonica oscilla.
- Dire che il guadagno massimo è : vale solo in continua, il picco è sopra.