· 6 min read

Wat de Fiat daadwerkelijk laat zien

Elk geluid dat je hoort is een som sinusgolven. De Fast Fourier Transform ontbindt dat bedrag. Dit is wat dat betekent, hoe het werkt, en waarom een 60-jarige algoritme nog overal is.

De vraag

Speel een akkoord op een piano, zeg C en E samen. Je oor hoort één geluid. Maar dat geluid is twee frequenties boven elkaar: 261,6 Hz en 329,6 Hz. Je cochlea scheidt ze fysiek van elkaar... verschillende haarcellen resoneren op verschillende frequenties... en sturen verschillende signalen naar je hersenen.

De snelle Fourier Transform doet hetzelfde, maar met getallen in plaats van haarcellen. Geef het een signaal (een opeenvolging van amplitudemonsters in de tijd) en het geeft een lijst van frequenties en hun sterktes. Het antwoordt: Welke frequenties zijn aanwezig, en hoeveel van elk?

Wat gebeurt er eigenlijk

Een in de tijd bemonsterd signaal is een lijst van getallen: de amplitude op elk monsterpunt. Een 1-seconde opname bij 44,100 Hz is 44,100 nummers. Deze getallen beschrijven het signaal in het time domein .

De Commissie is van mening dat de Commissie in haar besluit tot inleiding van de procedure heeft geconcludeerd dat de Commissie niet heeft aangetoond dat er sprake is van staatssteun. Dezelfde informatie, andere vertegenwoordiging. Zoals schakelen tussen Cartesiaanse en poolcoördinaten: niets wordt gecreëerd of vernietigd, alleen opnieuw uitgedrukt.

De wiskundige kern: elk periodiek signaal kan worden geschreven als een som van sinus- en cosinusgolven bij verschillende frequenties. Dit is de stelling van Fourier (1807). De Commissie is van mening dat de Commissie in haar besluit tot inleiding van de procedure heeft geconcludeerd dat de maatregel geen staatssteun vormt in de zin van artikel 107, lid 1, VWEU.

Waarom "Snel"

De naïeve manier om een Fourier transformatie te berekenen vereist N2-operaties voor N-monsters. Voor 1024 monsters is dat ongeveer 1 miljoen operaties. Het Cooley-Tukey algoritme (1965) reduceert dit tot N·log2(N) Een 100x snelheid. Voor een miljoen monsters is de snelheid 50.000x.

De truc: deel de N-punt om in twee N/2-punt transformeert, recursief. Dit vereist N om een vermogen van 2 (of je pad met nullen). Elke splitsing halveert het probleem. De "vlinder" operatie combineert de helften:

X[k]     = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]

Waar W een complexe exponentiële (een rotatie in het complexe vlak). Dezelfde twee subresultaten geven je twee outputpunten. Dit is de reden waarom het algoritme "snel" is, het hergebruikt elke berekening tweemaal.

De implementatie van PinePaper is een tekstboek Cooley-Tukey radix-2 DIT (decimation in time). 40 lijnen JavaScript. We schreven het vanaf nul in plaats van een bibliotheek te importeren omdat we wilden dat studenten de bron konden lezen en elke regel konden begrijpen.

Wat betekenen die bars

Wanneer je een spectrum analyser ziet springen bars naar muziek .. elke bar vertegenwoordigt een frequentie bin. De hoogte is de grootte (sterkte) van die frequentie in het huidige signaal.

  • Een zuivere sinusgolf produceert een hoge bar op zijn frequentie en niets anders.
  • Een vierkante golf produceert bars op de fundamentele en elke oneven harmonische (3rd, 5th, 7th...), afnemend als 1/n. Dit is de reden waarom vierkante golven klinken "buzzy" .
  • White noise produceert overal bars van ongeveer gelijke hoogte. Elke frequentie is aanwezig met gelijke waarschijnlijkheid.
  • Een menselijke stem produceert een fundamentele (de toonhoogte die je hoort) plus formanten .

Venster: Waarom de Randen Matter

Er zit een addertje onder het gras. De Commissie is van mening dat de maatregel een economisch voordeel vormt voor de regio Sardinië. Maar ons monster is eindeloos. Het begint en stopt. Als het signaal niet toevallig op nul staat bij beide eindpunten, zorgt de abrupte cutoff voor kunstmatig hoogfrequente inhoud. Dit heet ** spectrale lekkage**.

De fix: vermenigvuldig het signaal met een vensterfunctie die soepel aan de randen tot nul kan leiden. Gemeenschappelijke vensters:

  • Hann (cosinusbel): goed algemeen doel, verliest enige frequentieresolutie
  • Hamming: vergelijkbaar met Hann maar bereikt geen nul aan de randen, iets betere sidelobe onderdrukking
  • Blackman: smallere hoofdkwab, betere sidelobe onderdrukking, verliest meer frequentieresolutie

De keuze is altijd een afweging tussen frequentieresolutie (hoe precies je een frequentie kunt identificeren) en spectrale lekkage (hoeveel energie er in de aangrenzende bakken bloedt). Er is geen perfect raam. Dit is een gevolg van het onzekerheidsprincipe .

De Commissie is van mening dat de Commissie in haar besluit tot inleiding van de procedure heeft geconcludeerd dat de Commissie niet heeft aangetoond dat de maatregel niet verenigbaar is met de interne markt

U interageert voortdurend met de resultaten van het OT:

  • MP3 en AAC compressie: transformeer audio naar frequentiedomein, gooi frequenties onder de gehoordrempel weg, comprimeer wat overblijft. De transformatie is de volledige basis van verlies audio compressie.
  • JPEG-compressie: de 2D-versie (DCT) transformeert 8×8 pixelblokken naar frequentiedomein, quantiseert hoogfrequente componenten. Daarom verschijnen JPEG artefacten als blokken.
  • WiFi en 5G: OFDM-codering splitst gegevens over vele frequentiesub-carriers. De Commissie is van mening dat de Commissie van oordeel is dat de door de Commissie verstrekte informatie in overeenstemming is met artikel 107, lid 1, VWEU.
  • MRI beeldvorming: het ruwe signaal van een MRI scanner is in de frequentieruimte. De inverse Fiat reconstrueren het ruimtelijke beeld. Letterlijk: elke MRI die je ooit hebt gezien is een omgekeerde Fourier transformatie.
  • ** Shazam**: berekent het spectrogram (FFT over schuifvensters), haalt pieken, past het patroon tegen een database. De Fiat is de eerste stap in het herkennen van elk nummer.

Een 60-jarige algoritme, in je zak, die miljarden keren per dag draait.

{widget:function-plot}

Probeer het

Open PinePaper, selecteer de Spectrum Analyzer generator. Genereer een vierkante golf. Kijk naar de tralies, dan zie je de rare harmonischen vallen als 1/n. Schakel over op een zaagtand en nu zijn alle harmonischen aanwezig, die als 1/n vallen. Schakel over op het vlakke spectrum van lawaai, elke frequentie even waarschijnlijk.

Wijzig de vensterfunctie. Bekijk hoe Hann het spectrum glad maakt ten koste van bredere pieken. Schakel over naar Blackman en smallere pieken maar lagere zijlobben.

Je leest niet over de Fiat. Je meet signalen en observeert wat de transformatie onthult. Dat is het verschil tussen weten en begrijpen.

Referenties

  • Brigham E.O. (1988). The Fast Fourier Transform and Its Applications. Prentice Hall.
  • Cooley, J.W. & Tukey, J.W. (1965). Een algoritme voor de Machine Berekening van Complex Fourier Series. Mathematics of Computation, 19(90), 297-301.
  • Fourier, J. (1822). Théorie analytique de la chaleur. Paris: Firmin Didot.
  • Harris, FJ (1978). Over het gebruik van Windows voor Harmonische Analyse met de Discrete Fourier Transform. * Procedure IEEE*, 66(1), 51-83.
  • Oppenheim, AV & Schafer, R.W. (2009). * Discrete-Time Signal Processing* (3rd ed.). Prentice Hall.
  • Shannon, CE (1949). Communicatie in de aanwezigheid van lawaai. Proceedings of the IRE, 37(1), 10-21.
  • Smith, S.W. (1997). The Scientist and Engineer's Guide to Digital Signal Processing. California Technical Publishing.
  • Wang, A., et al. (2003). Een Industrial-Strength Audio Search Algorithm. Proceedings of ISMIR 2003. (Shazam's audio vingerafdruk algoritme)
  • Wallace, G.K. (1991). De JPEG Still Picture Compression Standard. * Communications of the ACM*, 34(4), 30-44.

  • PinePaper is een Cooley-Tukey radix-2 implementatie met Hann, Hamming, en Blackman windowing, plus low-pass en high-pass filters. Probeer het gratis op pinepaper.studio/editor.*

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor