Differences

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

Link to this comparison view

ps:labs_python_gpt:05 [2025/10/27 19:27]
darius.necula
ps:labs_python_gpt:05 [2025/10/30 00:12] (current)
ionut.gorgos
Line 11: Line 11:
  
 === Exerciţiul 1 -- Procesarea simplă === === Exerciţiul 1 -- Procesarea simplă ===
-[<color red>2p</​color>​] ​+[<color red>3p</​color>​] ​
  
 Vom încerca să implementăm un sistem de procesare digitală simplă, care funcţionează după cum urmează: Vom încerca să implementăm un sistem de procesare digitală simplă, care funcţionează după cum urmează:
Line 21: Line 21:
   - Creaţi câteva secvenţe digitale care reprezintă sinusoide de diferite frecvenţe (1, 2, 10, 20, 100 Hz) și amplitudine 1, la aceeaşi frecvenţă de eşantionare (folosiţi acelaşi număr de eşantioane,​ e.g. $N=128$).   - Creaţi câteva secvenţe digitale care reprezintă sinusoide de diferite frecvenţe (1, 2, 10, 20, 100 Hz) și amplitudine 1, la aceeaşi frecvenţă de eşantionare (folosiţi acelaşi număr de eşantioane,​ e.g. $N=128$).
   - Implementaţi sistemul de procesare menţionat mai sus.[<​color red>​1p</​color>​]   - Implementaţi sistemul de procesare menţionat mai sus.[<​color red>​1p</​color>​]
-  - Creaţi secvenţele corespunzătoare de ieşire.+  - Creaţi secvenţele corespunzătoare de ieşire. ​[<color red>​0.5p</​color>​]
   - Plotaţi toate secvenţele de intrare/​ieşire. [<color red>​0.5p</​color>​]   - Plotaţi toate secvenţele de intrare/​ieşire. [<color red>​0.5p</​color>​]
-  - Ce fel de sistem de procesare este acesta ?+  - Ce fel de sistem de procesare este acesta? ​[<color red>​0.5p</​color>​]
   - Cum ați putea implementa sistemul de procesare menționat mai sus, folosind funcția [[https://​docs.scipy.org/​doc/​scipy/​reference/​generated/​scipy.signal.lfilter.html|lfilter]] din biblioteca //scipy//? (opțional)   - Cum ați putea implementa sistemul de procesare menționat mai sus, folosind funcția [[https://​docs.scipy.org/​doc/​scipy/​reference/​generated/​scipy.signal.lfilter.html|lfilter]] din biblioteca //scipy//? (opțional)
   - Adăugați la sinusoidele generate mai sus, un zgomot alb de deviație standard 0.1 și medie 0. Plotați din nou toate secvenţele de intrare/​ieşire.[<​color red>​0.5p</​color>​]   - Adăugați la sinusoidele generate mai sus, un zgomot alb de deviație standard 0.1 și medie 0. Plotați din nou toate secvenţele de intrare/​ieşire.[<​color red>​0.5p</​color>​]
Line 34: Line 34:
  
 === Exercițiul 2 – modularea în amplitudine === === Exercițiul 2 – modularea în amplitudine ===
-[<color red>3p</​color>​] ​+[<color red>4p</​color>​] ​
  
 În acest exercițiu va trebui să încercați să efectuați modularea în amplitudine asupra următorului semnal exponențial (eng. exponential decay signal) : $s(t) = e^{-at}u(t)$,​ unde $a>0$ și $u(t)$ este treapta unitară (i.e. egală cu 1 pentru $t\ge0$, 0 altfel). În acest exercițiu va trebui să încercați să efectuați modularea în amplitudine asupra următorului semnal exponențial (eng. exponential decay signal) : $s(t) = e^{-at}u(t)$,​ unde $a>0$ și $u(t)$ este treapta unitară (i.e. egală cu 1 pentru $t\ge0$, 0 altfel).
Line 50: Line 50:
  
 Pentru asta va trebui să urmăriți acești pași: Pentru asta va trebui să urmăriți acești pași:
-  * Creați semnalul $s(t)$ pentru $t\in\{1,​\ldots,​T=128\}$,​ folosind $a=0.05$.  +  * Creați semnalul $s(t)$ pentru $t\in\{1,​\ldots,​T=128\}$,​ folosind $a=0.05$. ​[<color red>​0.5p</​color>​] 
-  * Calculați și plotați (cu //stem//) spectrul folosind FFT (Transformata Fourier Rapidă), pe care nu am făcut-o încă la curs, dar o vom face în următoarele cursuri. Pentru moment, puteți folosi acest cod: +  * Calculați și plotați (cu //stem//) spectrul folosind FFT (Transformata Fourier Rapidă), pe care nu am făcut-o încă la curs, dar o vom face în următoarele cursuri. Pentru moment, puteți folosi acest cod: [<color red>​0.5p</​color>​]
 <code python> <code python>
 import numpy as np import numpy as np
Line 84: Line 84:
   - Generați semnalul $signal = cos(2 \cdot \pi \cdot f_c \cdot t)$, unde $f_c = 3000$ Hz, $t=0:​T_s:​100 \cdot T_s$ și $T_s = \frac{1}{f_s} = \frac{1}{8000}$ ​   - Generați semnalul $signal = cos(2 \cdot \pi \cdot f_c \cdot t)$, unde $f_c = 3000$ Hz, $t=0:​T_s:​100 \cdot T_s$ și $T_s = \frac{1}{f_s} = \frac{1}{8000}$ ​
   - De ce avem energie în ambele frecvenţe $f_c$ şi $-f_c$ ?   - De ce avem energie în ambele frecvenţe $f_c$ şi $-f_c$ ?
-  - Generaţi cod Python pentru a calcula transformata Fourier Discretă a unei sinusoide de $3kHz$ eşantionată la $8kHz$. Folosiți $N=64$ pentru fft. Folosiți acest cod pentru DFT: [<color red>​1p</​color>​] <​code ​matlab+  - Generaţi cod Python pentru a calcula transformata Fourier Discretă a unei sinusoide de $3kHz$ eşantionată la $8kHz$. Folosiți $N=64$ pentru fft. Folosiți acest cod pentru DFT: [<color red>​1p</​color>​] <​code ​python
-figure; +import numpy as np 
-fx = zeros(1, N); +from scipy.fft import fft, fftshift 
-fidx = (fs/N) * linspace(0,​N-1,​N); +import matplotlib.pyplot as plt 
-spectrum = fft(signal, N); +  
-stem(fidx, abs(spectrum)); +plt.figure() 
-xlabel('​Frequency (Hz)'); +fx = np.zeros(1, N) 
-ylabel('​Amplitude'​); +fidx = (fs/N) * np.linspace(0,​N-1,​N) 
-title('​Spectrum of signal'​);+spectrum = fft(signal, N) 
 +plt.stem(fidx, ​np.abs(spectrum)) 
 +plt.xlabel('​Frequency (Hz)'​) 
 +plt.ylabel('​Amplitude'​) 
 +plt.title('​Spectrum of signal'​)
 </​code>​ </​code>​
-  - Plotaţi (cu '​stem'​) rezultatele şi observaţi frecvenţele. Acum folosiţi "​fftshift"​ pe rezultatul obţinut de la "​fft"​ şi plotaţi din nou rezultatele. Folosiți acest cod: [<color red>​1p</​color>​] <​code ​matlab+  - Plotaţi (cu '​stem'​) rezultatele şi observaţi frecvenţele. Acum folosiţi "​fftshift"​ pe rezultatul obţinut de la "​fft"​ şi plotaţi din nou rezultatele. Folosiți acest cod: [<color red>​1p</​color>​] <​code ​python
-figure; +import numpy as np 
-fidx = (fs/​N)*linspace(-N/​2,​ N/2-1, N); +from scipy.fft import fft, fftshift 
-stem(fidx, abs(fftshift(spectrum))); +import matplotlib.pyplot as plt 
-xlabel('​Frequency (Hz)'); +  
-ylabel('​Amplitude'​); +plt.figure() 
-title('​Zero-centred frequency spectrum of signal'​);+fidx = (fs/N)*np.linspace(-N/​2,​ N/2-1, N) 
 +plt.stem(fidx, ​np.abs(fftshift(spectrum))) 
 +plt.xlabel('​Frequency (Hz)'​) 
 +plt.ylabel('​Amplitude'​) 
 +plt.title('​Zero-centred frequency spectrum of signal'​)
 </​code>​ </​code>​
   - De ce într-un caz avem semnal la $3 kHz$ şi $5 kHz$ în timp ce, în celălalt caz pare să avem la $-3 kHz$ şi $3 kHz$ ?    - De ce într-un caz avem semnal la $3 kHz$ şi $5 kHz$ în timp ce, în celălalt caz pare să avem la $-3 kHz$ şi $3 kHz$ ? 
   - Care este semnificaţia semnalului de $5 kHz$ ? Când plotaţi rezultatele de la "​fft"​ luaţi în considerare că, în mod implicit output-ul transformatei Discrete Fourier, deci şi "​fft",​ arată frecvenţele de la $0$ la $f_s$ (frecvenţa de eşantionare). ​   ​   - Care este semnificaţia semnalului de $5 kHz$ ? Când plotaţi rezultatele de la "​fft"​ luaţi în considerare că, în mod implicit output-ul transformatei Discrete Fourier, deci şi "​fft",​ arată frecvenţele de la $0$ la $f_s$ (frecvenţa de eşantionare). ​   ​
-  - Putem să reducem frecvenţa de eşantionare în timp ce încă detectăm spectrul dorit de frecvenţe ? (vedeţi bandpass sampling [[https://​www.informit.com/​articles/​article.aspx?​p=345472&​seqNum=3|Fig 2-7]]). Cât de mult putem reduce frecvenţa de eşantionare?​ Ce se întâmplă dacă reducem frecvenţa de eşantionare sub 2B? [<color red>​1p</​color>​]+  - Putem să reducem frecvenţa de eşantionare în timp ce încă detectăm spectrul dorit de frecvenţe ? (vedeţi bandpass sampling [[https://​web.archive.org/​web/​20240102080629/​https://​www.informit.com/​articles/​article.aspx?​p=345472&​seqNum=3|Fig 2-7]]). Cât de mult putem reduce frecvenţa de eşantionare?​ Ce se întâmplă dacă reducem frecvenţa de eşantionare sub 2B? [<color red>​1p</​color>​]
  
 <​hidden>​ <​hidden>​
ps/labs_python_gpt/05.1761586034.txt.gz · Last modified: 2025/10/27 19:27 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