This shows you the differences between two versions of the page.
ps:labs:07 [2022/11/06 21:29] constantin.savu1510 |
ps:labs:07 [2022/11/15 11:18] (current) ionut.gorgos |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Laboratorul 07. ===== | ===== Laboratorul 07. ===== | ||
- | <hidden> | + | /*<hidden>*/ |
==== DFT în detaliu: DFT leakage, zero-padding ==== | ==== DFT în detaliu: DFT leakage, zero-padding ==== | ||
+ | Prezentarea PowerPoint pentru acest laborator poate fi găsită aici: [[https://docs.google.com/presentation/d/1I0jGMdwlAporLfDDVjQGpfOmVjAoRhKS/edit?usp=sharing&ouid=110538702824281541719&rtpof=true&sd=true|aici]] | ||
În acest laborator vom continua să explorăm Transformata Fourier Discretă (DFT), urmărind efectul eșantionării în domeniul frecvență (apariția sinc-ului din cauza fenomenului de leakage) și metode de rezolvare a acestuia (zero-padding, ferestre, creșterea numărului de eșantioane). | În acest laborator vom continua să explorăm Transformata Fourier Discretă (DFT), urmărind efectul eșantionării în domeniul frecvență (apariția sinc-ului din cauza fenomenului de leakage) și metode de rezolvare a acestuia (zero-padding, ferestre, creșterea numărului de eșantioane). | ||
Line 18: | Line 18: | ||
Pentru a face asta urmăriți următorii pași: | Pentru a face asta urmăriți următorii pași: | ||
- 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. | - 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 magnitudinea acesteia, ca în laboratoarele anterioare. Ar trebui să obțineti ceva de genul următor: | + | - 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: |
{{:ps:labs:lab7_sinewaves_a.png?300|}} {{:ps:labs:lab7_sinewaves_a_fft.png?300|}} | {{:ps:labs:lab7_sinewaves_a.png?300|}} {{:ps:labs:lab7_sinewaves_a_fft.png?300|}} | ||
- Apoi eliminați prima sinusoidă (ex.: făcând $f_1=0$) și verificați dacă aveți semnal doar la 2kHz. [<color red>1p</color>] | - Apoi eliminați prima sinusoidă (ex.: făcând $f_1=0$) și verificați dacă aveți semnal doar la 2kHz. [<color red>1p</color>] | ||
Line 32: | Line 32: | ||
Să facem următoarele: | Să facem următoarele: | ||
- Incărcați și plotați semnalul dat. Ar trebui să observați că se vor încărca 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). | - Incărcați și plotați semnalul dat. Ar trebui să observați că se vor încărca 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). | ||
- | - Calculați DFT pentru semnal și plotați magnitudinea, ca în laboratoarele precedente. Ar trebui să obțineți ceva precum aceasta: | + | - Calculați DFT pentru semnal și plotați spectrul pozitiv al semnalului (cu //stem//), ca în laboratoarele precedente. Ar trebui să obțineți ceva precum aceasta: |
{{:ps:labs:notes_signal_fftpos.png?300|}} | {{:ps:labs:notes_signal_fftpos.png?300|}} | ||
În acest moment probabil nu puteți spune care sunt cele două frecvențe ale semnalului, din cauza faptului că funcția sinc a primei sinusoide acoperă componenta celei de-a doua sinusoide. | În acest moment probabil nu puteți spune care sunt cele două frecvențe ale semnalului, din cauza faptului că funcția sinc a primei sinusoide acoperă componenta celei de-a doua sinusoide. | ||
- | - 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//; căutați aceste funcții în Matlab/Octave folosind help). 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ă. | + | - 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//; căutați aceste funcții în MATLAB folosind help). 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ă. |
- 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? | - 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? | ||
Line 54: | Line 54: | ||
Procedați la fel ca înainte: | Procedați la fel ca înainte: | ||
- | - Plotați semnalul și spectrul său. Verificați dacă puteți distinge cele două frecvențe(ar trebui). | + | - Plotați semnalul și spectrul său pozitiv. Verificați dacă puteți distinge cele două frecvențe(ar trebui). |
- Aplicați funcția fereastră și verificați spectrul. Ar trebui sa fie mult mai clar. | - Aplicați funcția fereastră și verificați spectrul. Ar trebui sa fie mult mai clar. | ||
- | - Ce note muzicale reprezintă aceste frecvențe? Puteți să redați acest sunet folosind funcția Matlab/Octave //sound//. | + | - Ce note muzicale reprezintă aceste frecvențe? Puteți să redați acest sunet folosind funcția MATLAB //sound//. |
- | </hidden> | + | /*</hidden>*/ |