Salta al contenuto
Note per Studenti Esercizio - interpolatori in cascata e interpolazione parabolica a tratti

Esercizio - interpolatori in cascata e interpolazione parabolica a tratti

Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.

In questa pagina 3

Testo (dispense del corso, Esercizi 13.3A e 13.3B).

  • 13.3A. Verificare che la cascata costituita da un filtro interpolatore Z(T)→R\mathbb Z(T)\to\mathbb R con risposta impulsiva g1(t)g_1(t) seguito da un filtro ordinario su R\mathbb R con risposta impulsiva g2(t)g_2(t) è equivalente a un filtro interpolatore con risposta impulsiva g(t)=g1∗g2(t),t∈R.g(t)=g_1*g_2(t),\qquad t\in\mathbb R.
  • 13.3B. Studiare lo schema di interpolazione composto da un interpolatore con risposta impulsiva g1g_1 seguito da un filtro con risposta impulsiva g2g_2, dove g1(t)=A1 tri⁡ ⁣(tD1),g2(t)=A2rect⁡ ⁣(tD2),D1=T2,D2=T,A1A2=2.g_1(t)=A_1\,\operatorname{tri}\!\left(\frac t{D_1}\right),\qquad g_2(t)=A_2\operatorname{rect}\!\left(\frac t{D_2}\right),\qquad D_1=\frac T2,\quad D_2=T,\quad A_1A_2=2. Verificare che la corrispondente funzione interpolatrice g0g_0 è data dalla (13.22) delle dispense: g0(t)={1−2(tT)2∣t∣≤T22(1−∣t∣T)2T2<∣t∣≤T0∣t∣>T.g_0(t)=\begin{cases}1-2\left(\dfrac tT\right)^2&\lvert t\rvert\le\dfrac T2\\[8pt]2\left(1-\dfrac{\lvert t\rvert}T\right)^2&\dfrac T2<\lvert t\rvert\le T\\[8pt]0&\lvert t\rvert>T.\end{cases}

Teoria usata: 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 →, ConvoluzioneLa convoluzione $x*y(t)=\int x(u),y(t-u),du$ combina due segnali ribaltando e traslando il secondo, moltiplicando e integrando. È commutativa, associativa, lineare; l'area del risultato è il prodotto delle aree; l'estensione è la somma delle estensioni (estremo con estremo); l'impulso $\delta$ è l'elemento neutro; la convoluzione con il gradino integra. Per due segnali periodici di uguale periodo si usa la convoluzione ciclica (integrale su un periodo). È l'operazione del filtraggio: l'uscita di un filtro è la convoluzione dell'ingresso con la risposta impulsiva.Convoluzione →, Risposta in frequenza e filtriLa risposta in frequenza G(f) = F[g] di un filtro LTI dà Y = G·X. Gli esponenziali complessi sono autofunzioni (autovalore G(f)), quindi un ingresso sinusoidale esce sinusoidale con ampiezza moltiplicata per |G(f0)| e fase aumentata di arg G(f0). Il filtro è reale se G è hermitiana, invertibile se G non si annulla. I filtri ideali sono rect in frequenza; non distorsione secondo Heaviside: |G| costante e fase lineare.Risposta in frequenza e filtri →, 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 →, Segnali notevoli - gradino, rect, tri, sinc ed esponenzialiI segnali di uso più frequente sono la costante, la sinusoide $A_0\cos(2\pi f_0t+\varphi_0)$ e l'esponenziale complesso $Ae^{i2\pi f_0t}$ (periodici, a potenza finita), il gradino $\mathbf 1(t)$ e il segno, e gli impulsi a energia finita: $\operatorname{rect}$ (area $D$), $\operatorname{tri}$, $\operatorname{sinc}$ (area $1$), la gaussiana $e^{-\pi t^2}$ e gli esponenziali smorzati. Per ciascuno si sanno a memoria forma, area ed energia; gli altri segnali si ottengono da questi con traslazioni, scalature, somme e differenze.Segnali notevoli - gradino, rect, tri, sinc ed esponenziali →.

Convenzioni delle dispense: un interpolatore Z(T)→R\mathbb Z(T)\to\mathbb R con risposta impulsiva gg opera così s~(t)=∑nT g(t−nT) s(nT)=∑ns(nT) g0(t−nT),g0(t)=T g(t)  (funzione interpolatrice),\tilde s(t)=\sum_{n}T\,g(t-nT)\,s(nT)=\sum_ns(nT)\,g_0(t-nT),\qquad g_0(t)=T\,g(t)\ \ \text{(funzione interpolatrice)}, e in frequenza S~(f)=G(f) S(f)\tilde S(f)=G(f)\,S(f) con SS periodica e GG no. Qui tri⁡(x)=1−∣x∣\operatorname{tri}(x)=1-\lvert x\rvert per ∣x∣<1\lvert x\rvert<1, rect⁡(x)=1\operatorname{rect}(x)=1 per ∣x∣<12\lvert x\rvert<\frac12.

(1) Cascata di interpolatore e filtro (Es. 13.3A)

Nel tempo. L'ingresso è x(nT)x(nT). Il primo blocco (interpolatore con g1g_1) dà x0(t)=∑nT g1(t−nT) x(nT),t∈R.x_0(t)=\sum_nT\,g_1(t-nT)\,x(nT),\qquad t\in\mathbb R. Il secondo blocco è un filtro ordinario su R\mathbb R: y=g2∗x0y=g_2*x_0, cioè y(t)=∫g2(t−u) x0(u) duy(t)=\int g_2(t-u)\,x_0(u)\,du. Per la linearità del filtro si può portare la convoluzione dentro la somma (lo scalare T x(nT)T\,x(nT) esce dall'operazione): y(t)=∑nT x(nT) [g2∗g1(⋅−nT)](t).y(t)=\sum_nT\,x(nT)\,\big[g_2*g_1(\cdot-nT)\big](t). Per l'invarianza temporale, convolvere con g2g_2 una funzione ritardata di nTnT dà la convoluzione ritardata di nTnT: [g2∗g1(⋅−nT)](t)=(g1∗g2)(t−nT)\left[g_2*g_1(\cdot-nT)\right](t)=(g_1*g_2)(t-nT) (la convoluzione è commutativa, ConvoluzioneLa convoluzione $x*y(t)=\int x(u),y(t-u),du$ combina due segnali ribaltando e traslando il secondo, moltiplicando e integrando. È commutativa, associativa, lineare; l'area del risultato è il prodotto delle aree; l'estensione è la somma delle estensioni (estremo con estremo); l'impulso $\delta$ è l'elemento neutro; la convoluzione con il gradino integra. Per due segnali periodici di uguale periodo si usa la convoluzione ciclica (integrale su un periodo). È l'operazione del filtraggio: l'uscita di un filtro è la convoluzione dell'ingresso con la risposta impulsiva.Convoluzione →). Quindi y(t)=∑nT (g1∗g2)(t−nT) x(nT),y(t)=\sum_nT\,(g_1*g_2)(t-nT)\,x(nT), che è proprio la relazione ingresso-uscita di un interpolatore con risposta impulsiva g=g1∗g2g=g_1*g_2. ■\blacksquare

In frequenza (controllo): il primo blocco dà X0(f)=G1(f)X(f)X_0(f)=G_1(f)X(f) con XX periodica; il filtro dà Y(f)=G2(f)X0(f)=G1(f)G2(f)X(f)Y(f)=G_2(f)X_0(f)=G_1(f)G_2(f)X(f). La risposta in frequenza della cascata è il prodotto G=G1G2G=G_1G_2, che è la trasformata di g1∗g2g_1*g_2 ✓. In termini di funzione interpolatrice: g0=T (g1∗g2)g_0=T\,(g_1*g_2).

(2) Il caso triangolo + rettangolo (Es. 13.3B)

Ampiezze. Il triangolo g1(t)=A1tri⁡(t/D1)g_1(t)=A_1\operatorname{tri}(t/D_1) con D1=T/2D_1=T/2 vale A1A_1 in t=0t=0 e si annulla per ∣t∣≥T/2\lvert t\rvert\ge T/2 (area A1D1=A1T/2A_1D_1=A_1T/2). Il rettangolo g2(t)=A2rect⁡(t/T)g_2(t)=A_2\operatorname{rect}(t/T) vale A2A_2 per ∣t∣<T/2\lvert t\rvert<T/2 (area A2TA_2T). Si pone C=A1A2C=A_1A_2.

Convoluzione. g(t)=g1∗g2(t)=C∫tri⁡ ⁣(τD1)rect⁡ ⁣(t−τT)dτg(t)=g_1*g_2(t)=C\displaystyle\int\operatorname{tri}\!\left(\frac\tau{D_1}\right)\operatorname{rect}\!\left(\frac{t-\tau}{T}\right)d\tau. Il rettangolo è 11 per τ∈(t−T2, t+T2)\tau\in\left(t-\frac T2,\,t+\frac T2\right): la convoluzione calcola l'area del triangolo che cade dentro questa "finestra" di lunghezza TT. Il triangolo ha supporto [−T2,T2]\left[-\frac T2,\frac T2\right], quindi gg ha supporto [−T,T][-T,T] ed è pari (convoluzione di due funzioni pari). Si calcola per t≥0t\ge0.

  • Caso 0≤t≤T20\le t\le\frac T2. La finestra parte da a=t−T2∈[−T2,0]a=t-\frac T2\in\left[-\frac T2,0\right] e comprende la fine del triangolo: l'area è quella totale D1D_1 meno la parte a sinistra di aa. Su [−D1,0]\left[-D_1,0\right] il triangolo vale 1+τD11+\frac\tau{D_1}, quindi ∫−D1a(1+τD1)dτ=(a+D1)22D1=t22D1=t2T,\int_{-D_1}^{a}\left(1+\frac\tau{D_1}\right)d\tau=\frac{(a+D_1)^2}{2D_1}=\frac{t^2}{2D_1}=\frac{t^2}{T}, perché a+D1=t−T2+T2=ta+D_1=t-\frac T2+\frac T2=t e 2D1=T2D_1=T. Perciò g(t)=C[T2−t2T]=C T2[1−2(tT)2].g(t)=C\left[\frac T2-\frac{t^2}T\right]=C\,\frac T2\left[1-2\left(\frac tT\right)^2\right].
  • Caso T2≤t≤T\frac T2\le t\le T. Ora a=t−T2∈[0,T2]a=t-\frac T2\in\left[0,\frac T2\right]: la finestra taglia via tutta la parte sinistra del triangolo e parte da aa. Su [0,D1][0,D_1] il triangolo vale 1−τD11-\frac\tau{D_1}, e ∫aD1(1−τD1)dτ=(D1−a)22D1=(T−t)2Tpercheˊ D1−a=T−t,\int_a^{D_1}\left(1-\frac\tau{D_1}\right)d\tau=\frac{(D_1-a)^2}{2D_1}=\frac{(T-t)^2}{T}\quad\text{perché }D_1-a=T-t, quindi g(t)=C (T−t)2T=C T2⋅2(1−tT)2.g(t)=C\,\frac{(T-t)^2}{T}=C\,\frac T2\cdot2\left(1-\frac tT\right)^2.
  • Caso t>Tt>T: la finestra non tocca più il triangolo, g=0g=0.

Funzione interpolatrice. g0=T gg_0=T\,g vale in t=0t=0: g0(0)=C T22g_0(0)=C\,\dfrac{T^2}2. Poiché la funzione interpolatrice deve valere 11 nell'origine (condizione di corretta interpolazione, g0(0)=1g_0(0)=1) si deve avere C=A1A2=2T2,C=A_1A_2=\frac{2}{T^2}, che con il quanto T=1T=1 della dispensa dà A1A2=2A_1A_2=2, il dato del testo. (Per un quanto qualsiasi la condizione dimensionale è A1A2=2/T2A_1A_2=2/T^2: gg ha le dimensioni di 1/tempo1/\text{tempo}, g0g_0 è adimensionale.) Con questo CC, i fattori CT2⋅T=1C\frac{T}{2}\cdot T=1 e g0(t)={1−2(tT)2∣t∣≤T22(1−∣t∣T)2T2<∣t∣≤T0∣t∣>T,g_0(t)=\begin{cases}1-2\left(\dfrac tT\right)^2&\lvert t\rvert\le\dfrac T2\\[8pt]2\left(1-\dfrac{\lvert t\rvert}T\right)^2&\dfrac T2<\lvert t\rvert\le T\\[8pt]0&\lvert t\rvert>T,\end{cases} cioè esattamente la (13.22). ■\blacksquare

Controlli sulla g0g_0 ottenuta.

  • Continuità in ±T/2\pm T/2: dal primo ramo 1−2⋅14=121-2\cdot\frac14=\frac12; dal secondo 2(1−12)2=122\left(1-\frac12\right)^2=\frac12 ✓.
  • Continuità della derivata: in t=T2t=\frac T2 il primo ramo ha pendenza −4tT2=−2T-\frac{4t}{T^2}=-\frac2T e il secondo −4T(1−tT)=−2T-\frac4T\left(1-\frac tT\right)=-\frac2T ✓; in t=Tt=T il secondo ramo ha pendenza 00 (raccordo con lo zero) ✓. In t=0t=0 la pendenza è 00 per simmetria. È la proprietà dei "tre archi di parabola ottenuti imponendo la continuità della derivata".
  • Corretta interpolazione: g0(0)=1g_0(0)=1 e g0(±T)=2(1−1)2=0g_0(\pm T)=2(1-1)^2=0, g0(nT)=0g_0(nT)=0 per ∣n∣≥1\lvert n\rvert\ge1 ✓ (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 →): l'uscita passa per i campioni.
  • Somma delle traslate: per t∈[0,T]t\in[0,T] contribuiscono g0(t)g_0(t) e g0(t−T)g_0(t-T). Per t∈[0,T2]t\in\left[0,\frac T2\right]: [1−2t2T2]+2(1−T−tT)2=1−2t2T2+2t2T2=1\left[1-2\frac{t^2}{T^2}\right]+2\left(1-\frac{T-t}{T}\right)^2=1-2\frac{t^2}{T^2}+2\frac{t^2}{T^2}=1 ✓ (per t∈[T2,T]t\in\left[\frac T2,T\right] si ha 2(1−tT)2+[1−2(1−tT)2]=12\left(1-\frac tT\right)^2+\left[1-2\left(1-\frac tT\right)^2\right]=1). Quindi ∑ng0(t−nT)=1\sum_ng_0(t-nT)=1 per ogni tt: l'interpolatore riproduce i segnali costanti.
  • Risposta in frequenza: G1(f)=A1D1sinc⁡2(D1f)G_1(f)=A_1D_1\operatorname{sinc}^2(D_1f), G2(f)=A2Tsinc⁡(Tf)G_2(f)=A_2T\operatorname{sinc}(Tf), quindi con C=2/T2C=2/T^2 G(f)=G1G2=2T2⋅T2⋅Tsinc⁡2 ⁣(Tf2)sinc⁡(Tf)=sinc⁡2 ⁣(Tf2)sinc⁡(Tf).G(f)=G_1G_2=\frac{2}{T^2}\cdot\frac T2\cdot T\operatorname{sinc}^2\!\left(\frac{Tf}2\right)\operatorname{sinc}(Tf)=\operatorname{sinc}^2\!\left(\frac{Tf}2\right)\operatorname{sinc}(Tf). Vale G(0)=1G(0)=1 (area di gg uguale a 11) e il fattore sinc⁡(Tf)\operatorname{sinc}(Tf) si annulla in f=kFcf=kF_c, k≠0k\ne0, con Fc=1/TF_c=1/T: cancella il centro delle repliche dello spettro periodico S(f)S(f), e il fattore sinc⁡2(Tf2)\operatorname{sinc}^2\left(\frac{Tf}{2}\right) le attenua ulteriormente (zeri doppi in f=2kFcf=2kF_c).

Grafico interattivo: Le due risposte impulsive per T = 1: g1(t) = 2·tri(2t) (triangolo di base T, altezza 2, A1 = 2) e g2(t) = rect(t) (rettangolo di durata T, altezza 1, A2 = 1), con A1·A2 = 2

Grafico interattivo: Funzione interpolatrice (13.22) per T = 1, ottenuta come T·(g1∗g2): 1 − 2t² per |t| ≤ 1/2, 2(1 − |t|)² per 1/2 < |t| ≤ 1; vale 1 in 0 e 0 in ±1

Grafico interattivo: Somma delle traslate g0(t), g0(t−1), g0(t+1) (T = 1): sempre 1, perché le tre parabole si compensano; in t = 0 e t = ±1 passano per i campioni

(3) Verifica numerica

Si discretizza il tempo con passo Δt=0,0005\Delta t=0{,}0005 (con T=1T=1), si prende una sequenza casuale di 9 campioni, si fa passare nel primo interpolatore (g1=2tri⁡(2t)g_1=2\operatorname{tri}(2t)), poi si convolve con g2=rect⁡(t)g_2=\operatorname{rect}(t), e si confronta con l'interpolatore diretto con la g0g_0 della (13.22):

python
import numpy as np
T, dt = 1.0, 0.0005
t = np.arange(-4, 13, dt)
g1 = lambda x: 2 * np.maximum(0, 1 - np.abs(x) / (T / 2))   # A1 = 2, D1 = T/2
k = np.arange(-T / 2, T / 2 + dt / 2, dt)                      # asse dei tempi di g2
g2 = np.where(np.abs(k) < T / 2, 1.0, 0.0)                     # A2 = 1, D2 = T  (A1*A2 = 2)

def g0(x):                                                     # funzione interpolatrice (13.22)
    a = np.abs(x) / T
    return np.where(a <= .5, 1 - 2 * a**2, np.where(a <= 1, 2 * (1 - a)**2, 0.0))

rng = np.random.default_rng(1)
s = rng.normal(size=9)                                         # 9 campioni casuali
x0 = sum(T * g1(t - n * T) * s[n] for n in range(9))            # uscita del primo interpolatore
y = np.convolve(x0, g2, mode="same") * dt                       # poi il filtro g2: convoluzione
y_dir = sum(s[n] * g0(t - n * T) for n in range(9))             # interpolatore diretto con g0
print(np.abs(y - y_dir).max(), np.abs(y_dir).max())            # 0.0007  1.303

La moltiplicazione per dt serve a trasformare la somma discreta nell'integrale di convoluzione. L'errore massimo è 7⋅10−47\cdot10^{-4} su un'ampiezza di 1,301{,}30 (è l'errore di discretizzazione dei bordi del rettangolo, proporzionale a Δt\Delta t). Sempre numericamente, la convoluzione g1∗g2g_1*g_2 vale in t=0, 0,25, 0,5, 0,75, 1t=0,\ 0{,}25,\ 0{,}5,\ 0{,}75,\ 1: Tg=1; 0,8747; 0,4995; 0,1247; 0T g=1;\ 0{,}8747;\ 0{,}4995;\ 0{,}1247;\ 0, contro la (13.22) 1; 0,875; 0,5; 0,125; 01;\ 0{,}875;\ 0{,}5;\ 0{,}125;\ 0 ✓. Con A1A2=2A_1A_2=2 e un quanto diverso da 11 (provati T=0,25T=0{,}25 e T=2T=2) il confronto fallisce (scarto 0,940{,}94 e 3,03{,}0), mentre con A1A2=2/T2A_1A_2=2/T^2 (3232 e 0,50{,}5) riesce a 10−910^{-9}: conferma che il dato del testo A1A2=2A_1A_2=2 è scritto per T=1T=1.

Errori tipici.

  • Dimenticare che g0=T gg_0=T\,g: la risposta impulsiva g=g1∗g2g=g_1*g_2 ha area 11 e valore C T/2=1/TC\,T/2=1/T nell'origine, non 11.
  • Calcolare male i casi della convoluzione: la finestra del rettangolo ha larghezza TT e centro in tt; i due rami si scambiano in ∣t∣=T/2\lvert t\rvert=T/2 perché il triangolo ha semi-base T/2T/2.
  • Credere che l'interpolatore di (13.22) sia quello "parabolico" della (13.20), g0=[1−(t/T)2]rect⁡(t/2T)g_0=\left[1-(t/T)^2\right]\operatorname{rect}(t/2T): quella ha un solo arco di parabola e in ∣t∣=T\lvert t\rvert=T arriva a zero con pendenza ∓2/T\mp2/T (spigolo), mentre la (13.22) si raccorda con derivata continua.

Vedi anche: Esercizio - area ed energia di un segnale campionato e, per la materia gemella, Teorema del campionamento, interpolazione e aliasingTeorema di Shannon: un segnale a banda limitata $\omega_M$ si ricostruisce esattamente dai campioni se $T_c<\pi/\omega_M$ (frequenza di campionamento maggiore di quella di Nyquist $2f_{\max}$), con la formula di interpolazione ideale $x(t)=\sum_nx(nT_c)\operatorname{sinc}\left(\frac{t-nT_c}{T_c}\right)$. Sotto Nyquist c'è aliasing: le frequenze alte si confondono con quelle basse e l'informazione è persa.Teorema del campionamento, interpolazione e aliasing →.

Teoria collegata