Laboratorul 04.

Shiftarea în fază/timp, filtrarea semnalelor periodice ș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:

    1. Secțiunea 4.8 (vezi tabelul 4.2 pentru exercițiul 1 și exemplul 4.5 pentru exercițiul 3) și Secțiunea 4.7 pentru exercițiul 2

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 și abs).
  • Modificaţi spectrul pentru a obţine un semnal în timp întârziat cu $\tau = \frac{T}{4}$, folosind formula: $c_{k}^{'} = c_{k}\cdot e^{-j\frac{2\pi k \tau}{T}}$, unde $c_k$ sunt coeficienții Fourier aflați mai devreme. (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))'
  • Reconstruiți semnalul din spectrul modificat, folosind formula $s_{r}(t) = \sum_{k=-\infty}^{\infty}{c_{k}e^{j\frac{2 \pi kt}{T}}}$ (similar cu ce-am făcut în laboratorul 3). Ar trebui să vedeți semnalul shiftat cu $\tau$, față de cel original (dacă totul a mers cum trebuie).

Exercițiul 2 - filtrare [4p]

Vom vedea în continuare ce efect are un filtru trece-jos asupra unui semnal periodic. În special ne interesează care sunt termenii din seria Fourier ai semnalului rezultat în urma filtrării.

Dacă știm funcția de transfer a unui filtru trece-jos (sau alt tip de sistem liniar și invariant în timp), care primește la intrare un semnal (pentru care putem să aflăm coeficienții Fourier $c_k$), putem să găsim coeficienții Fourier ($c_k^y$) ai semnalului rezultat ca fiind:

\begin{equation} c_k^y = H(\frac{k}{T}) \cdot c_k \end{equation}

Astfel putem reconstrui semnalul de ieșire folosind coeficienții Fourier $c_k^y$.

În acest exercițiu trebuie să calculăm coeficienții Fourier ai output-ului unui filtru trece-jos, dat fiind un semnal de intrare de tip puls cu amplitudine $A=1$ și pulsul de durată $\Delta=\frac{T}{5}$. Știm că coeficienții Fourier ai semnalului sunt dați de:

\begin{equation} c_k = A \cdot e^{-j\frac{\pi k \Delta}{T}} \cdot \frac{\text{sin}(\frac{\pi k \Delta}{T})}{\pi k} = A \cdot e^{-j\frac{\pi k \Delta}{T}} \cdot \frac{\Delta}{T} \cdot \text{sinc}(\frac{\pi k \Delta}{T}). \end{equation}

Atenție: Octave folosește funcția sinc normalizată sinc(x) = $ \frac{\text{sin}(\pi x)}{\pi x}$

Puteți vedea circuitul filtrului trece-jos în următoarea imagine:

Funcția de transfer a circuitului (pe care am determinat-o la curs) este următoarea:

\begin{equation} H(f=\frac{k}{T}) = \frac{1}{1+j 2 \pi R C \frac{k}{T}} \end{equation}

unde R și C sunt rezistența și respectiv capacitatea.

Task-ul vostru este să determinați coeficienții output-ului și să reconstruiți semnalul de ieșire pentru diferite frecvențe de tăiere.

Pentru aceasta urmăriți următorii pași:

  1. Generați semnalul puls și plotați-l. Puteți folosi T=100 de eșantioane (puncte), dintre care doar $\Delta=20$ nu sunt egale cu 0. [1p]
  2. Calculați primii N=31 coeficienți Fourier pozitivi $c_k$ ai semnalului și plotați-i ($k\in\{0,\ldots,30\}$). Pentru a îi reprezenta va trebui să folosiţi funcţia stem. De asemenea, va trebui să reprezentaţi doar magnitudinea, folosind funcţia abs. [1p]
  3. Calculați coeficienții Fourier asociați semnalului de output, $c_k^y$, folosind formula de mai sus și plotați-i ca mai sus. Pentru asta va trebui să alegeți o frecvență de cut-off $f_c$ care va determina valorile R și C ( $RC = \frac{1}{2\pi f_c}$ ). [1p]

Puteți încerca următoarele valori pentru $f_c$:

  1. $f_c = 0.1/T$ (frecvența de cut-off e mult mai mică decât frecvența fundamentală a semnalului ⇒ filtrare puternică)
  2. $f_c = 1/T$ (frecvența de cut-off = frecvența fundamentală ⇒ puterea este înjumătățită)
  3. $f_c = 10/T$ (frecvența de cut-off mult mai mare decât frecvența fundamentală ⇒ filtrare slabă)
  4. Reconstruiți semnalul de output cu ajutorul seriei Fourier (folosind formula de la exercițiul 1) [1p]

Semnalele reale au următoarea proprietate: coeficienții Fourier negativi sunt conjugații complecși ai celor pozitivi $c_{-k} = c_{k}^*$. Pentru reconstrucția semnalului nostru puls, trebuie să folosiți și conjugații complecși ai coeficienților pozitivi.

Exercițiul 3 – modularea în amplitudine [2p]

Î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$. [0.5p]
  • Calculați și plotați (cu stem) spectrul folosind FFT (Transformata Fourier Rapidă), pe care nu am făcut-o încă la curs, dar o vom face în următoarele cursuri. Pentru moment, puteți folosi acest cod: [0.5p]
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
  • 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)$. [0.5p]
  • 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? [0.5p]

Exercițiul 4 – modularea în amplitudine [Bonus]

Î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). Pentru a opri sunetul folosiți comanda
     clear sound 

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.

ps/labs/04.txt · Last modified: 2021/10/25 15:30 by ionut.gorgos
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0