Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ps:labs:02 [2021/10/10 21:21]
ionut.gorgos
ps:labs:02 [2022/11/08 14:54] (current)
ionut.gorgos
Line 1: Line 1:
 ===== Laboratorul 02. ===== ===== Laboratorul 02. =====
-/​*<​hidden>​*/ ​+/​*<​hidden>​ */
  
 ==== Semnale și sisteme de bază ==== ==== Semnale și sisteme de bază ====
  
 La curs am discutat despre semnale de bază și sisteme. În continuare vom face câteva exerciții legate de aceste noțiuni. La curs am discutat despre semnale de bază și sisteme. În continuare vom face câteva exerciții legate de aceste noțiuni.
 +Prezentarea PowerPoint pentru acest laborator poate fi găsită aici: [[https://​docs.google.com/​presentation/​d/​1ksWeqb6o80ug9N2kRjKxaN7jvdwDWklC|aici]]
  
-=== Exercițiul 1 [2p] ===+=== Exercițiul 1 ===  
 +[<color red>​2p</​color>​]
  
-Pentru a transmite simboluri (ex: litere din alfabet) modemurile PC-urilor folosesc ​două frecvențe ​(1600 Hz și 1800 Hz) și mai multe niveluri de amplitudine. O transmisiune se face într-o perioadă de timp T (interval de transmisie) și este egală cu suma a două semnale de amplitudine ​diferită:+Pentru a transmite simboluri (ex: litere din alfabet) modemurile PC-urilor folosesc ​diferite ​frecvențe și mai multe niveluri de amplitudine. O transmisiune 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 amplitudine ​și frecvență diferite:
  
 $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 ​cu frecvenţele de mai sus? Cu alte cuvinte, cât ar trebui să fie $T$ astfel încât semnalul să aibă un număr întreg de cicluri? [1p] +  - 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>​
-  - Afişaţi cu ajutorul ​Octave ​semnalul produs de modem pe parcursul ​mai multor intervale ​de transmisie ​consecutive. Aşa cum am învăţat în laboratorul trecut adăugaţi titlu şi etichete plot-ului. [1p]+  - Afişaţi cu ajutorul ​MATLAB ​semnalul produs de modem pe parcursul ​unui interval ​de transmisie. Aşa cum am învăţat în laboratorul trecut adăugaţi titlu şi etichete plot-ului. [<color red>1p</​color>​]
  
 <note tip> <note tip>
-Pentru $\pi$ puteți folosi comanda //pi// din OCTAVE.+Pentru $\pi$ puteți folosi comanda //pi// din MATLAB.
  
 Puteți afișa un semnal folosind comanda //plot//. Folosiți //help plot// sau //doc plot// pentru mai multe detalii. Puteți afișa un semnal folosind comanda //plot//. Folosiți //help plot// sau //doc plot// pentru mai multe detalii.
Line 22: Line 24:
 După ce ați făcut plot-ul puteți pune un titlu figurii folosind //title//, iar pentru etichete //xlabel// și //ylabel//. După ce ați făcut plot-ul puteți pune un titlu figurii folosind //title//, iar pentru etichete //xlabel// și //ylabel//.
 </​note>​ </​note>​
-=== Exerciţiul 2 [2.5p] ​===+=== 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:
 {{:​ps:​labs:​building_signals.pdf|}} {{:​ps:​labs:​building_signals.pdf|}}
  
-Pentru a face asta în Octave ​va trebui să lucrăm cu semnale discrete, nu continue (vom discuta despre acest aspect în cursurile viitoare). În loc să lucrăm cu semnale reprezentate în intervalul [0,1] ca în slide vom folosi semnale ce se întind peste 100 de puncte.+Pentru a face asta în MATLAB ​va trebui să lucrăm cu semnale discrete, nu continue (vom discuta despre acest aspect în cursurile viitoare). În loc să lucrăm cu semnale reprezentate în intervalul [0,1] ca în slide vom folosi semnale ce se întind peste 100 de puncte.
  
 Puteţi folosi următoarea funcţie pentru a crea un semnal '​ramp'​ peste N puncte: Puteţi folosi următoarea funcţie pentru a crea un semnal '​ramp'​ peste N puncte:
Line 56: Line 59:
  
 Pentru asta ar trebui să: Pentru asta ar trebui să:
-  - creaţi un semnal 'unit step' numit ustep.m, care practic întoarce o secvenţă de N valori de 1 [0.5p]+  - creaţi un semnal 'unit step' numit ustep.m, care practic întoarce o secvenţă de N valori de 1 [<color red>0.5p</​color>​]
   - 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. [1p]+  - 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>​]
     * Puteţi crea secvenţa de input ca: <code matlab> x=1:N; </​code>​     * Puteţi crea secvenţa de input ca: <code matlab> x=1:N; </​code>​
     * Puteţi crea primul semnal ca: <code matlab> s1 = ramp(N) </​code>​     * Puteţi crea primul semnal ca: <code matlab> s1 = ramp(N) </​code>​
     * Puteţi întârzia un semnal cu $T$ în felul următor: <code matlab> [zeros(1,​T),​ s(1:N-T)]; </​code>​     * Puteţi întârzia un semnal cu $T$ în felul următor: <code matlab> [zeros(1,​T),​ s(1:N-T)]; </​code>​
   - combinaţi cele 3 semnale   - combinaţi cele 3 semnale
-  - afişaţi toate cele 4 semnale (cele 3 individuale şi combinaţia lor) [1p]+  - afişaţi toate cele 4 semnale (cele 3 individuale şi combinaţia lor) [<color red>1p</​color>​]
     * 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 88: Line 91:
  
  
-=== Exerciţiul 3 [2p] ===+=== 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 108: Line 112:
 $\cos(t) = \frac{e^{j \cdot t} + e^{-j \cdot t}}{2}$ $\cos(t) = \frac{e^{j \cdot t} + e^{-j \cdot t}}{2}$
  
-Încercaţi să arătaţi asta în Octave, făcând următoarele:​+Încercaţi să arătaţi asta în MATLAB, făcând următoarele:​
   * Folosiţi secvenţa de input <code matlab> t = [0, pi/6, pi/4, pi/3, pi/2]; </​code>​   * Folosiţi secvenţa de input <code matlab> t = [0, pi/6, pi/4, pi/3, pi/2]; </​code>​
-  * Afişaţi exponenţiala complexă /* s1=e^(j*t) */ $s_1 = e^{j\cdot t}$, e.g. <code matlab> plot(exp(1i*t), '​ro'​);​ </​code>​+  * Afişaţi exponenţiala complexă /* s1=e^(j*t) */ $s_1 = e^{j\cdot t}$, e.g. <code matlab> plot(exp(1j*t), '​ro'​);​ </​code>​
   * Afişaţi exponenţiala complexă /* s2=e^(-j*t) */ $s_2 = e^{-j \cdot t}$ cu o altă culoare   * Afişaţi exponenţiala complexă /* s2=e^(-j*t) */ $s_2 = e^{-j \cdot t}$ cu o altă culoare
   * Calculaţi media celor 2 exponenţiale /* ss=(s1+s2)/​2 */ $s_s = \frac{s_1 + s_2}{2}$, i.e. cos(t)   * Calculaţi media celor 2 exponenţiale /* ss=(s1+s2)/​2 */ $s_s = \frac{s_1 + s_2}{2}$, i.e. cos(t)
-  * Afisaţi secvenţa rezultată în imaginar folosid ​real(ss) ca valori x şi imag(ss) ca valori y+  * Afișaţi secvenţa rezultată în planul complex folosind ​real(ss) ca valori x şi imag(ss) ca valori y
   * Verificaţi dacă s1, s2 şi ss arată cum v-aţi fi aşteptat!   * Verificaţi dacă s1, s2 şi ss arată cum v-aţi fi aşteptat!
  
 +<note important>​Pentru numărul imaginar //j//, în MATLAB cel mai bine este să folosiți notația //1i// sau //1j//, pentru a evita folosirea accidentală a unei variabile denumite anterior, //i// sau //​j//​.</​note>​
 <​hidden>​ <​hidden>​
 === Exerciţiul 4 [1.5p] === === Exerciţiul 4 [1.5p] ===
Line 129: Line 134:
 </​hidden>​ </​hidden>​
  
-=== Exerciţiul 4 [3.5p] ​===+=== 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 142: Line 148:
   * valoarea iniţială pentru secvenţa de diferenţă,​ e, este 0   * valoarea iniţială pentru secvenţa de diferenţă,​ e, este 0
   * valoarea de input a sistemului de pilot automat, x, este o secvenţă de tipul [60, 60, ..., 60]   * valoarea de input a sistemului de pilot automat, x, este o secvenţă de tipul [60, 60, ..., 60]
-  * primul sistem, S1, primeste 2 input-uri: ​viteza curentă şi diferenţa e(i). Bazându-se pe acestea, actualizează viteza curentă după cum urmează: +  * primul sistem, S1, cunoaște ​viteza curentă ​y(i) şi primește ca parametru ​diferenţa e(i). Bazându-se pe acestea, actualizează viteza curentă după cum urmează: 
-    * Dacă e(i) > 10, atunci y(i+1) = y(i) + 10+    * Dacă e(i) > 10, atunci y(i+1) = y(i) + 5
     * altfel dacă e(i) > 0, atunci y(i+1) = y(i) + 1     * altfel dacă e(i) > 0, atunci y(i+1) = y(i) + 1
     * altfel dacă e(i) == 0, atunci y(i+1) = y(i)     * altfel dacă e(i) == 0, atunci y(i+1) = y(i)
  
-Construiţi sistemul S1 ca o funcţie ​Octave ​cu 2 parametrii (viteza_curentă,​ e), care afişează următoarea viteză curentă ca mai sus. +Construiţi sistemul S1 ca o funcţie ​MATLAB ​cu 2 parametrii (viteza_curentă,​ e), care afişează următoarea viteză curentă ca mai sus. 
-În Octave ​puteţi folosi o instrucţiune for pentru asta:+În MATLAB ​puteţi folosi o instrucţiune for pentru asta:
  
 <code matlab> <code matlab>
Line 161: Line 167:
 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.
  
-/​*</​hidden>​*/​+/* </​hidden>​ */
ps/labs/02.1633890111.txt.gz · Last modified: 2021/10/10 21:21 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