Salta al contenuto
Note per Studenti Esercizio - trasformata di impulsi discreti e teorema di Parseval

Esercizio - trasformata di impulsi discreti e teorema di Parseval

In questa pagina 5

Testo (dispense del corso Teoria dei Segnali, UniPD, Es. 6.3A e 6.3B, con A0A_0 costante reale).

  • 6.3A Valutare le trasformate di Fourier dei segnali s1(nT)={A0n=±10altrove,s2(nT)={A0n=−1,0,10altroves_1(nT)=\begin{cases}A_0&n=\pm1\\0&\text{altrove}\end{cases},\qquad s_2(nT)=\begin{cases}A_0&n=-1,0,1\\0&\text{altrove}\end{cases} e verificare che S1(f)S_1(f) ed S2(f)S_2(f) sono funzioni periodiche di periodo Fp=1/TF_p=1/T, reali e pari.
  • 6.3B Con riferimento all'esercizio precedente, verificare il teorema di Parseval.

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, periodicità, simmetrie, area, Parseval), 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 → (impulso ideale 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 → (formula di Eulero).

Promemoria: la trasformata di un segnale discreto

Con il quanto temporale TT (e Fp=1/TF_p=1/T) la trasformata è

S(f)=∑n=−∞+∞T s(nT) e−i2πfnT,s(nT)=∫0FpS(f) ei2πfnT df.S(f)=\sum_{n=-\infty}^{+\infty}T\,s(nT)\,e^{-i2\pi fnT},\qquad s(nT)=\int_0^{F_p}S(f)\,e^{i2\pi fnT}\,df .

Il fattore TT davanti a ogni campione è lo stesso peso che compare nell'area e nell'energia. Per un segnale a durata limitata la serie è una somma finita, quindi si calcola in forma chiusa. Il teorema di Parseval (6.11) dice

∑nT ∣s(nT)∣2=∫0Fp∣S(f)∣2 df,\sum_nT\,|s(nT)|^2=\int_0^{F_p}|S(f)|^2\,df ,

cioè l'energia calcolata nel tempo è uguale all'area di ∣S∣2|S|^2 su un periodo (qualunque, perché SS è periodica).

Es. 6.3A: calcolo di S1S_1 e S2S_2

s1s_1. Ha solo due campioni non nulli, in n=−1n=-1 e in n=+1n=+1, entrambi uguali a A0A_0. Nella somma sopravvivono quei due termini:

S1(f)=TA0 e−i2πf(−1)T+TA0 e−i2πf(+1)T=TA0(ei2πfT+e−i2πfT).S_1(f)=T A_0\,e^{-i2\pi f(-1)T}+T A_0\,e^{-i2\pi f(+1)T}=TA_0\left(e^{i2\pi fT}+e^{-i2\pi fT}\right).

Per la formula di Eulero eiφ+e−iφ=2cos⁡φe^{i\varphi}+e^{-i\varphi}=2\cos\varphi, quindi

S1(f)=2A0Tcos⁡(2πfT).\boxed{S_1(f)=2A_0T\cos(2\pi fT)}.

(Stesso risultato con gli impulsi: s1(nT)=A0T [δ(nT+T)+δ(nT−T)]s_1(nT)=A_0T\,[\delta(nT+T)+\delta(nT-T)] perché l'impulso ideale vale 1T\frac1T e il suo coefficiente deve essere T s(mT)=TA0T\,s(mT)=TA_0; e dalla regola (6.13) δ(nT−n0T)→Fe−i2πfn0T\delta(nT-n_0T)\xrightarrow{\mathcal F}e^{-i2\pi fn_0T}.)

s2s_2. Rispetto a s1s_1 c'è in più il campione n=0n=0, che contribuisce con TA0 e0=TA0TA_0\,e^{0}=TA_0:

S2(f)=TA0(ei2πfT+1+e−i2πfT)=A0T [1+2cos⁡(2πfT)].S_2(f)=TA_0\left(e^{i2\pi fT}+1+e^{-i2\pi fT}\right)=\boxed{A_0T\,\bigl[1+2\cos(2\pi fT)\bigr]}.

Forma chiusa equivalente. s2s_2 è un impulso rettangolare di N=2n0+1=3N=2n_0+1=3 campioni (n0=1n_0=1) e la formula (6.15)-(6.16) del testo dà S2(f)=A0NTsinc⁡N(fNT)=A0Tsin⁡(3πfT)sin⁡(πfT)S_2(f)=A_0NT\operatorname{sinc}_N(fNT)=A_0T\dfrac{\sin(3\pi fT)}{\sin(\pi fT)}. È la stessa funzione: con x=πfTx=\pi fT vale sin⁡3x=sin⁡x (3−4sin⁡2x)=sin⁡x (1+2cos⁡2x)\sin3x=\sin x\,(3-4\sin^2x)=\sin x\,(1+2\cos2x) (perché 3−4sin⁡2x=3−2(1−cos⁡2x)=1+2cos⁡2x3-4\sin^2x=3-2(1-\cos2x)=1+2\cos2x), da cui sin⁡3xsin⁡x=1+2cos⁡2x\frac{\sin3x}{\sin x}=1+2\cos2x con 2x=2πfT2x=2\pi fT. Il punto f=0f=0 è una forma 00\frac00 e il valore va preso come limite: 33.

Verifica delle tre proprietà.

  • Periodicità di periodo Fp=1/TF_p=1/T. cos⁡(2π(f+Fp)T)=cos⁡(2πfT+2π)=cos⁡(2πfT)\cos(2\pi(f+F_p)T)=\cos(2\pi fT+2\pi)=\cos(2\pi fT). È un fatto generale: ogni termine e−i2πfnTe^{-i2\pi fnT} con nn intero non cambia se f→f+Fpf\to f+F_p, perché e−i2πFpnT=e−i2πn=1e^{-i2\pi F_pnT}=e^{-i2\pi n}=1.
  • Reali. In S1S_1 e S2S_2 le esponenziali compaiono in coppie coniugate eiφe^{i\varphi}, e−iφe^{-i\varphi} con lo stesso coefficiente reale TA0TA_0, la cui somma è 2cos⁡φ2\cos\varphi, reale (si ricordi che A0A_0 è reale).
  • Pari. Il coseno è pari: S(−f)=S(f)S(-f)=S(f).

Queste proprietà sono la conseguenza della regola generale: segnale reale e pari ⇒\Rightarrow trasformata reale e pari (Fig. 6.2 del testo).

Qualche valore (in unità A0TA_0T) per leggere la forma:

fTfT 00 14\frac14 13\frac13 12\frac12
cos⁡(2πfT)\cos(2\pi fT) 11 00 −12-\frac12 −1-1
S1/(A0T)=2cos⁡S_1/(A_0T)=2\cos 22 00 −1-1 −2-2
S2/(A0T)=1+2cos⁡S_2/(A_0T)=1+2\cos 33 11 00 −1-1

In f=0f=0 si riconosce l'area del segnale: S1(0)=2A0T=T(A0+A0)S_1(0)=2A_0T=T(A_0+A_0), S2(0)=3A0T=area⁡(s2)S_2(0)=3A_0T=\operatorname{area}(s_2). Il primo zero di S2S_2 è in f=Fp3f=\frac{F_p}3.

Grafico interattivo: Trasformate di s1 e s2 in unità A0·T, in funzione di fT (periodo 1 in fT, cioè Fp): S1 = 2cos(2πfT) e S2 = 1 + 2cos(2πfT); reali, pari e periodiche

Es. 6.3B: teorema di Parseval

Si confronta, per ciascun segnale, l'energia nel tempo con l'integrale di ∣S∣2|S|^2 su un periodo [0,Fp][0,F_p].

Energia nel tempo. Solo i campioni non nulli contano, ciascuno con peso TT:

E1=T(A02+A02)=2A02T,E2=T(A02+A02+A02)=3A02T.E_1=T\left(A_0^2+A_0^2\right)=2A_0^2T,\qquad E_2=T\left(A_0^2+A_0^2+A_0^2\right)=3A_0^2T .

Energia in frequenza per s1s_1. Poiché S1S_1 è reale, ∣S1∣2=4A02T2cos⁡2(2πfT)|S_1|^2=4A_0^2T^2\cos^2(2\pi fT). Si usa cos⁡2φ=1+cos⁡2φ2\cos^2\varphi=\frac{1+\cos2\varphi}2:

∫0Fpcos⁡2(2πfT) df=∫0Fp1+cos⁡(4πfT)2 df=Fp2+0=Fp2,\int_0^{F_p}\cos^2(2\pi fT)\,df=\int_0^{F_p}\frac{1+\cos(4\pi fT)}{2}\,df=\frac{F_p}2+0=\frac{F_p}{2},

perché cos⁡(4πfT)\cos(4\pi fT) compie esattamente due periodi su [0,Fp][0,F_p] e il suo integrale su un numero intero di periodi è nullo. Quindi

∫0Fp∣S1∣2df=4A02T2⋅Fp2=2A02T2⋅1T=2A02T=E1. ✓\int_0^{F_p}|S_1|^2df=4A_0^2T^2\cdot\frac{F_p}2=2A_0^2T^2\cdot\frac1T=2A_0^2T=E_1 .\ \checkmark

Energia in frequenza per s2s_2. ∣S2∣2=A02T2 (1+2c)2=A02T2 (1+4c+4c2)|S_2|^2=A_0^2T^2\,(1+2c)^2=A_0^2T^2\,(1+4c+4c^2) con c=cos⁡(2πfT)c=\cos(2\pi fT). Su [0,Fp][0,F_p]: ∫1 df=Fp\int1\,df=F_p, ∫c df=0\int c\,df=0 (un periodo intero), ∫c2 df=Fp2\int c^2\,df=\frac{F_p}2 (come sopra). Perciò

∫0Fp∣S2∣2df=A02T2(Fp+0+4⋅Fp2)=3A02T2Fp=3A02T=E2. ✓\int_0^{F_p}|S_2|^2df=A_0^2T^2\left(F_p+0+4\cdot\frac{F_p}2\right)=3A_0^2T^2F_p=3A_0^2T=E_2 .\ \checkmark

Il teorema è verificato in entrambi i casi. Si noti come tornano i fattori TT: il quadrato di SS porta T2T^2, l'integrale su un periodo porta Fp=1TF_p=\frac1T, e il prodotto T2Fp=TT^2F_p=T è esattamente il peso TT dell'energia nel tempo.

Le due regole "area" collegate (6.10). Valgono anche S(0)=area⁡(s)S(0)=\operatorname{area}(s) (già visto) e la proprietà duale s(0)=∫0FpS(f) dfs(0)=\int_0^{F_p}S(f)\,df. Per s1s_1: ∫0Fp2A0Tcos⁡(2πfT) df=0=s1(0)\int_0^{F_p}2A_0T\cos(2\pi fT)\,df=0=s_1(0) ✓. Per s2s_2: ∫0FpA0T (1+2cos⁡(2πfT)) df=A0TFp=A0=s2(0)\int_0^{F_p}A_0T\,(1+2\cos(2\pi fT))\,df=A_0TF_p=A_0=s_2(0) ✓.

Controllo

Il codice calcola S(f)S(f) sommando davvero la serie (6.1) su una griglia di frequenze (non usa la forma chiusa) e poi confronta con le formule trovate e con Parseval.

python
import numpy as np

A0, T = 2.0, 0.3
Fp = 1 / T
n = np.arange(-1, 2)                              # n = -1, 0, 1
s1 = np.array([A0, 0.0, A0])                      # A0 per n = +-1
s2 = np.array([A0, A0, A0])                       # A0 per n = -1, 0, 1

f = np.linspace(0, Fp, 20001)                     # un periodo
def trasformata(s, f):
    """S(f) = somma di T s(nT) e^{-i 2 pi f n T}, calcolata punto per punto"""
    return np.array([np.sum(T * s * np.exp(-2j * np.pi * ff * n * T)) for ff in f])

S1, S2 = trasformata(s1, f), trasformata(s2, f)
print("S1 reale:", np.max(np.abs(S1.imag)), " S2 reale:", np.max(np.abs(S2.imag)))
print("S1 = 2 A0 T cos:", np.allclose(S1.real, 2 * A0 * T * np.cos(2 * np.pi * f * T)))
print("S2 = A0 T (1 + 2 cos):", np.allclose(S2.real, A0 * T * (1 + 2 * np.cos(2 * np.pi * f * T))))
print("S2 = A0 T sin(3 pi fT)/sin(pi fT):", np.allclose(S2.real[1:-1], A0 * T * np.sin(3 * np.pi * f[1:-1] * T) / np.sin(np.pi * f[1:-1] * T)))

# periodicita' Fp e parita'
fx = np.array([0.37, 1.1, 2.9])
print("periodica:", np.allclose(trasformata(s2, fx), trasformata(s2, fx + Fp)))
print("pari:", np.allclose(trasformata(s2, fx), trasformata(s2, -fx)))

# Parseval
for nome, s, S in (("s1", s1, S1), ("s2", s2, S2)):
    E_tempo = np.sum(T * np.abs(s)**2)
    E_freq = np.trapezoid(np.abs(S)**2, f)        # integrale su un periodo
    print(nome, "energia nel tempo", E_tempo, " integrale di |S|^2 su un periodo", E_freq)
print("attese: 2 A0^2 T =", 2 * A0**2 * T, "  3 A0^2 T =", 3 * A0**2 * T)

# area e proprieta' duale
print("S1(0) =", S1[0].real, " area =", np.sum(T * s1), "  S2(0) =", S2[0].real, " area =", np.sum(T * s2))
print("s1(0) = int S1 df =", np.trapezoid(S1.real, f), "  s2(0) = int S2 df =", np.trapezoid(S2.real, f))

Risultati con A0=2A_0=2, T=0,3T=0{,}3: parte immaginaria nulla; le tre uguaglianze di forma chiusa risultano vere; periodicità e parità vere; E1=2,4=∫∣S1∣2E_1=2{,}4=\int|S_1|^2 e E2=3,6=∫∣S2∣2E_2=3{,}6=\int|S_2|^2 (coincidono a meno di 10−1510^{-15}); S1(0)=1,2=area⁡(s1)S_1(0)=1{,}2=\operatorname{area}(s_1), S2(0)=1,8=area⁡(s2)S_2(0)=1{,}8=\operatorname{area}(s_2); ∫S1 df=0=s1(0)\int S_1\,df=0=s_1(0) e ∫S2 df=2=s2(0)=A0\int S_2\,df=2=s_2(0)=A_0. (np.trapezoid è np.trapz nelle versioni di NumPy precedenti alla 2.0.)

Errori comuni

  • Dimenticare il peso TT davanti a ogni campione in S(f)S(f): si otterrebbe S/TS/T e Parseval non tornerebbe.
  • Integrare ∣S∣2|S|^2 su tutto l'asse reale invece che su un periodo: SS è periodica e l'integrale su R\mathbb R sarebbe infinito.
  • Dire che S2S_2 si annulla in f=Fp2f=\frac{F_p}2: lì vale −A0T-A_0T; il primo zero è in Fp3\frac{F_p}3.
  • Dimenticare che A0A_0 deve essere reale perché SS sia reale: per A0A_0 complesso SS è complessa (ma resta pari).

Versione ripasso

Testo. Es. 6.3A: S1,S2S_1,S_2 di s1=A0s_1=A_0 (n=±1n=\pm1) e s2=A0s_2=A_0 (n=−1,0,1n=-1,0,1); Es. 6.3B: verifica di Parseval (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 →).

  • S(f)=∑T s(nT)e−i2πfnTS(f)=\sum T\,s(nT)e^{-i2\pi fnT}: S1=2A0Tcos⁡(2πfT)S_1=2A_0T\cos(2\pi fT), S2=A0T[1+2cos⁡(2πfT)]=A0Tsin⁡3πfTsin⁡πfTS_2=A_0T[1+2\cos(2\pi fT)]=A_0T\frac{\sin3\pi fT}{\sin\pi fT}.
  • Periodiche di periodo Fp=1/TF_p=1/T (il coseno ha periodo 1/T1/T), reali e pari (segnale reale e pari). Valori: S1(0)=2A0TS_1(0)=2A_0T, S2(0)=3A0TS_2(0)=3A_0T (aree); primo zero di S2S_2 in Fp/3F_p/3.
  • Parseval: E1=2A02TE_1=2A_0^2T, E2=3A02TE_2=3A_0^2T; ∫0Fpcos⁡2=Fp2\int_0^{F_p}\cos^2=\frac{F_p}2, ∫0Fpcos⁡=0\int_0^{F_p}\cos=0 danno ∫∣S1∣2=4A02T2Fp2=2A02T\int|S_1|^2=4A_0^2T^2\frac{F_p}2=2A_0^2T e ∫∣S2∣2=A02T2(Fp+2Fp)=3A02T\int|S_2|^2=A_0^2T^2(F_p+2F_p)=3A_0^2T.
  • Duale: s(0)=∫0FpS dfs(0)=\int_0^{F_p}S\,df (00 e A0A_0).
  • Errori: TT dimenticato; integrale di ∣S∣2|S|^2 su R\mathbb R invece che su un periodo.

Teoria collegata