This is an old revision of the document!


Laboratorul 04.

Semnale în domeniul frecvență

Materiale ajutătoare:

    1. Secțiunile 4.5 (Exercițiul 1), 4.6 (Exercițiul 2), 4.7 (Exercițiul 3)

Exercițiul 1 - aproximare de semnale [4p]

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}

În acest exercițiu vom încerca să calculăm rădăcina medie pătratică (eng. root mean square) a semnalului $\epsilon_{K}$ dat de: \begin{equation} \epsilon_{K} = s(t) - s_{K}(t), \end{equation}

unde $s_{K}(t)$ este semnalul aproximat cu K termeni. Folosind transformata Fourier avem: \begin{equation} s_K(t) = \sum_{k=-K}^K c_k e^\frac{j 2 \pi k t}{T} \end{equation}

iar RMS-ul lui $\epsilon_K$ este dat de: \begin{equation} \text{rms}(\epsilon_K) = \sqrt{2\cdot \sum_{k=K+1}^\infty |c_k|^2} \end{equation}

Task-ul vostru este să determinați valoarea lui K astfel încât $\text{rms}(\epsilon_K)$ este aproape 0 și după aceea să vedeți că într-adevăr semnalul reconstruit aproximează bine semnalul original.

Pentru asta ar trebui să urmăriți următorii pași:

  1. 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 (unde timpul începe de la 1 până la 100) [1p]. Puteți să vă folosiți de acest cod:
    A = 1;
    T = 100;
    x = 1:T;
    s = -A*ones(1, T);
    s(1:(T/2)) = A;
  2. Calculați coeficienții Fourier $c_{k}$ pentru $k=[-10:10]$. Plotați amplitudinile $|c_k|^2$ ca funcție de $k$. [1p]
  3. Calculati $\text{rms}(e_K)$ ca functie de $K$ pentru $K \in \{1, \ldots, 500\}$. Plot-ati valoarea rms pentru $K \in \{1, \ldots, 500\}$.[1p]
  4. Determinati cel mai mic $K$ astfel incat $\text{rms}(e_K) < 0.025$ si reconstruiti semnalul original folosind acest numar de coeficienti. Trebuie sa folositi atat coeficienti pozitivi cat si negativi (de ex. de la -K la K) pentru a reconstrui semnalul. Plot-ati semnalul reconstruit si comparati-l cu semnalul initial. [1p]

Semnalele reale au următoarea proprietate: coeficienții Fourier negativi sunt conjugații complexi ai celor pozitivi $c_{-k} = c_{k}^*$. De asemenea, semnalele impare s(-t) = -s(t), au coeficienți complet imaginari, obținând $c_{-k} = -c_{k}$

Exercitiul 2 -- filtrare [4p]

In acest exercitiu trebuie sa calculam coeficientii Fourier ai output-ului unui filtru trece-jos, dat fiind un semnal de intrare de tip 'pulse'.

Pentru un semnal dat putem gasi coeficientii Fourier ($c_k$). Atunci, daca stim functia de transfer a filtrului trece-jos (sau alt tip de sistem liniar), am aratat la curs ca putem gasi coeficientii Fourier ($c_k^y$) ai semnalului rezultat ca:

$c_k^y = H(\frac{k}{T}) \cdot c_k$

Astfel putem reconstrui semnalul de iesire folosind coeficientii Fourier $c_k^y$.

Ni se da ca input un semnal de tip 'pulse' cu amplitudine $A=1$ si pulsul de durata $\Delta=\frac{T}{5}$. Stim ca coeficientii Fourier ai semnalului sunt dati de:

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

Atentie: Matlab foloseste funcția sinc normalizată sinc(x) = $ \frac{\text{sin}(\pi x)}{\pi x}$

Puteți vedea circuitul filtrului trece-jos in urmatoarea imagine:

Functia de transfer a circuitului (pe care am determinat-o la curs si la laboratoarele anterioare) este urmatoarea:

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

unde R si C sunt rezistenta si respectiv capacitatea.

Task-ul vostru este sa determinati coeficientii output-ului si sa reconstruiti semnalul de iesire pentru diferite frecvente de taiere.

Pentru aceasta urmariti urmatorii pasi:

  1. Generati semnalul 'pulse' si plotati-l. Puteti folosi T=100 sample-uri, dintre care doar $\Delta$ nu sunt egale cu 0. [1p]
  2. Calculati primii N=30 coeficienti Fourier positivi $c_k$ ai semnalului si plotati-i. [1p]
  3. Calculati coeficientii Fourier asociati semnalului de output, $c_k^y$, folosind formula de mai sus si plotati-i. Pentru asta va trebui sa alegeti of frecventa de cut-off $f_c$ care va determina valorile R si C ( $RC = \frac{1}{2\pi f_c}$ ). [1p]

Puteti incerca urmatoarele valori pentru $f_c$:

  1. $f_c = 0.1/T$ (frecventa de cut-off e mult mai mica decat frecventa fundamentala a semnalului ⇒ filtrare puternica)
  2. $f_c = 1/T$ (frecventa de cut-off = frecventa fundamentala ⇒ puterea este injumatatita)
  3. $f_c = 10/T$ (frecventa de cut-off mult mai mare decat frecventa fundamentala ⇒ filtrare slaba)
  4. Reconstruiti semnalul de output cu ajutorul seriei Fourier (folosind formula de la exercitiul 1) [1p]

Exercițiul 3 -- comunicație digitală [2p]

Am vazut la curs ca pentru a transmite 2 biti simultan putem folosi doua frecvente diferite (f1, f2) pentru a coda o valoare de 2 biti:

  1. '00': folosim un semnal egal cu 0 (nicio frecventa)
  2. '01': folosim o sinusoida ce contine doar prima frecventa ($\sin(2\pi f_1 t)$)
  3. '10': folosim o sinusoida ce contine doar a doua frecventa ($\sin(2\pi f_2 t)$)
  4. '11': folosim ambele frecvente $f_1$ si $f_2$

Task-ul vostru e sa creati o secventa random de 10 valori intre 0 si 3 (pentru a folosi toate valorile de mai sus) si apoi sa o codificati folosind 2 sinusoide asa cum este descris mai sus. Pentru asta ar trebui sa:

  1. selectati frecventele f1 si f2 astfel incat ele folosesc aceeasi frecventa fundamentala (de ex.: f1 = 1*ft, f2 = 2*ft)
  2. plotati semnalul rezultat folosind perioada (1/ft) pentru fiecare valoare transmisa;
  3. verificati ca semnalul rezultat codeaza secventa voastra random;

Nota: pentru a genera o secventa random de valori intregi inspectati functia 'randi' din MATLAB.

ps/laboratoare/04.1540150386.txt.gz · Last modified: 2018/10/21 22:33 by darius.necula
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