← inapoi la cuprins · Materie pentru examenul final · Carte: cap. 6.1–6.2 · Notitele colegilor: Cursurile 10–11 (p. 22–25) · Inainte: Cap 5 · Urmeaza: Cap 7 — Convolutia
Sa luam un exemplu concret. Avem un semnal analog: un cosinus de 1000 Hz (adica face 1000 de cicluri pe secunda). Il trecem printr-un convertor analog-digital (ADC) care il masoara de 8000 de ori pe secunda.
Daca masuram timp de 1 ms, prindem 8 esantioane:
Ce vezi in desen: in stanga, cosinusul analog (linia gri) si cele 8 momente in care ADC-ul il masoara (bulinele). In dreapta, ce ramane dupa masurare: 8 numere, desenate ca bete. Pe axa orizontala nu mai e timpul, ci al catelea numar din lista este.
Calculatorul nu primeste nici desenul, nici formula. Primeste doar lista:
$$ x = [1,\ 0.71,\ 0,\ -0.71,\ -1,\ -0.71,\ 0,\ 0.71] $$
Cuvintele pe care le folosim de acum:
| Simbol | Ce este | In exemplu |
|---|---|---|
| $n$ | indicele esantionului = al catelea numar din lista (numaratoarea incepe de la 0) | $n = 0, 1, \dots, 7$ |
| $x(n)$ | valoarea esantionului cu numarul $n$ | $x(0) = 1$, $x(1) = 0.71$, $x(4) = -1$ |
| $N$ | cate esantioane are lista | $N = 8$ |
| $f_s$ | frecventa de esantionare (esantioane pe secunda, in Hz) | $f_s = 8000$ Hz |
| $T_s$ | timpul dintre doua esantioane, $T_s = 1/f_s$ | $0.125$ ms |
Pana acum am aflat spectrul (ce frecvente sunt intr-un semnal si cat de mult din fiecare) plecand de la formula semnalului:
Acum nu mai avem formula. Avem doar $[1, 0.71, 0, -0.71, \dots]$. Un semnal real (voce, muzica, radio) nici nu are o formula.
Intrebarea capitolului: avand doar lista de numere, cum aflu ce frecvente sunt in ea?
Raspunsul: cu Transformata Fourier Discreta, pe scurt DFT (Discrete Fourier Transform). E o reteta de calcul: bagi $N$ numere, scoti $N$ numere. Rezultatul e spectrul.
Ce vei sti sa faci la sfarsitul capitolului:
Luam iar cosinusul de 1000 Hz esantionat cu $f_s = 8000$ Hz. Formula lui analogica este $\cos(2\pi\cdot 1000\cdot t)$.
Esantionul numarul $n$ e masurat la momentul $t = n\cdot T_s = n/8000$ secunde. Inlocuim $t$ in formula:
$$ x(n) = \cos\left(2\pi\cdot 1000\cdot \frac{n}{8000}\right) = \cos\left(2\pi\cdot \frac{1000}{8000}\cdot n\right) = \cos\left(2\pi\cdot \frac{1}{8}\cdot n\right) $$
A aparut numarul $\frac{1}{8}$. El este $\frac{1000}{8000}$, adica frecventa semnalului impartita la frecventa de esantionare.
Ce inseamna $\frac18$: de la un esantion la urmatorul, cosinusul avanseaza cu o optime de ciclu. Deci un ciclu intreg dureaza 8 esantioane. Verifica pe desenul de mai sus: lista revine la valoarea 1 dupa 8 esantioane.
Alte exemple, toate cu $f_s = 8000$ Hz:
| Frecventa reala a semnalului | Impartita la $f_s$ | Cat avanseaza la fiecare esantion | Un ciclu dureaza |
|---|---|---|---|
| 500 Hz | $500/8000 = 1/16$ | 1/16 de ciclu | 16 esantioane |
| 1000 Hz | $1000/8000 = 1/8$ | 1/8 de ciclu | 8 esantioane |
| 2000 Hz | $2000/8000 = 1/4$ | un sfert de ciclu | 4 esantioane |
| 4000 Hz | $4000/8000 = 1/2$ | jumatate de ciclu | 2 esantioane |
Numarul din coloana a doua se numeste frecventa normalizata:
$$ \boxed{f = \frac{f_c}{f_s}} $$
Cu ea, orice cosinus esantionat se scrie $x(n) = A\cos(2\pi f n)$. Nu mai apare nici $t$, nici $f_s$.
Drumul inapoi, de la frecventa normalizata la Hz: inmultesti cu $f_s$. Exemplu: $f = 1/8$ si $f_s = 8000$ Hz dau $f_c = \frac18\cdot 8000 = 1000$ Hz.
Incercam un cosinus de 9000 Hz, tot cu $f_s = 8000$ Hz. Frecventa normalizata: $f = 9000/8000 = 9/8 = 1/8 + 1$.
Calculam primele 4 esantioane pentru 1000 Hz si pentru 9000 Hz:
| $n$ | 1000 Hz: $\cos(2\pi\cdot\frac18\cdot n)$ | 9000 Hz: $\cos(2\pi\cdot\frac98\cdot n)$ |
|---|---|---|
| 0 | $\cos(0) = 1$ | $\cos(0) = 1$ |
| 1 | $\cos(45°) = 0.71$ | $\cos(405°) = \cos(360° + 45°) = 0.71$ |
| 2 | $\cos(90°) = 0$ | $\cos(810°) = \cos(2\cdot 360° + 90°) = 0$ |
| 3 | $\cos(135°) = -0.71$ | $\cos(1215°) = \cos(3\cdot 360° + 135°) = -0.71$ |
Listele sunt identice. Din lista nu ai cum sa spui daca a fost 1000 Hz sau 9000 Hz.
Asta e exact ce am vazut in Cap 4 §2: dupa esantionare, spectrul are copii la fiecare $f_s$. In frecventa normalizata, $f_s$ inseamna $f_s/f_s = 1$. Deci:
Spectrul unui semnal digital se repeta la fiecare 1. Daca il stii pe o bucata de lungime 1, il stii peste tot.
Ce vezi in desen: pe verticala, cat de mult din fiecare frecventa e in semnal. Pe orizontala sunt doua rigle pentru acelasi lucru: sus frecventa normalizata, jos frecventa reala in Hz pentru $f_s = 8000$ Hz. Forma albastra e spectrul; formele gri sunt copiile lui, la distanta 1 (adica 8000 Hz). Zona galbena, de la $-1/2$ la $1/2$, e cea la care ne uitam.
Bucata pe care o alegem de obicei este $f \in [-1/2,\ 1/2]$, adica in Hz $[-f_s/2,\ f_s/2]$.
Cursul mentioneaza si varianta $f \in [0, 1]$. E aceeasi informatie: bucata de la $1/2$ la $1$ este copia bucatii de la $-1/2$ la $0$, mutata cu 1 la dreapta. Vom avea nevoie de asta in §6.
DTFT (Discrete Time Fourier Transform, “transformata Fourier cu timp discret”) este transformata Fourier adaptata pentru o lista de esantioane. Tu alegi o frecventa normalizata $f$, oricare. Ea iti spune cat din frecventa aceea este in lista.
Formulele din curs sunt acestea. Nu le vei calcula de mana; trebuie doar sa le recunosti:
$$ X(f) = \sum_{n=-\infty}^{\infty} x(n)\, e^{-j2\pi f n}, \qquad f \in [-1/2,\ 1/2] $$
$$ x(n) = \int_{-1/2}^{1/2} X(f)\, e^{j2\pi f n}\, df $$
Cum citesti prima formula:
A doua formula face drumul inapoi (din spectru in lista). Semnul $\int$ este o suma “continua”, peste toate frecventele dintre $-1/2$ si $1/2$.
Fata de transformata Fourier din Cap 3 s-a schimbat un singur lucru: in loc de timpul continuu $t$ avem indicele $n$, asa ca in loc de integrala peste $t$ avem suma peste $n$.
Proprietatea de retinut: $X(f)$ se repeta la fiecare 1 (e “periodica de perioada 1”). E desenul din §2.3.
DTFT are doua probleme. Amandoua vin de la cuvantul “infinit”:
Solutia este sa luam un numar finit si in timp, si in frecventa: $N$ esantioane la intrare si $N$ frecvente la iesire. Asta este DFT.
| DTFT | DFT | |
|---|---|---|
| Cate esantioane foloseste | o infinitate | $N$ |
| La ce frecvente da rezultat | la orice $f$ din $[-1/2, 1/2]$ (o curba continua) | doar la $N$ frecvente: $f = k/N$, cu $k = 0, 1, \dots, N-1$ (bete) |
| Se poate calcula pe calculator | nu | da |
| La ce foloseste | teorie, demonstratii | practica: asta ruleaza pe calculator |
In Cap 0 §6 am spus ca spectrul e ca lista de ingrediente a unui smoothie: ce fructe sunt si cat din fiecare. DFT este aparatul care gusta smoothie-ul (lista de numere) si scrie lista de ingrediente.
Aparatul are $N$ casute de frecventa, numerotate cu $k = 0, 1, \dots, N-1$. (In engleza si in laborator li se spune “bin”-uri.)
Lista are $N$ numere, deci avem $N$ casute si $N$ rezultate.
Verificarea se face cu un ac de ceas de lungime 1 care se roteste pe cerc. Pozitia acului este un numar complex de pe cercul de raza 1 (Cap 0 §4): $e^{-j\cdot\text{unghi}}$. Semnul minus inseamna ca acul se roteste in sensul acelor de ceas.
Luam cazul cel mai mic: $N = 4$ esantioane si casuta $k = 1$ (“1 ciclu in 4 esantioane”).
Ce vezi in desen: cercul de raza 1. Pe orizontala e partea reala, pe verticala partea imaginara. Cele 4 buline rosii sunt pozitiile acului la pasii $n = 0, 1, 2, 3$: 1, −j, −1, j.
Pentru celelalte casute acul merge cu alta viteza: casuta $k$ face $k$ sferturi de tura la fiecare esantion.
| Casuta | Cat se roteste acul la fiecare esantion | Pozitia la $n=0$ | $n=1$ | $n=2$ | $n=3$ |
|---|---|---|---|---|---|
| $k = 0$ | deloc | 1 | 1 | 1 | 1 |
| $k = 1$ | un sfert de tura | 1 | $-j$ | $-1$ | $j$ |
| $k = 2$ | doua sferturi = jumatate de tura | 1 | $-1$ | 1 | $-1$ |
| $k = 3$ | trei sferturi de tura | 1 | $j$ | $-1$ | $-j$ |
(Randul $k = 3$: trei sferturi de tura in sensul acelor de ceas te duc de la 1 la $j$, apoi la $-1$, apoi la $-j$. Urmareste pe cerc.)
Pentru fiecare casuta $k$:
Casuta $k = 0$ (acul sta pe loc: 1, 1, 1, 1):
$$ X(0) = 1\cdot 1 + 0\cdot 1 + (-1)\cdot 1 + 0\cdot 1 = 1 + 0 - 1 + 0 = 0 $$
Casuta $k = 1$ (acul: 1, $-j$, $-1$, $j$):
$$ X(1) = 1\cdot 1 + 0\cdot(-j) + (-1)\cdot(-1) + 0\cdot j = 1 + 0 + 1 + 0 = 2 $$
Casuta $k = 2$ (acul: 1, $-1$, 1, $-1$):
$$ X(2) = 1\cdot 1 + 0\cdot(-1) + (-1)\cdot 1 + 0\cdot(-1) = 1 + 0 - 1 + 0 = 0 $$
Casuta $k = 3$ (acul: 1, $j$, $-1$, $-j$):
$$ X(3) = 1\cdot 1 + 0\cdot j + (-1)\cdot(-1) + 0\cdot(-j) = 1 + 0 + 1 + 0 = 2 $$
Rezultat: $X = [0,\ 2,\ 0,\ 2]$.
Ce vezi in desen: in stanga lista de intrare, cu indicele $n$ pe orizontala. In dreapta rezultatul DFT, cu indicele casutei $k$ pe orizontala si marimea rezultatului pe verticala. Sub fiecare $k$ scrie ce frecventa verifica acea casuta (explicatia vine in §5 si §6).
$$ \boxed{X(k) = \sum_{n=0}^{N-1} x(n)\, e^{-j2\pi\frac{k}{N}n}, \qquad k = 0, 1, \dots, N-1} $$
Bucata cu bucata, este exact reteta din §4.3:
Compara cu formula DTFT din §3: in loc de frecventa oarecare $f$ scrie acum $\frac{k}{N}$, iar suma se opreste la $N$ esantioane. Deci casuta $k$ verifica frecventa normalizata $f = k/N$.
Exemplu concret. Lista $[1, j, -1, -j]$ este un ac care se roteste invers acelor de ceas, cu un sfert de tura pe esantion.
Ce vezi in desen: cele 4 produse desenate ca sageti puse cap la coada (asa se aduna numerele complexe). In stanga (casuta potrivita) toate sagetile arata spre dreapta si ajungi la 4. In dreapta (casuta nepotrivita) sagetile fac un patrat si te intorci de unde ai plecat: suma 0.
Proprietatea asta (“ace de viteze diferite dau suma 0”) se numeste in curs ortogonalitatea exponentialelor complexe. Din cauza ei fiecare casuta raspunde doar la frecventa ei.
In exemplul de mai sus $X(k)$ a iesit numar obisnuit (real). In general iese numar complex. Exemplu: aceeasi oscilatie, dar intarziata cu un esantion, $x = [0, 1, 0, -1]$ (acestea sunt valorile lui $\sin(2\pi\cdot\frac14\cdot n)$).
$$ X(1) = 0\cdot 1 + 1\cdot(-j) + 0\cdot(-1) + (-1)\cdot j = -j - j = -2j $$
$$ X(3) = 0\cdot 1 + 1\cdot j + 0\cdot(-1) + (-1)\cdot(-j) = j + j = 2j $$
Celelalte doua ies 0. Deci $X = [0,\ -2j,\ 0,\ 2j]$.
Un numar complex are doua parti utile (Cap 0 §3):
Comparam: cosinusul a dat $|X| = [0, 2, 0, 2]$, sinusul da tot $|X| = [0, 2, 0, 2]$. Modulul e acelasi; difera doar faza. E ce stiam din Cap 0 §6.2: sinusul este un cosinus intarziat.
La examen se cere aproape mereu desenul modulului, $|X(k)|$.
Incearca tu: calculeaza DFT pentru $x = [3, 1, -1, 1]$.
Exemplul din curs: $N = 8$ esantioane, masurate cu $f_s = 8000$ Hz. Ce frecventa reala verifica casuta $k = 3$?
La fel pentru toate casutele:
| $k$ | Frecventa normalizata $k/N$ | Frecventa reala $k\cdot f_s/N$ |
|---|---|---|
| 0 | 0 | 0 Hz (partea constanta) |
| 1 | 1/8 | 1000 Hz |
| 2 | 2/8 | 2000 Hz |
| 3 | 3/8 | 3000 Hz |
| 4 | 4/8 = 1/2 | 4000 Hz ($= f_s/2$) |
| 5 | 5/8 | 5000 Hz |
| 6 | 6/8 | 6000 Hz |
| 7 | 7/8 | 7000 Hz |
(Ultimele trei randuri sunt peste $f_s/2$. Ce inseamna ele de fapt vezi in §6.)
$$ \boxed{f_k = k\cdot\frac{f_s}{N}} $$
De unde vine: casuta $k$ are frecventa normalizata $\frac{k}{N}$ (§4.6). Frecventa normalizata este $\frac{f_c}{f_s}$ (§2.2). Le egalam: $\frac{f_c}{f_s} = \frac{k}{N}$, deci $f_c = k\cdot\frac{f_s}{N}$.
Distanta dintre doua casute vecine este $f_s/N$. In exemplu: $8000/8 = 1000$ Hz. Se numeste rezolutia in frecventa (cat de fin “vede” DFT).
Cum faci rezolutia mai fina: maresti $N$ (iei mai multe esantioane), pastrand $f_s$.
| $f_s$ | $N$ | Cat timp ai inregistrat ($N/f_s$) | Rezolutia $f_s/N$ |
|---|---|---|---|
| 8000 Hz | 8 | 0.001 s | 1000 Hz |
| 8000 Hz | 80 | 0.01 s | 100 Hz |
| 8000 Hz | 8000 | 1 s | 1 Hz |
| 16000 Hz | 8 | 0.0005 s | 2000 Hz (mai proasta!) |
Casutele $k = 0, 1, \dots, N-1$ acopera frecventele de la 0 pana aproape de $f_s$, din $f_s/N$ in $f_s/N$. Ultima casuta este la $(N-1)\cdot f_s/N$, cu un pas inainte de $f_s$. In frecventa normalizata: de la 0 pana aproape de 1.
Din §2.3 stim ca e acelasi lucru cu intervalul de la $-f_s/2$ la $f_s/2$. Cum se face trecerea vezi in sectiunea urmatoare.
Doua lucruri de mai sus par ciudate:
Amandoua au aceeasi explicatie.
Intoarce-te la tabelul cu pozitiile acului din §4.2 ($N = 4$). Randul $k = 3$ este: $1, j, -1, -j$.
Acum gandeste-te la casuta “$k = -1$”: minus un sfert de tura la fiecare esantion, adica un sfert de tura in sens invers (invers acelor de ceas). Pozitiile: $1$, apoi sus la $j$, apoi $-1$, apoi jos la $-j$. Adica $1, j, -1, -j$.
Sunt aceleasi pozitii. Trei sferturi de tura intr-un sens te duc in acelasi punct ca un sfert de tura in celalalt sens. Deci casuta 3 si casuta $-1$ fac exact acelasi calcul: $X(3) = X(-1)$.
In general, casutele $k$ si $k - N$ difera prin $N$ pasi de $\frac1N$ de tura la fiecare esantion, adica printr-o tura completa. O tura completa nu schimba nimic. Deci:
$$ X(k) = X(k - N) \qquad\text{si, la fel,}\qquad X(k + N) = X(k) $$
Pentru $N = 8$, $f_s = 8000$ Hz: $X(7) = X(7 - 8) = X(-1)$. Casuta 7 este casuta $-1$, adica frecventa $-1\cdot 1000 = -1000$ Hz. In Hz: $7000 - 8000 = -1000$.
Regula: pentru casutele din jumatatea de sus ($k > N/2$), frecventa adevarata este cea a casutei $k - N$, adica una negativa.
| $k$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| $k\cdot f_s/N$ | 0 | 1000 | 2000 | 3000 | 4000 | 5000 | 6000 | 7000 |
| de fapt casuta | 0 | 1 | 2 | 3 | $\pm 4$ | $5 - 8 = -3$ | $6 - 8 = -2$ | $7 - 8 = -1$ |
| frecventa adevarata (Hz) | 0 | 1000 | 2000 | 3000 | $\pm 4000$ | $-3000$ | $-2000$ | $-1000$ |
Casuta din mijloc, $k = N/2 = 4$, este $f_s/2 = 4000$ Hz. Ea este in acelasi timp $+4000$ si $-4000$ Hz ($4 - 8 = -4$): e una singura.
Ce vezi in desen: sus, spectrul asa cum iese din DFT, cu $k$ de la 0 la 7 (sub fiecare $k$ scrie $k\cdot f_s/N$). Casutele portocalii (5, 6, 7) sunt frecventele negative. Jos, acelasi spectru dupa ce am mutat casutele portocalii in stanga lui 0: arata simetric, exact ca spectrele din Cap 0. Semnalul din desen este exemplul din carte: un cosinus de amplitudine 1 pe casuta 1 plus unul de amplitudine 0.5 pe casuta 2.
Un semnal real este o lista de numere obisnuite, fara $j$. Toate semnalele masurate de un ADC sunt reale.
Pentru un semnal real, betele vin in perechi: $|X(N - k)| = |X(k)|$.
De ce: orice cosinus are o linie la $+f$ si una la $-f$, de aceeasi inaltime (Cap 0 §6.1). Linia de la $+f$ ajunge in casuta $k$, cea de la $-f$ ajunge in casuta $-k$, care este casuta $N - k$.
Verificare pe exemplele de pana acum:
Mai exact, $X(N-k)$ este conjugatul lui $X(k)$: acelasi modul, faza cu semn schimbat. Ai vazut asta la sinus in §4.7: $X(1) = -2j$ si $X(3) = +2j$.
Consecinta practica: la un semnal real, jumatatea de sus nu aduce informatie noua. De aceea in laborator se deseneaza adesea doar $k = 0 \dots N/2$. La examen deseneaza toate betele, daca nu ti se cere altfel.
In Python (laborator), fft(x) intoarce rezultatele in ordinea $k = 0, 1, \dots, N-1$. Functia fftshift doar rearanjeaza lista: muta jumatatea de sus in fata, ca sa ai ordinea $k = -N/2, \dots, -1, 0, 1, \dots, N/2 - 1$, cu frecventa 0 la mijloc. Nu calculeaza nimic nou. Este trecerea de la desenul de sus la desenul de jos din figura de mai sus.
Relatia $X(k + N) = X(k)$ spune ca, daca ai calcula DFT si pentru alte valori ale lui $k$ (negative sau mai mari decat $N - 1$), ai regasi aceleasi $N$ valori, la nesfarsit. Spectrul DFT este periodic cu perioada $N$.
Ce vezi in desen: acelasi spectru ca mai sus, desenat pentru $k$ de la $-8$ la $15$. Zona galbena ($k = 0 \dots 7$) este ce calculeaza DFT. In stanga si in dreapta ei apare aceeasi poza, mutata cu 8 casute. Sagetile arata ca bata de la $k = 7$ este aceeasi cu cea de la $k = -1$, iar cea de la $k = 6$ cu cea de la $k = -2$.
Este varianta cu casute a propozitiei din §2.3 (“spectrul unui semnal digital se repeta la fiecare 1”): $N$ casute inseamna frecventa normalizata $N\cdot\frac1N = 1$, adica $f_s$ in Hz.
Asta este sectiunea de care ai nevoie la probleme: cum desenezi $|X(k)|$ fara sa faci tot calculul din §4.
Luam $N = 16$ esantioane din $x(n) = 3\cos\left(2\pi\cdot\frac{2}{16}\cdot n\right)$.
Calculul complet al DFT (facut cu calculatorul) da: 24 la $k = 2$, 24 la $k = 14$, si 0 in toate celelalte 14 casute.
Ce vezi in desen: in stanga cele 16 esantioane (betele) si cosinusul din care provin (linia intrerupta); se vad cele 2 cicluri. In dreapta $|X(k)|$: doua bete de inaltime 24, la $k = 2$ si la $k = 14 = 16 - 2$.
De unde vine 24: $16\cdot\frac{3}{2} = 24$, adica $N\cdot\frac{A}{2}$.
Pas 1 — cosinusul este facut din doua ace. Din formula lui Euler (Cap 0 §4.3):
$$ A\cos\left(2\pi\frac{m}{N}n\right) = \frac{A}{2}\,e^{\,j2\pi\frac{m}{N}n} + \frac{A}{2}\,e^{-j2\pi\frac{m}{N}n} $$
Doua ace de lungime $\frac{A}{2}$, care se rotesc in sensuri opuse, cu $m$ ture in $N$ esantioane. Acesta este acel “$A/2$” din Cap 0.
Pas 2 — ce da un singur ac. Am vazut in §4.6: un ac de lungime 1 care face $m$ ture in $N$ esantioane da, in casuta potrivita $k = m$, cele $N$ produse egale cu 1. Suma lor este $N$. In toate celelalte casute da 0.
Pas 3 — punem cap la cap.
$$ \boxed{x(n) = A\cos\left(2\pi\frac{m}{N}n\right) \quad\Longrightarrow\quad |X(k)| = \frac{N\cdot A}{2}\ \text{ la } k = m \text{ si la } k = N - m;\quad 0 \text{ in rest}} $$
Verificare cu exemplul de mana din §4: $N = 4$, $A = 1$, $m = 1$ → $4\cdot\frac12 = 2$ la $k = 1$ si $k = 3$. Corect.
In curs rezultatul este scris asa:
$$ X(k) = \frac{N\cdot A}{2}\,\big(\delta(k - m) + \delta(k + m)\big) $$
$\delta$ (“delta”) este un mod scurt de a scrie “o bata intr-un singur loc”:
$$ \delta(n) = \begin{cases} 1, & n = 0 \\ 0, & n \neq 0 \end{cases} $$
Adica $\delta(\dots)$ este 1 cand ce e in paranteza este 0, si este 0 in rest.
Exemplul din §7.1 scris asa: $X(k) = 24\,(\delta(k - 2) + \delta(k + 2))$.
| Ce este in lista | Ce da DFT | De ce | Exemplu verificat |
|---|---|---|---|
| o constanta $c$ | o singura bata, $N\cdot c$, la $k = 0$ | constanta este un singur ac care nu se roteste, de lungime $c$ (nu doua jumatati) | $[2, 2, 2, 2]$ → $X(0) = 4\cdot 2 = 8$ |
| $A\sin\left(2\pi\frac{m}{N}n\right)$ | aceleasi doua bete, $N\cdot A/2$, la $k = m$ si $k = N - m$ | sinusul e un cosinus intarziat; se schimba doar faza (§4.7) | $[0, 1, 0, -1]$ → $\lvert X\rvert = [0, 2, 0, 2]$ |
| cosinus exact pe casuta din mijloc, $m = N/2$ | o singura bata, $N\cdot A$, la $k = N/2$ | cele doua bete ar fi la $N/2$ si la $N - N/2 = N/2$: cad in aceeasi casuta si se aduna | $3\cos(\pi n) = [3, -3, 3, -3, \dots]$, $N = 8$ → $X(4) = 24$ |
| suma de mai multe cosinusuri | betele fiecaruia, puse pe acelasi desen | DFT a unei sume = suma DFT-urilor (liniaritate, §8) | vezi problemele din §9 |
IDFT (Inverse DFT, “DFT inversa”) face drumul invers: din cele $N$ valori $X(k)$ reface lista $x(n)$.
Intai cu numere. Plecam de la $X = [0, 2, 0, 2]$ (rezultatul din §4.4) si vrem lista inapoi. Reteta este aceeasi, cu doua schimbari: acul se roteste invers (plus in loc de minus) si la sfarsit impartim la $N$.
Pentru $N = 4$, pozitiile acului care se roteste invers acelor de ceas sunt: casuta 1 → $1, j, -1, -j$ (pentru $n = 0, 1, 2, 3$); casuta 3 → $1, -j, -1, j$. Casutele 0 si 2 nu conteaza, fiindca $X(0) = X(2) = 0$.
Am regasit $x = [1, 0, -1, 0]$. Nu s-a pierdut nimic.
Acelasi lucru, scris cu litere:
$$ \boxed{x(n) = \frac{1}{N}\sum_{k=0}^{N-1} X(k)\, e^{\,j2\pi\frac{k}{N}n}, \qquad n = 0, 1, \dots, N-1} $$
In cuvinte: lista este o suma de $N$ ace care se rotesc cu viteze diferite. $X(k)/N$ spune cat de lung este acul numarul $k$ si din ce pozitie porneste. DFT desface lista in ace; IDFT le aduna la loc.
Cursul spune ca proprietatile transformatei Fourier din analog (Cap 2 §4, Cap 3 §2) raman valabile si pentru DFT. Iata-le, fiecare cu un exemplu verificat numeric.
| Proprietatea | In cuvinte | Exemplu |
|---|---|---|
| $N$ numere intra, $N$ numere ies | lista si spectrul au acelasi numar de elemente; numarul de esantioane $N$ hotaraste cate casute de frecventa vezi | $N = 4$: 4 esantioane → $X(0) \dots X(3)$ |
| Liniaritate | spectrul unei sume este suma spectrelor; daca inmultesti lista cu un numar, spectrul se inmulteste cu acelasi numar | cosinus pe casuta 1 + cosinus pe casuta 2 → betele amandurora (P1 din §9) |
| Periodicitate: $X(k + N) = X(k)$ | spectrul se repeta la fiecare $N$ casute | $N = 8$: $X(7) = X(-1)$ (§6.5) |
| Simetrie (semnale reale): $\lvert X(N-k)\rvert = \lvert X(k)\rvert$ | betele vin in perechi; jumatatea de sus este oglinda celei de jos | $N = 4$: $\lvert X(1)\rvert = \lvert X(3)\rvert = 2$ (§6.3) |
| Deplasare in timp (intarziere) | daca intarzii lista, modulele $\lvert X(k)\rvert$ raman la fel; se schimba doar fazele | $[1, 0, -1, 0]$ si $[0, 1, 0, -1]$ au amandoua $\lvert X\rvert = [0, 2, 0, 2]$ (§4.7) |
| Deplasare in frecventa | daca inmultesti lista cu un ac care se roteste, $e^{\,j2\pi\frac{m}{N}n}$, tot spectrul se muta cu $m$ casute | $[1, 0, -1, 0]$ inmultita cu $[1, -j, -1, j]$ da $[1, 0, 1, 0]$, cu $X = [2, 0, 2, 0]$: betele de la $k = 1, 3$ s-au mutat cu o casuta la stanga, la $k = 0, 2$ |
| $X(0)$ = suma esantioanelor | casuta 0 masoara partea constanta: $X(0) = N\cdot$ media listei | $[3, 1, -1, 1]$: suma 4, media 1, $X(0) = 4$ |
| Parseval (energia) | energia calculata din lista este aceeasi cu cea calculata din spectru: $\sum \lvert x(n)\rvert^2 = \frac1N\sum \lvert X(k)\rvert^2$ | $[1, 0, -1, 0]$: $1 + 0 + 1 + 0 = 2$ si $\frac14(0 + 4 + 0 + 4) = 2$ |
Mai exista o proprietate importanta, care leaga DFT de filtrare: teorema convolutiei. Ea are capitolul ei: Cap 7.
DFT si FFT. FFT (Fast Fourier Transform) este un mod mai rapid de a calcula exact aceleasi valori $X(k)$. Tot ce scrie in capitolul asta este valabil si pentru FFT. Cum functioneaza si cat de rapida este: Cap 11.
PUNCTUL a)
Ce se cere: sa scriem fiecare cosinus ca $\cos\left(2\pi\frac{m}{N}n\right)$ si sa aflam $m$.
Ce stim: $f_1 = 1000$ Hz, $f_2 = 2000$ Hz, $T_s = 1/8000$ s, $N = 8$.
Pasi:
PUNCTUL b)
Ce se cere: valorile $X(k)$ pentru $k = 0 \dots 7$ si desenul modulului.
Ce stim: de la a), $m_1 = 1$, $m_2 = 2$, $A = 1$ pentru amandoua, $N = 8$.
Pasi:
Ce vezi in desen: in stanga cele 8 esantioane ale lui $x(n)$. In dreapta raspunsul: patru bete de inaltime 4, la $k = 1, 2, 6, 7$. Sub fiecare $k$ scrie frecventa reala (pentru punctul c).
PUNCTUL c)
Ce se cere: frecventa in Hz pentru fiecare bata.
Ce stim: betele sunt la $k = 1, 2, 6, 7$; $f_s = 8000$ Hz, $N = 8$.
Pasi:
PUNCTUL a)
Ce se cere: $m$ si $A$ pentru fiecare cosinus.
Ce stim: semnalul este deja scris cu frecvente normalizate; $N = 16$.
Pasi:
PUNCTUL b)
Ce se cere: inaltimea fiecarei bete.
Ce stim: $N = 16$, $A_1 = 10$, $A_2 = 20$.
Pasi:
PUNCTUL c)
Ce se cere: desenul $|X(k)|$, cu axele etichetate.
Ce stim: bete de 80 pentru $m = 3$ si de 160 pentru $m = 5$; $N = 16$.
Pasi:
Ce vezi in desen: acelasi raspuns in doua feluri. Sus, cum iese din DFT: $k$ de la 0 la 15, cu betele la $k = 3, 5, 11, 13$. Jos, cu 0 la mijloc (cum e desenat la curs): $k$ de la $-8$ la 7, cu betele la $k = \pm 3$ si $k = \pm 5$. Oricare dintre ele e un raspuns corect.
PUNCTUL d)
Ce se cere: frecventele in Hz, daca $f_s = 16$ kHz.
Ce stim: betele sunt la $k = \pm 3$ si $k = \pm 5$; $N = 16$; $f_s = 16000$ Hz.
Pasi:
Ce vezi in desen: enuntul. Pe orizontala indicele casutei $k$ (de la 0 la 19), pe verticala $|X(k)|$. Sunt cinci bete.
PUNCTUL a)
Ce se cere: frecventa in Hz pentru fiecare bata.
Ce stim: $f_s = 2000$ Hz, $N = 20$; bete la $k = 0, 3, 5, 15, 17$.
Pasi:
PUNCTUL b)
Ce se cere: valoarea constantei si amplitudinile cosinusurilor.
Ce stim: inaltimile betelor: 40, 30, 10; $N = 20$.
Pasi:
PUNCTUL c)
Ce se cere: formula lui $x(n)$ si a lui $x(t)$.
Ce stim: de la a) si b): constanta 2; $A = 3$ pe casuta 3 (300 Hz); $A = 1$ pe casuta 5 (500 Hz).
Pasi:
G1. Un semnal este esantionat cu $f_s = 6400$ Hz si se calculeaza DFT pe $N = 64$ esantioane. Casuta $k = 5$ corespunde frecventei:
G2. $x(n) = 4\cos\left(2\pi\cdot 300\cdot\frac{n}{1200}\right)$, cu $N = 12$ esantioane. $|X(k)|$ este diferit de zero:
G3. Vrei ca DFT sa deosebeasca doua frecvente foarte apropiate (rezolutie mai fina). Ce faci?
fftshiftG4. $N = 8$, $f_s = 8000$ Hz, semnal real. In spectru apare o bata la $k = 7$. Ea reprezinta:
G5. De ce nu putem calcula DTFT pe calculator?
G6. DFT a listei constante $x = [5, 5, 5, 5]$ este:
G7. Avem lista unui cosinus si lista aceluiasi cosinus intarziat cu un esantion. Modulele $|X(k)|$ ale celor doua liste sunt:
G8. In spectrul DFT al unui semnal real, cu $N = 100$, apare o bata de inaltime 250 la $k = 10$ (si perechea ei la $k = 90$). Amplitudinea cosinusului este:
(Raspunsurile sunt in sectiunea 13.)
Raspunsurile sunt scrise asa cum le-ai pune pe foaie: scurt, cu formula si cu un exemplu.
T1. (examen 2023 A, 2026) Despre DFT: ce interval de frecvente analizeaza, care e legatura dintre $k$ si frecventele reale, ce proprietati are?
T2. De ce folosim DFT si nu DTFT?
T3. Ce este frecventa normalizata si in ce interval ia valori?
T4. Cum arata spectrul DFT al semnalului $A\cos(2\pi\frac{m}{N}n)$? Dar al unei constante?
T5. Ce este rezolutia in frecventa a DFT si cum o putem imbunatati?
T6. (examen 2023 A, 2026) Ce diferenta este intre DFT si FFT?
T7. Scrie formulele DFT si IDFT si explica termenii.
| Grila | Raspuns | De ce e corect | De ce sunt gresite celelalte |
|---|---|---|---|
| G1 | B | $f_k = k\cdot f_s/N = 5\cdot 6400/64 = 5\cdot 100 = 500$ Hz | A: $k$ nu este direct in Hz. C: 320 ar fi $f_s/20$, fara legatura. D: $f_s$ ar fi casuta $k = 64$, care nici nu exista ($k$ merge pana la 63) |
| G2 | B | $f = 300/1200 = 3/12$, deci $m = 3$; bete la $k = 3$ si $k = 12 - 3 = 9$, de inaltime $N\cdot A/2 = 12\cdot 4/2 = 24$ | A: un cosinus are doua bete, iar inaltimea nu este $A$. C: 48 ar fi $N\cdot A$, fara impartirea la 2. D: $k$ merge doar pana la 11 |
| G3 | B | rezolutia este $f_s/N$; cu $N$ mai mare, pasul e mai mic | A: face $f_s/N$ mai mare, deci mai rau. C: amplitudinea schimba doar inaltimea betelor. D: fftshift doar rearanjeaza |
| G4 | B | casuta 7 este casuta $7 - 8 = -1$, adica $-1000$ Hz; la un semnal real betele vin in perechi, $\lvert X(7)\rvert = \lvert X(1)\rvert$ | A: 7000 Hz e peste $f_s/2 = 4000$ Hz, nu poate fi reprezentata separat. C, D: bata apare la orice cosinus de 1000 Hz, este normala |
| G5 | B | suma e peste o infinitate de esantioane, iar $f$ e continuu | A: si DFT foloseste numere complexe. C: DTFT e pentru orice lista. D: nu e “lenta”, e imposibila; FFT este varianta rapida a DFT, nu a DTFT |
| G6 | B | o constanta $c$ da o singura bata $N\cdot c = 4\cdot 5 = 20$ la $k = 0$ (suma esantioanelor) | A: lipseste inmultirea cu $N$. C: constanta nu se imparte in doua bete; are una singura, la $k = 0$. D: betele la $k = 1, 3$ apar la un cosinus cu un ciclu in 4 esantioane |
| G7 | A | intarzierea schimba doar fazele; modulele raman aceleasi (§4.7) | B: deplasarea cu casute apare la inmultirea cu o exponentiala, nu la intarziere. C, D: intarzierea nu schimba cat din frecventa este in semnal |
| G8 | C | $A = 2\cdot\lvert X(m)\rvert/N = 2\cdot 250/100 = 5$ | A: inaltimea betei nu este amplitudinea. B: 2.5 ar fi $\lvert X\rvert/N$, fara inmultirea cu 2. D: 125 este jumatate din bata, nu amplitudinea |
Urmatorul capitol: Cap 7 — Convolutia si teorema convolutiei. Apoi: Cap 8 — ce se intampla cand cosinusul nu cade pe o casuta (leakage).