This shows you the differences between two versions of the page.
ps:laboratoare:03 [2017/10/29 16:39] andrei.nicolicioiu |
ps:laboratoare:03 [2020/10/07 17:42] (current) ionut.gorgos |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Laboratorul 03. ===== | ===== Laboratorul 03. ===== | ||
- | /* Make it hidden before lab, unhide (e.g. note) afterwards */ | + | /* Make it hidden before lab, unhide (e.g. note) afterwards |
- | /*<hidden>*/ | + | <hidden> */ |
==== Circuite liniare şi funcţia de transfer ==== | ==== Circuite liniare şi funcţia de transfer ==== | ||
Line 26: | Line 26: | ||
- Schimbaţi valoarea frecvenței semnalului de intrare astfel încât să fie mai apropiată, mai mică sau mai mare decât frecvența de tăiere $f_{c}$ și verificați rezultatele [1p] | - Schimbaţi valoarea frecvenței semnalului de intrare astfel încât să fie mai apropiată, mai mică sau mai mare decât frecvența de tăiere $f_{c}$ și verificați rezultatele [1p] | ||
- | /*<hidden>*/ | + | Frecvenţa de tăiere este frecvența pentru care avem egalitatea: $|{H(f)}| = \frac{max(|{H(f)}|)}{\sqrt2}$. Pentru a o găsi vom folosi definiția modulului unui număr complex $|a+jb|=\sqrt{a^2+b^2}$ și proprietatea $|\frac{a}{b}| = \frac{|a|}{|b|}$. |
- | <note tip> | + | |
- | Puteţi să găsiţi funcţia de transfer prin înlocuirea elementelor din circuit cu impedanţele complexe, unde $Z_R=R$ şi $Z_C = \frac{1}{j2 \pi f C}$ . Atunci $V_{out} = \frac{Z_R}{Z_R + Z_C}V_{in}$ . După ce introducem valorile $Z_R$ şi $Z_C$ în formulă obţinem funcţia de transfer $H(f) = \frac{j2 \pi fRC}{1 + j2 \pi fRC}$. | + | |
- | Circuitul este un filtru trece sus: dacă frecvenţa tinde la zero, $H(f \rightarrow 0) = 0$. Dacă $f$ este foarte mare, atunci $H(f \rightarrow \infty) = 1$. Deci avem un filtru trece sus. | + | === Exercițiul 2 [4p] === |
- | Frecvenţa de tăiere o puteţi găsi din condiţia $|{H(f)}| = \frac{max(|{H(f)}|)}{\sqrt2}$. În acest caz, $f_c = \frac{1}{2 \pi RC}$ pare să satisfacă condiţia. Verificaţi că studenţii au înţeles toate derivările şi că au verificat că aceasta este frecvenţa. | + | În acest exercițiu vom începe să lucrăm cu seria Fourier, unul dintre cele mai importante instrumente în procesarea digitală a semnalelor. Va trebui să vă familiarizați cu acesta. |
- | Găsiţi că $RC = \frac{1}{2 \pi f_c}$, undeva la $32\cdot10^{-6}$ în cazul nostru. Deci putem folosi valorile $R = 3.2 k \Omega$ şi $C = 10 nF$, de exemplu. | + | La curs am vorbit despre faptul că orice semnal periodic de perioada $T$ se poate descompune într-o sumă de semnale de bază. Această descompunere poarta numele de seria Fourier și ne arată cum se descompune orice semnal periodic într-o sumă de sinusoide. |
- | Exemplu de circuit în Ngspice: | + | Forma clasica a seriei Fourier: |
- | <code> | + | |
- | *RC Filter Transient example | + | |
- | + | ||
- | V1 in 0 sin(0 1 1e4) | + | |
- | C1 in out 10n | + | |
- | R1 out 0 3.2k | + | |
- | + | ||
- | .TRAN 10u 2m | + | |
- | .end | + | |
- | </code> | + | |
- | În căsuţa de plot puneţi asta: | + | \begin{equation} |
- | <code> | + | s(t) = a_0 + \sum_{k=1}^{\infty}{a_k \cos( \frac{2 \pi kt}{T} ) } + \sum_{k=1}^{\infty}{b_k \sin( \frac{2 \pi kt}{T} ) } |
- | v(in) v(out) | + | \end{equation} |
- | </code> | + | |
- | Jucaţi-vă cu valoarea lui $V_1$(de exemplu 5e3 este la frecvenţa de tăiere, 1e2 ar trebui să fie mai redus, în timp ce la 1e4 ar trebui să treacă). Notaţi că pentru diferite frecvenţe, s-ar putea să fiţi nevoiţi să ajustaţi intervalul de simulare, adică ultima valoare din linia cu ".TRAN". | + | Folosind formula lui Euler: $e^{jt} = \cos(t) + j \sin(t)$ și folosind coeficienții complexi $c_k \in \mathbb{C}$ |
- | </note> | + | , unde $c_k = \frac{a_k - b_k}{2}$ pentru $k > 0$, $c_k = \frac{a_k + b_k}{2}$ pentru $k < 0$ și $c_k = \frac{a_k}{2}$ pentru $k = 0$ obținem formularea echivalentă: |
- | /*</hidden>*/ | + | |
- | === Exercițiul 2 [4p] === | + | \begin{equation} |
+ | s(t) = \sum_{k=-\infty}^{\infty}{c_{k}e^{j\frac{2 \pi kt}{T}}} | ||
+ | \end{equation} | ||
- | În acest exercițiu vom începe să lucrăm cu Transformata Fourier, unul dintre cele mai importante instrumente în procesarea digitală a semnalelor. Va trebui să vă familiarizați cu acesta. | + | Având un semnal dat $s(t)$ putem calcula coeficienții Fourier după formula: |
+ | \begin{equation} | ||
+ | c_k = \frac{1}{T} \int_{t=0 }^{T}{s(t)e^{-j\frac{2 \pi kt}{T}}} | ||
+ | \end{equation} | ||
- | La curs am demonstrat că un semnal dreptunghiular, de amplitudine "A" pe intervalul $[0, \frac{T}{2}]$ și de amplitudine "-A" pe intervalul $[\frac{T}{2}, T]$ are coeficienții Fourier daţi de formula următoare: | + | Folosind formula precedenta, la curs am demonstrat că un semnal dreptunghiular, de amplitudine "A" pe intervalul $[0, \frac{T}{2}]$ și de amplitudine "-A" pe intervalul $[\frac{T}{2}, T]$ are coeficienții Fourier daţi de formula următoare: |
\begin{equation} | \begin{equation} | ||
Line 76: | Line 67: | ||
Principalii paşi pentru asta sunt: | Principalii paşi pentru asta sunt: | ||
- Creaţi semnalul original. Utilizaţi, de exemplu $T = 100$ şi $A = 3$ şi generaţi un semnal cu amplitudinea $3$ peste primele 50 de eşantioane şi $-3$ peste ultimele 50. Reprezentaţi grafic semnalul ca funcţie de timp (unde timpul începe de la 1 până la 100). [1p] | - Creaţi semnalul original. Utilizaţi, de exemplu $T = 100$ şi $A = 3$ şi generaţi un semnal cu amplitudinea $3$ peste primele 50 de eşantioane şi $-3$ peste ultimele 50. Reprezentaţi grafic semnalul ca funcţie de timp (unde timpul începe de la 1 până la 100). [1p] | ||
- | - Calculaţi coeficienţii Fourier $c_{k}$ pentru $k = [-c_{max}, c_{max}]$. De exemplu pentru $c_{max} = 3$, avem $k = {-3,-2,-1,0,1,2,3}$. Reprezentaţi grafic coeficienţii şi observaţi simetria lor în jurul lui $k = 0$. 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] | + | - Calculaţi coeficienţii Fourier $c_{k}$ pentru $k = [-k_{max}, k_{max}]$. De exemplu pentru $k_{max} = 3$, avem $k = {-3,-2,-1,0,1,2,3}$. Reprezentaţi grafic coeficienţii $c_k$ şi observaţi simetria lor în jurul lui $k = 0$. 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] |
- Reconstruiţi semnalul doar cu ajutorul acestor coeficienţi, folosind formula din curs: $s(t) = \sum_{k=-\infty}^{\infty}{c_{k}e^{j\frac{2 \pi kt}{T}}}$. [1p] | - Reconstruiţi semnalul doar cu ajutorul acestor coeficienţi, folosind formula din curs: $s(t) = \sum_{k=-\infty}^{\infty}{c_{k}e^{j\frac{2 \pi kt}{T}}}$. [1p] | ||
- Reprezentaţi grafic noul semnal reconstruit şi comparaţi-l cu originalul. Pentru a plota semnalul va trebui să ajustaţi limita verticală a plot-ului, folosind funcţia 'ylim'. Ajustaţi limita la ceva de genul $[-A-1, A+1]$. [1p] | - Reprezentaţi grafic noul semnal reconstruit şi comparaţi-l cu originalul. Pentru a plota semnalul va trebui să ajustaţi limita verticală a plot-ului, folosind funcţia 'ylim'. Ajustaţi limita la ceva de genul $[-A-1, A+1]$. [1p] | ||
- | - Folosiţi diferite valori pentru $c_{max}$ (de exemplu, 1, 5, 11, 49) şi observaţi diferenţa. Vedeţi cum, folosind din ce în ce mai mulţi coeficienţi, ne permitem să construim mai bine semnalul original. [Bonus 1p] | + | - Folosiţi diferite valori pentru $k_{max}$ (de exemplu, 1, 5, 11, 49) şi observaţi diferenţa. Vedeţi cum, folosind din ce în ce mai mulţi coeficienţi, ne permitem să construim mai bine semnalul original. |
Graficele voastre trebuie să arate similar cu acestea: | Graficele voastre trebuie să arate similar cu acestea: | ||
Line 87: | Line 78: | ||
{{:ps:laboratoare:reconstructed_signal.png?200|}} | {{:ps:laboratoare:reconstructed_signal.png?200|}} | ||
- | /*<hidden>*/ | + | <note> Semnalele reale au următoarea proprietate: coeficienții Fourier negativi sunt conjugații complexi ai celor pozitivi $c_{-k} = c_{k}^*$. Puteți verifica pentru semnalul nostru dreptunghiular. De asemenea, semnalele pare s(-t) = s(t), au coeficienții complet reali, obținând $c_{−k}=c_{k}$ iar semnalele impare s(-t) = -s(t), au coeficienții complet imaginari, obținând $c_{−k}=−c_{k}$.</note> |
- | <note tip> | + | |
- | Acest cod ar trebui să rezolve exerciţiul: | + | |
- | <code matlab> | + | |
- | A = 3; | + | |
- | T = 100; | + | |
- | x = 1:T; | + | |
- | s = -A*ones(1, T); | + | |
- | s(1:(T/2)) = A; | + | |
- | + | ||
- | h = figure; | + | |
- | plot(x,s); | + | |
- | ylabel('Amplitude'); | + | |
- | xlabel('Time'); | + | |
- | ylim([-A-0.5, A+0.5]); | + | |
- | title('Original signal s(t)'); | + | |
- | print(h, '-dpng', 'original_signal.png'); | + | |
- | + | ||
- | cmax = 20; | + | |
- | kv = -cmax:cmax; | + | |
- | N = length(kv); | + | |
- | coef = zeros(N,1); | + | |
- | for i=1:N | + | |
- | k = kv(i); | + | |
- | if mod(k,2) ~= 0 | + | |
- | coef(i) = (2*A) / (j*pi*k); | + | |
- | end | + | |
- | end | + | |
- | + | ||
- | h = figure; | + | |
- | stem(kv, abs(coef)); | + | |
- | xlabel('Frequency component (k)'); | + | |
- | ylabel('Magnitude of component'); | + | |
- | title('Fourier coefficients'); | + | |
- | print(h, '-dpng', 'coefficients.png'); | + | |
- | + | ||
- | + | ||
- | sr = zeros(1, T); | + | |
- | for t=1:T | + | |
- | for i=1:N | + | |
- | sr(t) = sr(t) + coef(i)*exp(j*2*pi*kv(i)*t/T); | + | |
- | end | + | |
- | end | + | |
- | + | ||
- | h=figure; | + | |
- | plot(1:T, sr); | + | |
- | ylim([-A-1, A+1]); | + | |
- | title('Reconstructed signal s(t)'); | + | |
- | ylabel('Amplitude'); | + | |
- | xlabel('Time'); | + | |
- | print(h, '-dpng', 'reconstructed_signal.png'); | + | |
- | </code> | + | |
- | </note> | + | |
- | /*</hidden>*/ | + | |
- | * Responsabil: [[ionutgorgos@gmail.com|Ionuţ Gorgos]] | ||
- | * Data publicării: 15.10.2017 | ||