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 e quindi applicarla al segnale (gradino discreto, con ).
- 6.4A Calcolare, applicando il Teorema 6.1, la trasformata di Fourier dell'impulso di tipo sinc discreto .
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 e trasformata
Con , è periodica di periodo . Il treno di impulsi è la trasformata del segnale costante (regola (6.14): , serie che non converge in senso ordinario ma esiste come distribuzione). La traslazione in frequenza (Tab. 6.1, regola 5) è : si dimostra in una riga, .
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 →), . Quindi
Per la linearità e la traslazione in frequenza (la prima con , la seconda con ) la trasformata è
Modulare con un coseno sdoppia lo spettro: due copie dimezzate, centrate in . Qui è un numero reale qualsiasi (non serve che sia legato a ): è già periodica, quindi le due copie sono periodiche come lo era .
Prova su un esempio. Per (tre campioni uguali ad , Es. 6.3A) ; moltiplicando per e sommando i tre termini a mano si trova lo stesso di (confermato numericamente nel Controllo).
Applicazione al gradino discreto
Qui il segnale è , e serve la sua trasformata . Il gradino non è sommabile, la trasformata contiene impulsi; la si ricava a pezzi.
1. La trasformata del segno discreto. vale per , per , per . Il suo incremento vale: : ; : ; altrove . Cioè (l'impulso ideale ha altezza , il coefficiente dà altezza ). La trasformata dell'incremento è (regola di traslazione), e anche, dal lato sinistro, . Posto :
(Alla divisione per , che si annulla per multiplo di , si accompagna la possibilità di aggiungere un treno di , 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:
Per : . Per : . Per : (ed è proprio ).
3. Trasformata termine per termine.
| termine | trasformata |
|---|---|
| (costante) | |
| (perché ) |
Sommando:
che è la (6.18) del testo [] e coincide anche con la forma che compare nella (6.9). La parte "regolare" (fuori dai multipli di ) ha parte reale costante e parte immaginaria che diverge in e nei multipli di , dove sta il treno di impulsi .
Controllo del peso dell'impulso. Dall'antitrasformata in : . La parte reale regolare dà ; la parte immaginaria (dispari, a valor principale) dà ; resta che deve venire dall'impulso: peso , come nella formula. ✓
Controllo numerico della parte regolare. Il gradino smorzato con ha trasformata (6.17) ; per e si ha (stesso calcolo di sopra, ). Esempio con : dà ; dà ; dà .
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 :
(è la riga "" della tabella delle coppie). Esplicitando:
La somma delle due cotangenti si semplifica: con , si ha , e , . Perciò la parte regolare è
che diverge in (modulo ), dove ci sono i due impulsi di peso . Esempio: , , (): la formula dà .
Es. 6.4A: la trasformata di con il Teorema 6.1
Teorema 6.1. Se è il campionamento (con passo ) di un segnale continuo di trasformata , allora
Il fattore nella definizione di è proprio quello che fa avere alle repliche guadagno (senza il avrebbero guadagno ). Intuizione: e coincidono sui campioni, quindi le frequenze del segnale continuo si "sommano" sulla stessa frequenza del segnale discreto.
1. Il segnale continuo. , con . Dalla coppia continua 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 →): (rect largo e alto ). Quindi
2. Il campionamento. è il segnale richiesto. Per il Teorema 6.1
È l'Es. 6.3C moltiplicato per (la linearità), ottenuto qui in una riga invece che con l'antitrasformata.
3. I tre casi. Il rect ha larghezza , le repliche sono distanti :
- : repliche separate da intervalli vuoti; vale per , altrove. Non c'è aliasing: dai campioni si risale a .
- : le repliche si toccano nei punti (dove valgono per la regola dell'emivalore): costante. Il segnale è , trasformata costante ✓ (è l'Esempio 6.4A del testo, che campiona , cioè ).
- : le repliche si sovrappongono e si sommano. (con sui bordi): uno spettro a "gradini" che non ha più la forma di un rect. È l'aliasing (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 →): per ricostruire dai campioni occorre , e la banda di è , cioè .
Esempio numerico con () e :
| altezza | ||
|---|---|---|
| per , per , e così via | ||
| costante | ||
| per , per (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 . Per vale (uguale all'energia del segnale continuo : nessuna perdita). Per , , : due strisce di larghezza con valori e , quindi , mentre il segnale continuo avrebbe : l'energia dei campioni è maggiore perché le repliche sovrapposte si sommano.
Controllo
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 è verificata (True); la scomposizione del gradino è vera; la serie regolarizzata coincide con a cinque cifre (per esempio in con ); per il gradino modulato serie, forma via e forma chiusa danno gli stessi numeri (per esempio in con ); e la massa dell'impulso è ; per 6.4A la serie dà in (se e ) e in , come il Teorema 6.1; energia sia come somma sia come integrale, contro .
Errori comuni
- Dimenticare il nella modulazione: spezza lo spettro in due copie di ampiezza dimezzata.
- Scrivere la trasformata del gradino senza il treno di impulsi , o con un solo impulso in invece che in tutti i multipli di .
- Confondere con il gradino campionato , che in varrebbe : la decomposizione con vale proprio per .
- Per 6.4A, dimenticare che per le repliche si sovrappongono e si sommano.
Versione ripasso
Testo. 6.3E: modulazione e applicazione al gradino ; 6.4A: trasformata di 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: .
- Gradino: (dall'incremento ); ; (formula (6.18)). Gradino modulato: , impulsi di peso in .
- 6.4A con . : rect separati; : ; : repliche sommate (aliasing); energia solo se .
- Errori: dimenticato; ridotto a un solo impulso; confuso con .