Code written for the 5. task of Matematično-fizikalni praktikum in the year 2021/22.
  • Python 60.9%
  • TeX 39.1%
Find a file
Marko Urbanc ea2a251cb2 docs: 📝 add README
2023-10-15 23:18:54 +02:00
src init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
src_Pulsar init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
wavs init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
20211106_192918.jpg init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
all_1.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
all_2.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo1.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo1_spectrogram.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo1_spectrum.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo1mix22_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo1mix22_spectrogram.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo1mix22_spectrum.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2_spectrogram.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2_spectrum.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2mix1_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2mix2_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2mix22_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2mix22_spectrogram.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2mix22_spectrum.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubo2mix_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubomix1_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubomix2_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubomix22_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
bubomix_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
Correlate_test.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
Correlation_test.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
guitar_auto.wav init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
main_05.py init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
Marko_Urbanč_05.pdf init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
mix1mix2_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
mixmix2_corr.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
mp05.tex init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
proc1.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
proc2.jpg init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
PSR1.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
PSR1_spectrogram.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
PSR1_spectrum.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
README.md docs: 📝 add README 2023-10-15 23:18:54 +02:00
rel_error.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00
Signals_test.png init: 🎉 archival commit 2023-10-15 22:44:13 +02:00

DN 5. Hitra Fourierova Transformacija (FFT in avtokorelacijske funkcije)

Essentially nadaljevanje prejšnje naloge, kjer je vsaj zame bila glavna ugotovitev, da je za vse praktične namene DFT prepočasen. V tej nalogi se naučimo, kako lahko DFT izračunamo veliko hitreje. To je seveda FFT.

Navodila

Naloga želi, da za podane posnetke oglašanja sove velike uharice izračunamo njihove avtokorelacijske funkcije. Dani so posnetki z prijetnimi zvoki narave. Za zašumljene posnetke ugotovi katera sova se oglaša.

Napotki

1. Read the docs

Sklepam, da večina ne bo šla pisati svoje implementacije FFT, zato je dobro, da razumeš kako vgrajene funkcije delujejo. Again, pomemben nauk, read the docs. Dobra praksa je, da to storiš še preden se ti zatakne in si s tem prišparaš dragocen čas.

2a. FFT: Go crazy go stupid

Prof. Kerševan rad reče "Once you have a hammer, everything looks like a nail". V mojem primeru je bilo to res in hej I encourage you to do the same. Stlači kar češ v FFT. Podatki za delnice na borzi? FFT. Slike? FFT. Hotel... Trivago? FFT.

2b. DSP continued

Ena stvar, ki je bila meni res zanimiva je bila uporaba FFT za izračun avtokorelacijske funkcije v namen procesiranja audio signala oz. njegov "razmaz" v t.i. ambient texture. Res je, da je moj okus za glasbo v zadnjih letih propadel, ampak vseeno je ambientalna glasba en lepši del, ki je ostal. V repozitoriju je mapa wavs, kjer je nekaj posnetkov, ki sem jih naredil. Ena hyperpop pesem, odsek ene moje kitarske skladbe in potem njihove transformacije in kombinacije.

⚠️ WARNING ⚠️ : Vsebina lahko zelo niha v glasnosti, torej previdno z ušesi. Vseeno priporočam slušalke, da se sliši vse lepo. Razen za vse posnetke označene z test*.wav. Te ti uničijo ušesa.

3. Dodatna naloga: Avtokorelacija za nek dodaten signal

Če delaš dodatne naloge povsod potem zelo pohvalno. Meni jih in real time ni uspelo, tako da jih nisem mogel vedno. Se mi pa zdi vredno poudariti, da je tu osnovna naloga dovolj kratka, da hitro prideš na dodatno nalogo in da se jo splača narediti iz prejšnjih dveh razlogov, ki sta v bistvu ena in ista stvar. Ne vem če imam kakšen drug smiselen napotek tu, ker v osnovi samo kličeš np.fft.fft in np.fft.ifft oz. kar np.correlate.

4. Kar bi jaz še naredil in lahko zdaj ti dodaš

Logičen odgovor tu je, da sam napišeš svojo implementacijo FFT in jo primerjaš potem z vgrajeno.

Kar sem jaz naredil

Tu je verjetno tisto kar te najbolj zanima.

Standard Disclaimer Objavljam tudi kodo. Ta je bila včasih del večjega repozitorija, ampak sem jo sedaj izvzel v svojega, da je bolj pregledna. Koda bi morala biti razmeroma pokomentirana, sploh v kasnejših nalogah.

Vseeno pa priporočam, da si najprej sam poskusiš rešiti nalogo. As always za vprašanja sem na voljo.

Priznam, da zna biti source repozitorij nekoliko kaotičen. Over time sem se naučil boljše prakse. Zdi se mi, da je tole glavni .py file.

Citiranje

Malo za šalo, malo za res.. če želiš izpostaviti/omeniti/se sklicati ali pa karkoli že, na moje delo, potem ga lahko preprosto citiraš kot:

@misc{Urbanč_mfpDN5, 
  title={Hitra Fourierova Transformacija}, 
  url={https://pengu5055.github.io/fmf-pages/year3/mfp/dn5.html}, 
  journal={Markos Chest}, 
  author={Urbanč, Marko}, 
  year={2023}, 
  month={Oct}
} 

To je veliko boljše kot prepisovanje.