This is an old revision of the document!
Laboratorul 05.
Shiftarea în fază/timp şi modularea în amplitudine
În acest laborator vom încerca să experimentăm câteva dintre proprietăţile Transformatei Fourier, care ne permite să shiftăm/întârziem într-un domeniu şi să observăm un anumit efect în alt domeniu. De exemplu, la curs, am arătat că o întârziere în domeniul “Timp” înseamnă o shiftare de frecvenţă în domeniul “Frecvenţă”.
Materiale ajutătoare:
-
Secțiunea 4.8 (vezi tabelul 4.2 în particular)
Exercițiul 1 – shiftarea în frecvență [4p]
În acest exerciţiu vrem să întârziem un semnal în timp, prin modificarea spectrului său (vezi proprietăţile Transformatei Fourier). Vom folosi un semnal pe care l-am mai folosit şi anume, semnalul dreptunghiular cu amplitudinea $A$ pe intervalul $[0, \frac{T}{2}]$ şi cu amplitudinea $-A$ pe intervalul $[\frac{T}{2}, T]$ care are binecunoscutul spectru dat de:
\begin{equation}
c_{k} = \left\lbrace
\begin{array}{}
\frac{2}{j \pi k}A \qquad k \quad impar \\0 \qquad \quad k \quad par
\end{array}
\right.
\end{equation}
Pentru acest task va trebui să urmaţi următorii paşi:
Reprezentaţi grafic semnalul original (considerați A = 1 și T = 100).
Calculaţi câţiva coeficienţi Fourier $c_k$. Faceţi asta, similar cu ce am făcut în laboratoarele precedente, folosind $k\in\{-81,\ldots,81\}$.
Plotaţi modulul coeficienţilor (folosind stem).
Modificaţi spectrul pentru a obţine un semnal în timp întârziat cu $\tau = \frac{T}{4}$ (vezi tabelul 4.2 din carte).
Plotaţi coeficienţii după modificare. Vedeţi vreo diferenţă? De ce?
Ce se întâmplă cu faza? Verificați cu următorul cod:
rad2deg(angle(coeficienti))'
Exercițiul 2 – modularea în amplitudine [4p]
În acest exercițiu va trebui să încercați să efectuați modularea în amplitudine asupra următorului semnal exponențial (eng. exponential decay signal) : $s(t) = e^{-at}u(t)$, unde $a>0$ și $u(t)$ este treapta unitară (i.e. egală cu 1 pentru $t\ge0$, 0 altfel).
Obiectivul vostru
Folosiți o frecvență purtătoare $f_c = \frac{20}{T}$, unde $T$ este numărul eșantioanelor (samples).
Pentru asta va trebui să urmăriți acești pași:
Creați semnalul $s(t)$ pentru $t\in\{1,\ldots,T=128\}$, folosind $a=0.05$.
Calculați și plotați (cu 'stem') spectrul folosind DFT (Transformata Fourier Discretă), pe care nu am făcut-o încă la curs, dar o vom face în următoarele cursuri. Vom considera că DFT are același număr de componente ca și semnalul de intrare. Formulele pentru DFT și pentru inversa ei (IDFT) sunt următoarele:
\begin{equation}
DFT: S(k) = \sum^{N-1}_{n = 0}{s(n)e^{\frac{-j 2 \pi n k}{K}}}, k \in \{0, ..., K-1\} \\
IDFT\ (inversa\ DFT): s(n) = \frac{1}{K}\sum^{K-1}_{k = 0}{S(k)e^{\frac{j 2 \pi n k}{K}}}, n \in \{0, ..., N-1\}
\end{equation}
h = figure;
fx = zeros(1, T);
findex = T/2*linspace(0,1,T/2);
fx((T/2)+1:end) = findex;
fx(1:T/2) = [-T/2, -findex(end:-1:2)];
fs = fft(s);
stem(fx, abs(fftshift(fs)));
xlabel('Frequency component (k)');
ylabel('Magnitude of component');
title('Fourier coefficients before amplitude modulation');
print(h, '-dpng', 'coefficients_before_amod.png'); % doar daca vreti sa salvati ca png graficull
Comparați graficele obținute cu DFT și cele cu FFT.
Modulați semnalul în amplitudine folosind frecvența purtătoare $f_c = \frac{20}{T}$, i.e. face 20 de perioade complete în $T=128$ eșantioane ale semnalului $s(t)$. O variantă simplă de modulare este să calculați: $x(t) = (1+s(t)) \cdot \cos(2\pi f_c t)$.
Calculați și plotați (cum am făcut mai devreme, cu funcția fft) spectrul semnalului modulat în amplitudine. Comparați-l cu spectrul semnalului original. Este ceea ce v-ați așteptat?
Exercițiul 3 – modularea în amplitudine [2p]
În acest exercițiu veți încerca să refaceți un semnal modulat în amplitudine (click aici).
Urmați următorii pași:
Descărcați semnalul modulat și încărcați-l în Octave folosind funcția:
load('lab05_modulated_sound.mat')
Se va încărca semnalul, precum și Fs, frecvența de eșantionare.
Semnalul modulat provine dintr-un semnal original $s(t)$ care a fost înmulțit cu un semnal cosinus de frecvență $fc$, cos($2 \pi \cdot fc \cdot t$), unde t=0:1/Fs:timp_maxim. Precum ați observat și în exercițiul anterior spectrul semnalului modulat conține spectrul semnalului original shiftat la frecvența fc și -fc. Plotați spectrul pentru a vedea acest lucru.
Dacă înmulțim (din nou) semnalul primit cu același semnal cosinus ar trebui să putem recupera semnalul original după aplicarea unui filtru trece-jos. Folosiți fc = Fs / 8.
Pentru a realiza efectul unui filtru trece-jos vom egala cu zero coeficienții corespunzători frecvențelor peste un prag.
Având noii coeficienți putem reface semnalul în timp folosind inversa Fourier. Realizați acest lucru folosind funcția ifft.
Puteți asculta semnalul rezultat folosind funcția Octave sound(semnal).
Atenție: Vom învăța la curs că spectrul obținut prin transformata Fourier discretă este periodic. Funcțiile fft / ifft consideră primii jumătate plus unu coeficienți pentru frecvențele pozitive, apoi următoarea jumătate corespunzătoare coeficienților negativi. Pentru a obține un spectru centrat în zero (doar ca să îl vizualizăm precum ne-am obișnuit) vom folosi funcția fftshift.