This shows you the differences between two versions of the page.
|
ps:labs_python:02 [2023/10/11 00:10] ionut.gorgos |
ps:labs_python:02 [2025/10/05 15:40] (current) darius.necula |
||
|---|---|---|---|
| Line 14: | Line 14: | ||
| - 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? [<color red>1p</color>] | ||
| - | - Afişaţi 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. Puteți considera amplitudinile egale. [<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. [<color red>1p</color>] |
| + | Ar trebui să obțineți ceva similar: | ||
| + | {{ :ps:labs_python:semnal_modem.png?600 |}} | ||
| <note tip> | <note tip> | ||
| Pentru $\pi$ puteți folosi comanda //np.pi// din biblioteca //numpy//. | Pentru $\pi$ puteți folosi comanda //np.pi// din biblioteca //numpy//. | ||
| + | Pentru concatenare puteți folosi [[https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html|np.concatenate]] sau [[https://numpy.org/doc/stable/reference/generated/numpy.hstack.html|np.hstack]] | ||
| Puteți afișa un semnal folosind comanda //plt.plot// din interfața //matplotlib.pyplot//. | Puteți afișa un semnal folosind comanda //plt.plot// din interfața //matplotlib.pyplot//. | ||
| Line 24: | Line 27: | ||
| </note> | </note> | ||
| === Exerciţiul 2 === | === Exerciţiul 2 === | ||
| - | [<color red>2.5p</color>] | + | [<color red>2p</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 133: | Line 136: | ||
| <note important>Pentru numărul imaginar //j//, în Python se folosește notația //1j//.</note> | <note important>Pentru numărul imaginar //j//, în Python se folosește notația //1j//.</note> | ||
| <hidden> | <hidden> | ||
| - | === Exerciţiul 4 [1.5p] === | + | <note tip>Folosiți codul următor pentru a desena un cerc trigonometric, peste care veți reprezenta valorile calculate mai sus |
| + | <code python> | ||
| + | import numpy as np | ||
| + | import matplotlib.pyplot as plt | ||
| + | |||
| + | tt = np.arange(0, 2 * np.pi, 0.1) | ||
| + | figure1 = plt.figure('Figura 1', figsize=(10, 10)) | ||
| + | complex_tt = np.exp(1j * tt) | ||
| + | x = np.real(complex_tt) | ||
| + | y = np.imag(complex_tt) | ||
| + | plt.plot(x, y, 'k.') | ||
| + | plt.plot(0, 0, 'kx') | ||
| + | </code> | ||
| + | </note> | ||
| + | </hidden> | ||
| + | |||
| + | === Exerciţiul 4 === | ||
| + | [<color red>2p</color>] | ||
| 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. | 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. | ||
| Line 142: | Line 162: | ||
| * Adunați cele 2 semnale. | * 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'. | * 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>] | + | [<color red>2p</color>] |
| Avem un sistem de feedback precum cel din imaginea următoare: | Avem un sistem de feedback precum cel din imaginea următoare: | ||
| - | {{:ps:labs:feedback.png?400|}} | + | {{:ps:labs:feedback.png?400|}} |
| Să presupunem că folosim acest sistem pentru sistemul de pilot automat al maşinii, unde x(t) este o constantă ce reprezintă viteza dorită, iar y(t) este viteza maşinii măsurată de vitezometru. În această aplicaţie, sistemul 2 este sistemul identitate (intrare = ieşire). | Să presupunem că folosim acest sistem pentru sistemul de pilot automat al maşinii, unde x(t) este o constantă ce reprezintă viteza dorită, iar y(t) este viteza maşinii măsurată de vitezometru. În această aplicaţie, sistemul 2 este sistemul identitate (intrare = ieşire). | ||
| Line 165: | Line 183: | ||
| Construiţi sistemul S1 ca o funcţie cu 2 parametrii (viteza_curentă, e), care afişează următoarea viteză curentă ca mai sus. | Construiţi sistemul S1 ca o funcţie cu 2 parametrii (viteza_curentă, e), care afişează următoarea viteză curentă ca mai sus. | ||
| + | <hidden> | ||
| În Python puteţi folosi o instrucţiune for pentru asta: | În Python puteţi folosi o instrucţiune for pentru asta: | ||
| Line 176: | Line 195: | ||
| end | end | ||
| </code> | </code> | ||
| + | </hidden> | ||
| 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> */ | ||