Salta al contenuto
Note per Studenti Esercizio - modulazione discreta e campionamento di un sinc

Esercizio - modulazione discreta e campionamento di un sinc

In questa pagina 5

Testo (dispense del corso Teoria dei Segnali, UniPD, Es. 6.3E e 6.4A).

  • 6.3E Provare la regola sulla modulazione discreta s(nT)cos⁡(2πf0nT) → F  12S(f−f0)+12S(f+f0)s(nT)\cos(2\pi f_0nT)\ \xrightarrow{\ \mathcal F\ }\ \tfrac12S(f-f_0)+\tfrac12S(f+f_0) e quindi applicarla al segnale s(nT)=10(nT)s(nT)=\mathbf 1_0(nT) (gradino discreto, con 10(0)=1\mathbf 1_0(0)=1).
  • 6.4A Calcolare, applicando il Teorema 6.1, la trasformata di Fourier dell'impulso di tipo sinc discreto s(nT)=A0sinc⁡(nF0T)s(nT)=A_0\operatorname{sinc}(nF_0T).

Teoria usata: 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 → (definizione, traslazione in frequenza, trasformata del segno e del gradino, Teorema 6.1), Segnali a tempo discretoUn segnale a tempo discreto è una funzione complessa $s(nT)$ definita sui multipli interi del quanto temporale $T$ (insieme $\mathbb Z(T)$, velocità $F_p=1/T$). Le definizioni sono quelle dei segnali continui con la somma al posto dell'integrale e il quanto $T$ al posto di $dt$: area $\sum T,s(nT)$, energia $\sum T|s(nT)|^2$, convoluzione $\sum T,x(kT)y(nT-kT)$. L'impulso ideale discreto vale $1/T$ nell'origine. Esponenziali e sinusoidi discreti sono periodici solo se $f_0/F_p$ è razionale e hanno frequenza ambigua a meno di multipli di $F_p$. I segnali periodici con periodo $NT$ sono descritti da $N$ valori e si trattano al calcolatore.Segnali a tempo discreto →, Numeri complessiI numeri complessi estendono i reali introducendo l'unità immaginaria $i$ ($i^2 = -1$) e possono essere rappresentati in forma algebrica, trigonometrica o polare. Tramite la formula di Eulero e le proprietà del modulo e dell'argomento, è possibile calcolare agilmente prodotti, potenze e radici ennesime.Numeri complessi → (Eulero), e per 6.4A 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 → e Trasformata di FourierLa trasformata di Fourier $S(f)=\int s(t)e^{-i2\pi ft}dt$ associa a un segnale continuo (anche aperiodico) la sua rappresentazione in frequenza; l'antitrasformata $s(t)=\int S(f)e^{i2\pi ft}df$ lo ricostruisce, perché gli esponenziali $e^{i2\pi ft}$ sono ortogonali su tutto $\mathbb R$ ($\int e^{i2\pi ft}dt=\delta(f)$). Per un segnale reale $S(-f)=S^(f)$. Si calcola per i segnali notevoli (rect $\leftrightarrow$ sinc, $e^{-\alpha t}\mathbf 1(t)\leftrightarrow\frac1{\alpha+i2\pi f}$, gaussiana, $\delta\leftrightarrow1$, $1\leftrightarrow\delta$, gradino) e per i segnali periodici, la cui trasformata è un treno di impulsi di area $S_n$ in $nF$.Trasformata di Fourier →.

Promemoria: quanto TT e trasformata

Con Fp=1/TF_p=1/T, S(f)=∑nT s(nT)e−i2πfnTS(f)=\sum_nT\,s(nT)e^{-i2\pi fnT} è periodica di periodo FpF_p. Il treno di impulsi δFp(f)=rep⁡Fpδ(f)=∑kδ(f−kFp)\delta_{F_p}(f)=\operatorname{rep}_{F_p}\delta(f)=\sum_k\delta(f-kF_p) è la trasformata del segnale costante 11 (regola (6.14): ∑nT e−i2πfnT=δFp(f)\sum_nT\,e^{-i2\pi fnT}=\delta_{F_p}(f), serie che non converge in senso ordinario ma esiste come distribuzione). La traslazione in frequenza (Tab. 6.1, regola 5) è s(nT)ei2πf0nT→FS(f−f0)s(nT)e^{i2\pi f_0nT}\xrightarrow{\mathcal F}S(f-f_0): si dimostra in una riga, ∑nT s(nT)ei2πf0nTe−i2πfnT=∑nT s(nT)e−i2π(f−f0)nT=S(f−f0)\sum_nT\,s(nT)e^{i2\pi f_0nT}e^{-i2\pi fnT}=\sum_nT\,s(nT)e^{-i2\pi(f-f_0)nT}=S(f-f_0).

Es. 6.3E: la regola di modulazione

Dimostrazione. Per le formule di Eulero (Numeri complessiI numeri complessi estendono i reali introducendo l'unità immaginaria $i$ ($i^2 = -1$) e possono essere rappresentati in forma algebrica, trigonometrica o polare. Tramite la formula di Eulero e le proprietà del modulo e dell'argomento, è possibile calcolare agilmente prodotti, potenze e radici ennesime.Numeri complessi →), cos⁡(2πf0nT)=12ei2πf0nT+12e−i2πf0nT\cos(2\pi f_0nT)=\frac12e^{i2\pi f_0nT}+\frac12e^{-i2\pi f_0nT}. Quindi

s(nT)cos⁡(2πf0nT)=12 s(nT)ei2πf0nT+12 s(nT)e−i2πf0nT.s(nT)\cos(2\pi f_0nT)=\tfrac12\,s(nT)e^{i2\pi f_0nT}+\tfrac12\,s(nT)e^{-i2\pi f_0nT}.

Per la linearità e la traslazione in frequenza (la prima con f0f_0, la seconda con −f0-f_0) la trasformata è

12S(f−f0)+12S(f+f0).■\tfrac12S(f-f_0)+\tfrac12S(f+f_0).\qquad\blacksquare

Modulare con un coseno sdoppia lo spettro: due copie dimezzate, centrate in ±f0\pm f_0. Qui f0f_0 è un numero reale qualsiasi (non serve che sia legato a FpF_p): SS è già periodica, quindi le due copie sono periodiche come lo era SS.

Prova su un esempio. Per s2s_2 (tre campioni uguali ad A0A_0, Es. 6.3A) S2(f)=A0T[1+2cos⁡(2πfT)]S_2(f)=A_0T[1+2\cos(2\pi fT)]; moltiplicando per cos⁡(2πf0nT)\cos(2\pi f_0nT) e sommando i tre termini a mano si trova lo stesso di 12S2(f−f0)+12S2(f+f0)\frac12S_2(f-f_0)+\frac12S_2(f+f_0) (confermato numericamente nel Controllo).

Applicazione al gradino discreto

Qui il segnale è s=10(nT)s=\mathbf 1_0(nT), e serve la sua trasformata U0(f)U_0(f). Il gradino non è sommabile, la trasformata contiene impulsi; la si ricava a pezzi.

1. La trasformata del segno discreto. sgn⁡(nT)\operatorname{sgn}(nT) vale 11 per n>0n>0, 00 per n=0n=0, −1-1 per n<0n<0. Il suo incremento Δs(nT)=s(nT)−s((n−1)T)\Delta s(nT)=s(nT)-s((n-1)T) vale: n=0n=0: 0−(−1)=10-(-1)=1; n=1n=1: 1−0=11-0=1; altrove 00. Cioè Δs(nT)=Tδ(nT)+Tδ(nT−T)\Delta s(nT)=T\delta(nT)+T\delta(nT-T) (l'impulso ideale ha altezza 1T\frac1T, il coefficiente TT dà altezza 11). La trasformata dell'incremento è ΔS=S(f) (1−e−i2πfT)\Delta S=S(f)\,(1-e^{-i2\pi fT}) (regola di traslazione), e anche, dal lato sinistro, T (1+e−i2πfT)T\,(1+e^{-i2\pi fT}). Posto θ=2πfT\theta=2\pi fT:

S(f)=T 1+e−iθ1−e−iθ=T eiθ/2+e−iθ/2eiθ/2−e−iθ/2=T 2cos⁡(θ/2)2isin⁡(θ/2)=−iTcot⁡(πfT).S(f)=T\,\frac{1+e^{-i\theta}}{1-e^{-i\theta}}=T\,\frac{e^{i\theta/2}+e^{-i\theta/2}}{e^{i\theta/2}-e^{-i\theta/2}}=T\,\frac{2\cos(\theta/2)}{2i\sin(\theta/2)}=-iT\cot(\pi fT).

(Alla divisione per 1−e−iθ1-e^{-i\theta}, che si annulla per ff multiplo di FpF_p, si accompagna la possibilità di aggiungere un treno di δFp\delta_{F_p}, perché l'incremento cancella le costanti; ma il segno ha media nulla ed è dispari, quindi la sua trasformata è dispari e quel termine pari non c'è.)

2. Decomposizione del gradino. Si verifica punto per punto:

10(nT)=12sgn⁡(nT)+12+T2 δ(nT).\mathbf 1_0(nT)=\tfrac12\operatorname{sgn}(nT)+\tfrac12+\tfrac T2\,\delta(nT).

Per n>0n>0: 12+12+0=1\frac12+\frac12+0=1. Per n<0n<0: −12+12=0-\frac12+\frac12=0. Per n=0n=0: 0+12+T2⋅1T=10+\frac12+\frac T2\cdot\frac1T=1 (ed è proprio 10(0)=1\mathbf 1_0(0)=1).

3. Trasformata termine per termine.

termine trasformata
12sgn⁡(nT)\frac12\operatorname{sgn}(nT) −iT2cot⁡(πfT)-\frac{iT}2\cot(\pi fT)
12\frac12 (costante) 12δFp(f)\frac12\delta_{F_p}(f)
T2δ(nT)\frac T2\delta(nT) T2\frac T2 (perché δ(nT)→1\delta(nT)\to1)

Sommando:

U0(f)=12δFp(f)+T2[1−icot⁡(πfT)]\boxed{U_0(f)=\tfrac12\delta_{F_p}(f)+\frac T2\bigl[1-i\cot(\pi fT)\bigr]}

che è la (6.18) del testo [−iT2cot⁡(πfT)+12δFp(f)+12T-\frac{iT}2\cot(\pi fT)+\frac12\delta_{F_p}(f)+\frac12T] e coincide anche con la forma che compare nella (6.9). La parte "regolare" (fuori dai multipli di FpF_p) ha parte reale costante T2\frac T2 e parte immaginaria −T2cot⁡(πfT)-\frac T2\cot(\pi fT) che diverge in f=0f=0 e nei multipli di FpF_p, dove sta il treno di impulsi 12δFp\frac12\delta_{F_p}.

Controllo del peso 12\frac12 dell'impulso. Dall'antitrasformata in n=0n=0: 10(0)=1=∫0FpU0(f) df\mathbf 1_0(0)=1=\int_0^{F_p}U_0(f)\,df. La parte reale regolare dà T2⋅Fp=12\frac T2\cdot F_p=\frac12; la parte immaginaria (dispari, a valor principale) dà 00; resta 12\frac12 che deve venire dall'impulso: peso 12\frac12, come nella formula. ✓

Controllo numerico della parte regolare. Il gradino smorzato an10(n)a^n\mathbf 1_0(n) con a<1a<1 ha trasformata (6.17) T1−ae−iθ\frac{T}{1-ae^{-i\theta}}; per a→1a\to1 e θ≠0\theta\ne0 si ha T1−e−iθ=T2[1−icot⁡(θ/2)]\frac{T}{1-e^{-i\theta}}=\frac T2\bigl[1-i\cot(\theta/2)\bigr] (stesso calcolo di sopra, 11−e−iθ=eiθ/22isin⁡(θ/2)\frac1{1-e^{-i\theta}}=\frac{e^{i\theta/2}}{2i\sin(\theta/2)}). Esempio con T=1T=1: fT=14fT=\frac14 dà 12(1−i)\frac12(1-i); fT=12fT=\frac12 dà 12\frac12; fT=18fT=\frac18 dà 12(1−2,4142 i)=0,5−1,2071i\frac12(1-2{,}4142\,i)=0{,}5-1{,}2071i.

Grafico interattivo: Parte regolare di U0(f) per T = 1: parte reale costante T/2 = 0,5 e parte immaginaria -(1/2) cot(πf), che diverge nei multipli di Fp = 1 (dove c'è anche l'impulso di peso 1/2)

4. Gradino modulato. Per la regola di modulazione, con s=10s=\mathbf 1_0:

10(nT)cos⁡(2πf0nT) →F 12U0(f−f0)+12U0(f+f0)\mathbf 1_0(nT)\cos(2\pi f_0nT)\ \xrightarrow{\mathcal F}\ \tfrac12U_0(f-f_0)+\tfrac12U_0(f+f_0)

(è la riga "10(n)cos⁡(2πf0nT)\mathbf 1_0(n)\cos(2\pi f_0nT)" della tabella delle coppie). Esplicitando:

=14[δFp(f−f0)+δFp(f+f0)]+T4[2−icot⁡π(f−f0)T−icot⁡π(f+f0)T].=\tfrac14\bigl[\delta_{F_p}(f-f_0)+\delta_{F_p}(f+f_0)\bigr]+\frac T4\Bigl[2-i\cot\pi(f-f_0)T-i\cot\pi(f+f_0)T\Bigr].

La somma delle due cotangenti si semplifica: con A=π(f−f0)TA=\pi(f-f_0)T, B=π(f+f0)TB=\pi(f+f_0)T si ha cot⁡A+cot⁡B=sin⁡(A+B)sin⁡Asin⁡B\cot A+\cot B=\frac{\sin(A+B)}{\sin A\sin B}, e sin⁡Asin⁡B=12[cos⁡(A−B)−cos⁡(A+B)]=12[cos⁡2πf0T−cos⁡2πfT]\sin A\sin B=\frac12[\cos(A-B)-\cos(A+B)]=\frac12[\cos2\pi f_0T-\cos2\pi fT], sin⁡(A+B)=sin⁡2πfT\sin(A+B)=\sin2\pi fT. Perciò la parte regolare è

T2[1−i sin⁡(2πfT)cos⁡(2πf0T)−cos⁡(2πfT)],\frac T2\left[1-i\,\frac{\sin(2\pi fT)}{\cos(2\pi f_0T)-\cos(2\pi fT)}\right],

che diverge in f=±f0f=\pm f_0 (modulo FpF_p), dove ci sono i due impulsi di peso 14\frac14. Esempio: T=0,5T=0{,}5, f0=0,2Fpf_0=0{,}2F_p, fT=0,3fT=0{,}3 (f=0,3Fpf=0{,}3F_p): la formula dà 0,2500−0,3847i0{,}2500-0{,}3847i.

Es. 6.4A: la trasformata di A0sinc⁡(nF0T)A_0\operatorname{sinc}(nF_0T) con il Teorema 6.1

Teorema 6.1. Se s(nT)=s0(nT)s(nT)=s_0(nT) è il campionamento (con passo TT) di un segnale continuo s0(t)s_0(t) di trasformata S0(f)S_0(f), allora

S(f)=rep⁡FpS0(f)=∑k=−∞+∞S0(f−kFp),Fp=1T.S(f)=\operatorname{rep}_{F_p}S_0(f)=\sum_{k=-\infty}^{+\infty}S_0(f-kF_p),\qquad F_p=\frac1T .

Il fattore TT nella definizione di SS è proprio quello che fa avere alle repliche guadagno 11 (senza il TT avrebbero guadagno 1T\frac1T). Intuizione: ei2πλnTe^{i2\pi\lambda nT} e ei2π(λ+kFp)nTe^{i2\pi(\lambda+kF_p)nT} coincidono sui campioni, quindi le frequenze λ+kFp\lambda+kF_p del segnale continuo si "sommano" sulla stessa frequenza del segnale discreto.

1. Il segnale continuo. s0(t)=A0sinc⁡(F0t)s_0(t)=A_0\operatorname{sinc}(F_0t), con F0>0F_0>0. Dalla coppia continua rect⁡(t/τ)↔τsinc⁡(fτ)\operatorname{rect}(t/\tau)\leftrightarrow\tau\operatorname{sinc}(f\tau) e dalla simmetria (Trasformata di FourierLa trasformata di Fourier $S(f)=\int s(t)e^{-i2\pi ft}dt$ associa a un segnale continuo (anche aperiodico) la sua rappresentazione in frequenza; l'antitrasformata $s(t)=\int S(f)e^{i2\pi ft}df$ lo ricostruisce, perché gli esponenziali $e^{i2\pi ft}$ sono ortogonali su tutto $\mathbb R$ ($\int e^{i2\pi ft}dt=\delta(f)$). Per un segnale reale $S(-f)=S^*(f)$. Si calcola per i segnali notevoli (rect $\leftrightarrow$ sinc, $e^{-\alpha t}\mathbf 1(t)\leftrightarrow\frac1{\alpha+i2\pi f}$, gaussiana, $\delta\leftrightarrow1$, $1\leftrightarrow\delta$, gradino) e per i segnali periodici, la cui trasformata è un treno di impulsi di area $S_n$ in $nF$.Trasformata di Fourier →): sinc⁡(F0t)↔F1F0rect⁡(fF0)\operatorname{sinc}(F_0t)\xleftrightarrow{\mathcal F}\frac1{F_0}\operatorname{rect}\left(\frac f{F_0}\right) (rect largo F0F_0 e alto 1F0\frac1{F_0}). Quindi

S0(f)=A0F0rect⁡(fF0).S_0(f)=\frac{A_0}{F_0}\operatorname{rect}\left(\frac f{F_0}\right).

2. Il campionamento. s(nT)=s0(nT)=A0sinc⁡(nF0T)s(nT)=s_0(nT)=A_0\operatorname{sinc}(nF_0T) è il segnale richiesto. Per il Teorema 6.1

S(f)=A0F0∑k=−∞+∞rect⁡(f−kFpF0)=A0F0rep⁡Fprect⁡(fF0).\boxed{S(f)=\frac{A_0}{F_0}\sum_{k=-\infty}^{+\infty}\operatorname{rect}\left(\frac{f-kF_p}{F_0}\right)=\frac{A_0}{F_0}\operatorname{rep}_{F_p}\operatorname{rect}\left(\frac f{F_0}\right)}.

È l'Es. 6.3C moltiplicato per A0A_0 (la linearità), ottenuto qui in una riga invece che con l'antitrasformata.

3. I tre casi. Il rect ha larghezza F0F_0, le repliche sono distanti FpF_p:

Esempio numerico con T=1T=1 (Fp=1F_p=1) e A0=2A_0=2:

F0F_0 altezza A0F0\frac{A_0}{F_0} S(f)S(f)
0,750{,}75 2,6672{,}667 2,6672{,}667 per ∣f∣<0,375\lvert f\rvert<0{,}375, 00 per 0,375<∣f∣<0,6250{,}375<\lvert f\rvert<0{,}625, e così via
11 22 costante 22
1,51{,}5 1,3331{,}333 1,3331{,}333 per ∣f∣<0,25\lvert f\rvert<0{,}25, 2,6672{,}667 per 0,25<∣f∣<0,50{,}25<\lvert f\rvert<0{,}5 (due repliche)

Grafico interattivo: S(f) di A0 sinc(nF0T) per T = 1 (Fp = 1) e A0 = 2: F0 = 0,75 (rect separati), F0 = 1 (costante: le repliche si toccano), F0 = 1,5 (repliche sovrapposte, aliasing)

Energia come controllo. Per Parseval ∑nT ∣s(nT)∣2=∫0Fp∣S∣2df\sum_nT\,|s(nT)|^2=\int_0^{F_p}|S|^2df. Per F0≤FpF_0\le F_p vale A02/F0A_0^2/F_0 (uguale all'energia del segnale continuo A0sinc⁡(F0t)A_0\operatorname{sinc}(F_0t): nessuna perdita). Per F0=1,5F_0=1{,}5, T=1T=1, A0=2A_0=2: due strisce di larghezza 12\frac12 con valori 1,3331{,}333 e 2,6672{,}667, quindi ∫∣S∣2=12⋅1,3332+12⋅2,6672=0,889+3,556=4,444\int|S|^2=\frac12\cdot1{,}333^2+\frac12\cdot2{,}667^2=0{,}889+3{,}556=4{,}444, mentre il segnale continuo avrebbe A02/F0=2,667A_0^2/F_0=2{,}667: l'energia dei campioni è maggiore perché le repliche sovrapposte si sommano.

Controllo

python
import numpy as np

T = 0.5
Fp = 1 / T

# ---------- (1) modulazione: s2 (tre campioni, A0 = 2) per cos(2 pi f0 n T)
A0 = 2.0
n = np.arange(-1, 2)
s2 = np.array([A0, A0, A0])
f0 = 0.35 * Fp

def tf(s, n, f):
    f = np.atleast_1d(f)
    return np.array([np.sum(T * s * np.exp(-2j * np.pi * ff * n * T)) for ff in f])

S2 = lambda f: A0 * T * (1 + 2 * np.cos(2 * np.pi * np.asarray(f) * T))
f = np.linspace(-1.5 * Fp, 1.5 * Fp, 301)
lato_sx = tf(s2 * np.cos(2 * np.pi * f0 * n * T), n, f)
lato_dx = 0.5 * S2(f - f0) + 0.5 * S2(f + f0)
print("modulazione di s2:", np.allclose(lato_sx, lato_dx))

# ---------- (2) gradino: decomposizione nel tempo
n = np.arange(-20, 21)
gradino = (n >= 0).astype(float)
sgn = np.sign(n).astype(float)
delta = np.where(n == 0, 1 / T, 0.0)
print("1_0 = sgn/2 + 1/2 + (T/2) delta :", np.allclose(gradino, 0.5 * sgn + 0.5 + (T / 2) * delta))

# ---------- (3) parte regolare di U0: serie regolarizzata a^n 1_0(n) con a -> 1
a = 1 - 1e-5
N = 3_000_000
m = np.arange(0, N)
am = a**m
for ff in np.array([0.1, 0.2, 0.3, 0.45]) * Fp:
    th = 2 * np.pi * ff * T
    serie = np.sum(T * am * np.exp(-1j * th * m))
    formula = T / 2 * (1 - 1j / np.tan(th / 2))
    print("fT = %.2f  serie %.5f%+.5fi   (T/2)(1 - i cot) %.5f%+.5fi" % (ff * T, serie.real, serie.imag, formula.real, formula.imag))

# ---------- (4) gradino modulato: parte regolare T/2 [1 - i sin(th)/(cos(th0) - cos(th))]
f0 = 0.2 * Fp
th0 = 2 * np.pi * f0 * T
for ff in np.array([0.05, 0.1, 0.3, 0.4]) * Fp:
    th = 2 * np.pi * ff * T
    serie = np.sum(T * am * np.cos(th0 * m) * np.exp(-1j * th * m))
    via_U0 = 0.5 * T / 2 * (2 - 1j / np.tan((th - th0) / 2) - 1j / np.tan((th + th0) / 2))
    chiusa = T / 2 * (1 - 1j * np.sin(th) / (np.cos(th0) - np.cos(th)))
    print("fT=%.2f  serie %.4f%+.4fi  via U0 %.4f%+.4fi  chiusa %.4f%+.4fi" % (ff * T, serie.real, serie.imag, via_U0.real, via_U0.imag, chiusa.real, chiusa.imag))

# ---------- (5) peso dell'impulso: 1 = s(0) = int U0 df, e quanta massa sta vicino a f = 0
fgrid = np.linspace(-Fp / 2, Fp / 2, 2_000_001)
U = T / (1 - a * np.exp(-2j * np.pi * fgrid * T))
print("int U df =", np.trapezoid(U, fgrid))
vicino = np.abs(fgrid * T) < 0.02
print("massa oltre T/2 vicino a 0:", np.trapezoid((U.real - T / 2)[vicino], fgrid[vicino]), "(attesa 1/2)")

# ---------- Es. 6.4A: A0 sinc(n F0 T), T = 1, A0 = 2, F0 = 1.5
T, A0, F0 = 1.0, 2.0, 1.5
Fp = 1 / T
def S_rep(f, F0, K=6):
    f = np.atleast_1d(f).astype(float)
    tot = np.zeros_like(f)
    for k in range(-K, K + 1):
        x = np.abs((f - k * Fp) / F0)
        tot += np.where(x < 0.5, 1.0, np.where(np.isclose(x, 0.5), 0.5, 0.0))
    return A0 * tot / F0
mm = np.arange(-300000, 300001)
w = 1 - np.abs(mm) / (mm.max() + 1)                    # finestra triangolare: attenua Gibbs
for ff in (0.1, 0.4):
    serie = np.sum(w * T * A0 * np.sinc(mm * F0 * T) * np.cos(2 * np.pi * ff * mm * T))
    print("f =", ff, " serie:", round(serie, 4), " Teorema 6.1:", S_rep(ff, F0)[0].round(4))
f = np.linspace(-Fp / 2, Fp / 2, 200001)
print("energia: somma", np.sum(T * (A0 * np.sinc(mm * F0 * T))**2), " integrale", np.trapezoid(S_rep(f, F0)**2, f), " A0^2/F0 =", A0**2 / F0)

Risultati (eseguito): la modulazione di s2s_2 è verificata (True); la scomposizione del gradino è vera; la serie regolarizzata coincide con T2[1−icot⁡(πfT)]\frac T2[1-i\cot(\pi fT)] a cinque cifre (per esempio 0,25000−0,76942i0{,}25000-0{,}76942i in fT=0,10fT=0{,}10 con T=0,5T=0{,}5); per il gradino modulato serie, forma via U0U_0 e forma chiusa danno gli stessi numeri (per esempio 0,2500+0,1203i0{,}2500+0{,}1203i in fT=0,05fT=0{,}05 con f0=0,2Fpf_0=0{,}2F_p); ∫U df=1\int U\,df=1 e la massa dell'impulso è 0,49997≃120{,}49997\simeq\frac12; per 6.4A la serie dà 1,33331{,}3333 in f=0,1f=0{,}1 (se F0=1,5F_0=1{,}5 e A0=2A_0=2) e 2,66672{,}6667 in f=0,4f=0{,}4, come il Teorema 6.1; energia 4,4444{,}444 sia come somma sia come integrale, contro A02/F0=2,667A_0^2/F_0=2{,}667.

Errori comuni

  • Dimenticare il 12\frac12 nella modulazione: cos⁡\cos spezza lo spettro in due copie di ampiezza dimezzata.
  • Scrivere la trasformata del gradino senza il treno di impulsi 12δFp\frac12\delta_{F_p}, o con un solo impulso in f=0f=0 invece che in tutti i multipli di FpF_p.
  • Confondere 10(0)=1\mathbf 1_0(0)=1 con il gradino campionato 1(nT)\mathbf 1(nT), che in n=0n=0 varrebbe 12\frac12: la decomposizione con T2δ(nT)\frac T2\delta(nT) vale proprio per 10\mathbf 1_0.
  • Per 6.4A, dimenticare che per F0>FpF_0>F_p le repliche si sovrappongono e si sommano.

Versione ripasso

Testo. 6.3E: modulazione s(nT)cos⁡(2πf0nT)s(nT)\cos(2\pi f_0nT) e applicazione al gradino 10(nT)\mathbf 1_0(nT); 6.4A: trasformata di A0sinc⁡(nF0T)A_0\operatorname{sinc}(nF_0T) con il Teorema 6.1 (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 →, 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 →).

  • 6.3E Eulero + traslazione in frequenza: scos⁡(2πf0nT)→12S(f−f0)+12S(f+f0)s\cos(2\pi f_0nT)\to\frac12S(f-f_0)+\frac12S(f+f_0).
  • Gradino: sgn⁡→−iTcot⁡πfT\operatorname{sgn}\to-iT\cot\pi fT (dall'incremento Δs=Tδ(nT)+Tδ(nT−T)\Delta s=T\delta(nT)+T\delta(nT-T)); 10=12sgn⁡+12+T2δ(nT)\mathbf 1_0=\frac12\operatorname{sgn}+\frac12+\frac T2\delta(nT); U0(f)=12δFp(f)+T2[1−icot⁡πfT]U_0(f)=\frac12\delta_{F_p}(f)+\frac T2[1-i\cot\pi fT] (formula (6.18)). Gradino modulato: 12U0(f−f0)+12U0(f+f0)\frac12U_0(f-f_0)+\frac12U_0(f+f_0), impulsi di peso 14\frac14 in ±f0\pm f_0.
  • 6.4A S=rep⁡FpS0S=\operatorname{rep}_{F_p}S_0 con S0=A0F0rect⁡fF0S_0=\frac{A_0}{F_0}\operatorname{rect}\frac f{F_0}. F0<FpF_0<F_p: rect separati; F0=FpF_0=F_p: S≡A0TS\equiv A_0T; F0>FpF_0>F_p: repliche sommate (aliasing); energia A02F0\frac{A_0^2}{F_0} solo se F0≤FpF_0\le F_p.
  • Errori: 12\frac12 dimenticato; δFp\delta_{F_p} ridotto a un solo impulso; 10(0)\mathbf 1_0(0) confuso con 12\frac12.

Teoria collegata