This shows you the differences between two versions of the page.
|
ps:labs_python:02-04 [2026/09/26 23:29] darius.necula |
ps:labs_python:02-04 [2026/09/28 09:55] (current) darius.necula [Shiftarea în fază/timp și filtrarea semnalelor periodice] |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| === Exercițiul 1 === | === Exercițiul 1 === | ||
| - | [<color red>2p</color>] | ||
| Pentru a transmite simboluri (ex: litere din alfabet) modemurile folosesc diferite frecvențe și mai multe niveluri de amplitudine. O transmisie se face într-o perioadă de timp T (interval de transmisie) și poate conține o suprapunere de mai multe semnale, e.g. suma a două semnale de amplitudini și frecvențe diferite: | Pentru a transmite simboluri (ex: litere din alfabet) modemurile folosesc diferite frecvențe și mai multe niveluri de amplitudine. O transmisie se face într-o perioadă de timp T (interval de transmisie) și poate conține o suprapunere de mai multe semnale, e.g. suma a două semnale de amplitudini și frecvențe diferite: | ||
| Line 12: | Line 11: | ||
| $x(t) = A_{1} \cdot sin(2\cdot \pi\cdot f_{1}\cdot t) + A_{2} \cdot sin(2\cdot \pi\cdot f_{2}\cdot t)$ | $x(t) = A_{1} \cdot sin(2\cdot \pi\cdot f_{1}\cdot t) + A_{2} \cdot sin(2\cdot \pi\cdot f_{2}\cdot t)$ | ||
| - | - Care este cel mai mic interval de transmisie care are sens să fie folosit, dacă $f_1 = 1600$ Hz și $f_2 = 1800$ Hz? Cu alte cuvinte, cât ar trebui să fie $T$ astfel încât semnalul să aibă un număr întreg de cicluri? [<color red>1p</color>] | + | - Care este cel mai mic interval de transmisie care are sens să fie folosit, dacă $f_1 = 1600$ Hz și $f_2 = 1800$ Hz? Cu alte cuvinte, cât ar trebui să fie $T$ astfel încât semnalul să aibă un număr întreg de cicluri? |
| - | - Afişaţi semnalul produs de modem pe parcursul a trei intervale de transmisie. Pentru primul interval de transmisie puteți folosi $A_1 = 0$ și $A_2 = 1$, pentru al doilea interval $A_1 = 1$ și $A_2 = 1$, iar pentru al treilea interval $A_1 = 1$ și $A_2 = 0$. Aşa cum am învăţat în laboratorul trecut adăugaţi titlu şi etichete plot-ului. [<color red>1p</color>] | + | - Afişaţi semnalul produs de modem pe parcursul a trei intervale de transmisie. Pentru primul interval de transmisie puteți folosi $A_1 = 0$ și $A_2 = 1$, pentru al doilea interval $A_1 = 1$ și $A_2 = 1$, iar pentru al treilea interval $A_1 = 1$ și $A_2 = 0$. Aşa cum am învăţat în laboratorul trecut adăugaţi titlu şi etichete plot-ului. |
| Ar trebui să obțineți ceva similar: | Ar trebui să obțineți ceva similar: | ||
| {{ :ps:labs_python:semnal_modem.png?600 |}} | {{ :ps:labs_python:semnal_modem.png?600 |}} | ||
| Line 26: | Line 25: | ||
| </note> | </note> | ||
| === Exerciţiul 2 === | === Exerciţiul 2 === | ||
| - | [<color red>2.5p</color>] | ||
| La curs am văzut că putem descompune semnalele într-o sumă de mai multe semnale de bază (ramp, step etc.). Pentru acest exerciţiu veţi încerca să folosiţi semnalele 'step' şi 'ramp' pentru a crea semnalul reprezentat cu negru în acest slide: | La curs am văzut că putem descompune semnalele într-o sumă de mai multe semnale de bază (ramp, step etc.). Pentru acest exerciţiu veţi încerca să folosiţi semnalele 'step' şi 'ramp' pentru a crea semnalul reprezentat cu negru în acest slide: | ||
| Line 66: | Line 64: | ||
| Pentru asta ar trebui să: | Pentru asta ar trebui să: | ||
| - | - creaţi un semnal 'unit step' numit ustep.py, care practic întoarce o secvenţă de N valori de 1 [<color red>0.5p</color>] | + | - creaţi un semnal 'unit step' numit ustep.py, care practic întoarce o secvenţă de N valori de 1 |
| - să setaţi numărul de puncte la $N = 200$ şi delay-ul la $T = 100$ | - să setaţi numărul de puncte la $N = 200$ şi delay-ul la $T = 100$ | ||
| - | - să creaţi cele 3 semnale (care urmează să fie combinate) folosind 'ramp' şi 'ustep' cu $N$ şi $T$ de mai sus. [<color red>1p</color>] | + | - să creaţi cele 3 semnale (care urmează să fie combinate) folosind 'ramp' şi 'ustep' cu $N$ şi $T$ de mai sus. |
| * Creați secvența de input ca un șir cu elemente de la 1 la N cu pasul 1 | * Creați secvența de input ca un șir cu elemente de la 1 la N cu pasul 1 | ||
| * Creați semnalul rampă, tot cu N elemente | * Creați semnalul rampă, tot cu N elemente | ||
| * Puteţi întârzia un semnal cu $T$ în felul următor (o posibilă soluție): <code python> s_delayed = np.pad(s[:N - T], (T, 0)) </code>[[https://numpy.org/doc/stable/reference/generated/numpy.pad.html|Documentație np.pad]]. Mai puteți concatena zerouri folosind //np.concatenate//, //np.hstack//, etc. | * Puteţi întârzia un semnal cu $T$ în felul următor (o posibilă soluție): <code python> s_delayed = np.pad(s[:N - T], (T, 0)) </code>[[https://numpy.org/doc/stable/reference/generated/numpy.pad.html|Documentație np.pad]]. Mai puteți concatena zerouri folosind //np.concatenate//, //np.hstack//, etc. | ||
| - combinaţi cele 3 semnale | - combinaţi cele 3 semnale | ||
| - | - afişaţi toate cele 4 semnale (cele 3 individuale şi combinaţia lor) [<color red>1p</color>] | + | - afişaţi toate cele 4 semnale (cele 3 individuale şi combinaţia lor) |
| * folosiţi culori diferite (eventual grosimi de linie diferite) pentru fiecare semnal şi afişaţi legenda pentru a diferenţia semnalele. | * folosiţi culori diferite (eventual grosimi de linie diferite) pentru fiecare semnal şi afişaţi legenda pentru a diferenţia semnalele. | ||
| Line 91: | Line 89: | ||
| === Exerciţiul 3 === | === Exerciţiul 3 === | ||
| - | [<color red>2p</color>] | ||
| La curs am văzut că datorită egalității lui Euler putem scrie o exponenţială complexă ca o sumă de sin şi cos: | La curs am văzut că datorită egalității lui Euler putem scrie o exponenţială complexă ca o sumă de sin şi cos: | ||
| Line 141: | Line 138: | ||
| </code> | </code> | ||
| </note> | </note> | ||
| - | <hidden> | ||
| - | === Exerciţiul 4 [1.5p] === | ||
| - | |||
| - | La curs am discutat despre sisteme paralele. Acum vom folosi un exemplu simplu de sistem paralel folosit pentru a crea efectul de ecou. Ideea de bază e ca un sistem să replice semnalul de intrare în timp ce un altul îl întârzie. La final cele două sunt adunate. | ||
| - | |||
| - | Task-ul vostru pentru a replica experimentul: | ||
| - | * Având semnalul de intrare cu o voce în fişierul {{:ps:labs:voice.mat|this}}. | ||
| - | * Faceţi o copie a semnalului și întârziaţi-o (de ex cu 0.1 secunde. Trebuie știut că semnalul este eșantionat cu o frecvență de 8000 Hz). | ||
| - | * Adunați cele 2 semnale. | ||
| - | * Ascultaţi semnalul original și pe cel rezultat pentru a auzi diferenţa. Pentru a asculta semnalele folosiţi funcţia 'sound'. | ||
| - | |||
| - | </hidden> | ||
| === Exerciţiul 4 === | === Exerciţiul 4 === | ||
| - | [<color red>3.5p</color>] | ||
| Avem un sistem de feedback precum cel din imaginea următoare: | Avem un sistem de feedback precum cel din imaginea următoare: | ||
| Line 186: | Line 170: | ||
| </code> | </code> | ||
| Rulaţi sistemul de N = 20 ori şi afişaţi outputul sistemului. | Rulaţi sistemul de N = 20 ori şi afişaţi outputul sistemului. | ||
| + | |||
| + | ==== Semnale în domeniul frecvență ==== | ||
| + | |||
| + | Materiale ajutătoare: | ||
| + | - {{:ps:labs:fundamentals-of-electrical-engineering-i-9.72.pdf|Cartea lui Don Johnson}} | ||
| + | - Secțiunile 4.2 (Exercițiul 1), 4.5 (Exercițiul 2), 4.6 (Exercițiul 3) | ||
| + | - [[https://lpsa.swarthmore.edu/Fourier/Series/WhyFS.html|Funcții ca sume de sinusoidale]] | ||
| + | |||
| + | === Exercițiul 5 - seria Fourier === | ||
| + | |||
| + | Î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. | ||
| + | |||
| + | Orice semnal periodic de perioada $T$ se poate descompune într-o sumă de semnale de bază. Această descompunere poartă numele de seria Fourier și ne arată cum se descompune orice semnal periodic într-o sumă de sinusoide: | ||
| + | |||
| + | \begin{equation} | ||
| + | s(t) = \sum_{k=-\infty}^{\infty}{c_{k}e^{j\frac{2 \pi kt}{T}}} | ||
| + | \end{equation} | ||
| + | |||
| + | 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}}}dt | ||
| + | \end{equation} | ||
| + | |||
| + | Folosind formula precedentă, 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} | ||
| + | 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} | ||
| + | |||
| + | <note> | ||
| + | Semnalele reale au următoarea proprietate: coeficienții Fourier negativi sunt conjugații complecși 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> | ||
| + | |||
| + | În acest exerciţiu va trebui să încercaţi să reconstruiţi semnalul dreptunghiular folosind un număr limitat de coeficienți pentru a vedea diferenţa dintre semnalul original și cel reconstruit. | ||
| + | |||
| + | 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. Ajustaţi limita verticală a plot-ului în range-ul $[-A-1, A+1]$ pentru a putea vedea mai bine graficul. | ||
| + | - 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 //plt.stem//. De asemenea, va trebui să reprezentaţi doar magnitudinea, adică valoarea absolută a coeficienților. | ||
| + | - Reconstruiţi semnalul doar cu ajutorul acestor coeficienţi, folosind formula: $s(t) = \sum_{k=-\infty}^{\infty}{c_{k}e^{j\frac{2 \pi kt}{T}}}$. | ||
| + | - Reprezentaţi grafic noul semnal reconstruit și comparați-l cu originalul. | ||
| + | - Folosiţi diferite valori pentru $k_{max}$ (de exemplu, 1, 5, 11, 49) și observaţi diferenţa. Vedeţi cum folosirea din ce în ce a mai multor coeficienţi ne permite să reconstruim mai bine semnalul original. | ||
| + | |||
| + | Graficele voastre trebuie să arate similar cu acestea: | ||
| + | |||
| + | {{:ps:labs:original_signal.png?200|}} | ||
| + | {{:ps:labs:coefficients.png?200|}} | ||
| + | {{:ps:labs:reconstructed_signal.png?200|}} | ||
| + | |||
| + | === Exercițiul 6 - aproximare de semnale === | ||
| + | |||
| + | Orice semnal este format dintr-o sumă de o infinitate de sinusoide complexe. Ce se întâmplă dacă facem suma doar peste un număr finit de astfel de termeni, ignorând termenii de ordin superior? În acest caz vom forma un semnal care aproximează semnalul original, iar aproximarea este cu atât mai bună cu cât folosim mai mulți termeni. | ||
| + | |||
| + | În acest exercițiu vom vedea cât de bine este aproximat un semnal, prin observarea erorii $\epsilon_{N}$ dintre semnalul original $s(t)$ și aproximarea $s_{N}(t)$ folosind doar termeni de ordin $\le N$ din seria Fourier (termenii corespunzători $k \in \{-N, \ldots, N\} $ ) | ||
| + | |||
| + | |||
| + | Vom calcula rădăcina pătratică medie (eng. root mean square - RMS) a semnalului de eroare $\epsilon_{N}$ dat de: | ||
| + | |||
| + | \begin{equation} | ||
| + | \epsilon_{N}(t) = s(t) - s_{N}(t), | ||
| + | \end{equation} | ||
| + | |||
| + | Aproximarea $s_{N}(t)$ este dată de primii termeni din Seria Fourier. | ||
| + | \begin{equation} | ||
| + | s_N(t) = \sum_{k=-N}^N c_k e^\frac{j 2 \pi k t}{T} | ||
| + | \end{equation} | ||
| + | |||
| + | iar RMS-ul lui $\epsilon_N$ este dat de: | ||
| + | \begin{equation} | ||
| + | \text{rms}(\epsilon_N) = \sqrt{\sum_{k=-\infty}^{-{N-1}} |c_k|^2 + \sum_{k=N+1}^\infty |c_k|^2} = \sqrt{2\cdot \sum_{k=N+1}^\infty |c_k|^2} | ||
| + | \end{equation} | ||
| + | |||
| + | Task-ul vostru este să determinați valoarea lui N astfel încât $\text{rms}(\epsilon_N)$ este aproape 0 și după aceea să vedeți că într-adevăr semnalul reconstruit aproximează bine semnalul original. | ||
| + | |||
| + | O să folosim din nou semnalul dreptunghiular, de amplitudine 'A' în intervalul [0, T/2] și '-A' în intervalul [T/2, T] care are coeficienții Fourier dați de formula: | ||
| + | |||
| + | \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 asta ar trebui să urmăriți următorii pași: | ||
| + | - Creați semnalul original. Folosiți, de exemplu T=100 și A=1 pentru a genera semnalul cu valoarea 1 în primele 50 de eșantioane și -1 în ultimele 50. Reprezentaţi grafic semnalul ca funcţie de timp. | ||
| + | - Calculați coeficienții Fourier $c_{k}$ pentru $k=[0:500]$. Plotați amplitudinile $|c_k|^2$ ca funcție de $k$, folosind //stem// și //abs//. | ||
| + | - Calculați $\text{rms}(\epsilon_{N})$ pentru fiecare $N \in \{1, \ldots, 500\}$. Vedeți explicația de mai jos pentru a putea calcula RMS folosind Teorema lui Parseval. Plotați (cu //plot//, //semilogy// și //loglog//) valoarea rms pentru $N \in \{1, \ldots, 500\}$. | ||
| + | - Determinați cel mai mic $N$ astfel încât $\text{rms}(\epsilon_{N}) < 0.05$ și reconstruiți semnalul original folosind acest număr de coeficienți. Trebuie să folosiți atât coeficienții pozitivi cât și negativi pentru a reconstrui semnalul. Reconstruiţi semnalul doar cu ajutorul acestor coeficienţi, folosind formula: $s_N(t) = \sum_{k=-N}^{N}{c_{k}e^{j\frac{2 \pi kt}{T}}}$. Reprezentați grafic semnalul reconstruit și comparați-l cu semnalul inițial. | ||
| + | |||
| + | <note> Pentru a calcula RMS al erorii trebuie să calculăm suma pentru toți coeficienții $c_k$ cu $|k|> k_0 $, adică o infinitate de termeni. Putem încerca doar să aproximăm această sumă, sau ne putem folosi de unele proprietăți ale seriei Fourier pentru a o calcula exact. Mai precis, vom folosi Teorema lui Parseval prin care putem calcula puterea unui semnal în două feluri, în domeniul timp, integrând semnalul la pătrat peste o perioadă sau în frecvență calculând suma pătratelor modulului ale fiecărui coeficient: | ||
| + | |||
| + | \begin{equation} | ||
| + | \frac{1}{T}\int_0^T{s^2(t)dt} = \sum_{-\infty}^{\infty}{|c_k|^2} | ||
| + | \end{equation} | ||
| + | |||
| + | Folosind cele descrise mai sus puteți calcula exact RMS-ul erorii: | ||
| + | - calculați puterea totală calculând integrala din teorema lui Parseval pentru semnalul dreptunghiular. | ||
| + | - scădeți pătratele termenilor de la $c_k, k \in \{-N...N\}$ obținând suma termenilor necesari pentru calcularea RMS. | ||
| + | |||
| + | \begin{equation} | ||
| + | \text{rms}(\epsilon_{N-1}) = \sqrt{2\cdot \sum_{k=N}^\infty |c_k|^2} = \sqrt{\sum_{k=-\infty}^\infty |c_k|^2 - \sum_{k=-N+1}^{N-1} |c_k|^2} = \sqrt{\sum_{k=-\infty}^\infty |c_k|^2 - (2 \cdot \sum_{k=1}^N |c_k|^2 + |c_0|^2)} | ||
| + | \end{equation} | ||
| + | </note> | ||
| + | |||
| + | === Exercițiul 7 - BONUS - comunicație digitală === | ||
| + | |||
| + | Pentru a transmite 2 biți simultan putem folosi două frecvențe diferite (f1, f2) pentru a coda o valoare de 2 biți: | ||
| + | - '00': folosim un semnal egal cu 0 (nicio frecvență) | ||
| + | - '01': folosim o sinusoidă ce conține doar prima frecvență ($\sin(2\pi f_1 t)$) | ||
| + | - '10': folosim o sinusoidă ce conține doar a doua frecvență ($\sin(2\pi f_2 t)$) | ||
| + | - '11': folosim ambele frecvențe $f_1$ și $f_2$ | ||
| + | |||
| + | Task-ul vostru e să creați o secvență random de 10 valori între 0 și 3 (pentru a folosi toate valorile de mai sus) și apoi să o codificați folosind 2 sinusoide așa cum este descris mai sus. Pentru asta ar trebui să: | ||
| + | - selectați frecvențele $f_1$ și $f_2$ astfel încât ele să folosească aceeași frecvență fundamentală (de ex.: $f_1 = 1 \cdot f_t$, $f_2 = 2 \cdot f_t$, iar $f_t = 1$); | ||
| + | - plotați semnalul rezultat folosind perioada ($1/f_t$) pentru fiecare valoare transmisă; | ||
| + | - verificați că semnalul rezultat codează secvența voastră random; | ||
| + | |||
| + | |||
| + | ==== Shiftarea în fază/timp și filtrarea semnalelor periodice ==== | ||
| + | |||
| + | În următoarele exerciţii 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: | ||
| + | - {{:ps:labs:fundamentals-of-electrical-engineering-i-9.72.pdf|Cartea lui Don Johnson}} | ||
| + | - Secțiunea 4.8 (vezi tabelul 4.2 pentru exercițiul 1) și Secțiunea 4.7 pentru exercițiul 2 | ||
| + | |||
| + | === Exercițiul 8 – shiftarea în frecvență === | ||
| + | |||
| + | Î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). | ||
| + | * Calculaţi câţiva coeficienţi Fourier $c_k$. Faceţi asta, similar cu ce am făcut în exerciţiile precedente, folosind $k\in\{-81,\ldots,81\}$. | ||
| + | * Plotaţi modulul coeficienţilor. | ||
| + | * 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? Plotaţi coeficienții înainte și după modificare. Puteți afla faza coeficienților cu următorul cod: | ||
| + | <code python> | ||
| + | coefficients_phase = np.angle(ck, deg=True) | ||
| + | </code> | ||
| + | * 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 la exerciţiul 6). Ar trebui să vedeți semnalul shiftat cu $\tau$, față de cel original (dacă totul a mers cum trebuie). | ||
| + | |||
| + | |||
| + | === Exercițiul 9 - BONUS - filtrare === | ||
| + | |||
| + | 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} | ||
| + | |||
| + | <note important> Atenție: NUMPY folosește funcția sinc normalizată sinc(x) = $ \frac{\text{sin}(\pi x)}{\pi x}$</note> | ||
| + | Puteți vedea circuitul filtrului trece-jos în următoarea imagine: | ||
| + | |||
| + | {{:ps:labs:rc_divider.png?200|}} | ||
| + | |||
| + | 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. | ||
| + | - Calculați primii //N=31// coeficienți Fourier pozitivi $c_k$ ai semnalului și plotați-i ($k\in\{0,\ldots,30\}$). | ||
| + | - 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 a realiza acest lucru 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}$ ). | ||
| + | - Reconstruiți semnalul de ieșire cu ajutorul seriei Fourier (folosind formula de la exercițiul 8) | ||
| + | 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ă) | ||
| + | |||
| + | <note important> | ||
| + | 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. | ||
| + | </note> | ||
| + | |||
| + | |||
| + | |||