This is an old revision of the document!


Laboratorul 07.

4p

$s(n) = A_1 \sin(2\pi f_1 n t_s) + A_2 \sin(2\pi f_2 n t_s)$

$f_1$$f_2$$t_s = 1/f_s$$f_s = 1/t_s$$n=0:N-1$$N$

  • Creați si plotați semnalul, folosind $A_1=1$, $A_2=0.5$, $f_s = 8000$ Hz, $f_1 = 1000$ Hz, $f_2 = 2000$ Hz pentru $N=8$ eșantioane.
  • Calculați DFT pentru acest semnal și plotați (cu stem) magnitudinea acesteia, ca în laboratoarele anterioare. Ar trebui să obțineti ceva de genul următor:

  1. Apoi eliminați prima sinusoidă (ex.: făcând $f_1=0$) și verificați dacă aveți semnal doar la 2kHz. [1p]
  2. Schimbați $f_2$ de la 2kHz la $f_2=2500$ Hz. Plotați spectrul (cu stem). Ce putem observa? Ar trebui să vedeți că toată energia de la frecvența de 2.5kHz a fost distribuită pe frecvențele adiacente. Acesta este fenomenul cunoscut ca “DFT leakage”, și apare din cauza faptului că folosirea unui număr finit de eșantioane poate fi modelată ca înmulțirea unui semnal infinit eșantionat cu o funcție rectangulară (al cărui spectru este un sinc). Înainte, nu vedeam acest efect pentru că eșantioanele sinc-ului erau exact în punctele unde sinc-ul era 0. [1p]
  3. Pentru a vedea mai bine efectul de leakage trebuie să creștem numărul de eșantioane folosite pentru DFT. Pentru asta adăugați zerouri semnalului vostru. De exemplu, adăugați la finalul semnalului 56 de zerouri ca să obțineți un total de $K=64$ eșantioane (din care doar $N=8$ sunt diferite de 0). Apoi calculați DFT pentru acest semnal. Ar trebui să vedeți forma sinc-ului mult mai clară și de asemenea că e centrată în jurul frecvenței semnalului (2.5kHZ). [1p]
  4. Acum schimbați din nou frecvența la $f2=2000$ Hz, dar folosind în continuare zero-padding și plotați DFT (cu stem). Ar trebui să vedeți că într-adevăr sinc-ul era acolo, dar eșantioanele de la $1000, 3000, 4000 \ldots$ erau 0. [1p]

5p

click aici

  • Încărcați și plotați semnalul dat. Ar trebui să încărcați variabilele notes_signal și fs, unde fs este frecvența de eșantionare (amintiți-vă ca aveți nevoie de ea pentru a înțelege rezultatul dat de DFT) așa cum ați făcut în laboratorul anterior. [1p]
  • Calculați DFT pentru semnal și plotați spectrul pozitiv al semnalului (cu stem), ca în laboratoarele precedente. [1p]

  • Folosind zero-padding în acest caz nu va ajuta prea mult (încercați). Așa că vom aplica semnalului o funcție fereastră (ex. Hanning sau Hamming). Ideea este să generăm o funcție fereastră pe care o vom înmulți cu semnalul original. Plotați semnalul după aplicarea funcției fereastră. [1p]

Funcțiile menționate mai sus pot fi găsite în biblioteca scipy, modulul signal

from scipy.signal import windows

  • Calculați DFT pentru semnalul rezultat după aplicarea funcției fereastră. Puteți spune, cel puțin aproximativ, care sunt cele două frecvente conținute de semnal? [2p]

Hanning

1p

click aici

  1. Plotați semnalul și spectrul său pozitiv. Verificați dacă puteți distinge cele două frecvențe(ar trebui).
  2. Aplicați funcția fereastră și verificați spectrul. Ar trebui sa fie mult mai clar.
  3. Ce note muzicale reprezintă aceste frecvențe? Pentru a reda sunetul stocat în vectorul s, folosiți codul următor:
import sounddevice as sd
import time

sd.play(s, fs)
time.sleep(T) # Ne asigură că putem auzi tot semnalul, unde T = durata semnalului s
sd.stop()
ps/labs_python/07.1699707604.txt.gz · Last modified: 2023/11/11 15:00 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