Laboratorul 04.
Shiftarea în fază/timp și filtrarea semnalelor periodice
Prezentarea PowerPoint pentru acest laborator poate fi găsită aici: aici
Î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 pentru exercițiul 1) și Secțiunea 4.7 pentru exercițiul 2
Exercițiul 1 – shiftarea în frecvență
[5p]
Î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 \cdot A}{j \pi k} \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). [1p]
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\}$. [1p]
Plotaţi modulul coeficienţilor (folosind plt.stem și np.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). [1p]
Plotaţi coeficienţii după modificare. Vedeţi vreo diferenţă? De ce?
Ce se întâmplă cu faza? Plotaţi coeficienții înainte și după modificare. Puteți afla faza coeficienților cu următorul cod: [1p]
coefficients_phase = np.angle(ck, deg=True)
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). [1p]
Exercițiul 2 - filtrare
[5p]
Vom vedea în continuare ce efect are un filtru trece-jos asupra semnalului puls periodic. În special ne interesează care sunt termenii din seria Fourier ai semnalului rezultat în urma filtrării.
Dacă știm funcția de transfer $H(f)$ 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 semnalului de ieșire al 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: NUMPY 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 ieșirii ($c_k^y$) și să reconstruiți semnalul de ieșire pentru diferite frecvențe de tăiere.
Pentru aceasta urmăriți următorii pași:
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]
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 plt.stem. De asemenea, va trebui să reprezentaţi doar magnitudinea, folosind funcţia np.abs. [1p]
Calculați coeficienții Fourier asociați semnalului de ieșire, $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]
Reconstruiți semnalul de ieșire cu ajutorul seriei Fourier (folosind formula de la exercițiul 1) [2p]
Puteți încerca următoarele valori pentru $f_c$:
$f_c = 0.1/T$ (frecvența de cut-off e mult mai mică decât frecvența fundamentală a semnalului ⇒ filtrare puternică)
$f_c = 1/T$ (frecvența de cut-off = frecvența fundamentală ⇒ puterea este înjumătățită)
$f_c = 10/T$ (frecvența de cut-off mult mai mare decât frecvența fundamentală ⇒ filtrare slabă)
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.