· 7 min read

Nini FFT ya Kweli Inakuonyesha

Kila sauti unayoisikia ni kiasi cha mawimbi ya sine. Mabadiliko ya haraka ya nne yanaondoa kiasi hicho. Hapa ni nini maana, jinsi inavyofanya kazi, na kwa nini algorithm ya umri wa miaka 60 bado iko kila mahali.

Suala la

Kucheza chord kwenye piano - c na E kwa pamoja. Sauti yako itasikia sauti moja. Lakini sauti hiyo ni frequencies mbili superimposed: 261.6 Hz na 329.6 Hz. Mwili wako unakutenganisha— seli tofauti za nywele zinaenea katika masafa tofauti, zikituma ishara tofauti kwenye ubongo wako.

Mabadiliko ya haraka ya nne hufanya kitu sawa, lakini kwa idadi badala ya seli za nywele. Kuwapa ishara (mfululizo wa sampuli za juu juu juu ya muda) na kurudi orodha ya frequency na nguvu zao. Swali: "Je, ni kiasi gani cha fedha ambacho kila mmoja anacho

Nini kinatokea kwa kweli

Ishara iliyoonyeshwa baada ya muda ni orodha ya idadi: amplitude katika kila hatua ya sampuli. Rekodi ya pili katika 44,100 Hz ni nambari 44,100. Nambari hizi zinaelezea ishara katika uwanja wa wakati ** - kazi kama kazi ya wakati.

FFT inabadilisha hii kwa uwanja wa mara kwa mara - kufanya kazi kama mzunguko wa mzunguko. Taarifa sawa, uwakilishi tofauti. Kama kubadili kati ya Cartesian na kuratibu polar: hakuna kitu kilichoumbwa au kuharibiwa, tu re-expressed.

Msingi wa hisabati: kila ishara ya mara kwa mara inaweza kuandikwa kama jumla ya mawimbi ya sine na cosine katika masafa tofauti. Hii ni nadharia ya Kaisari (1807). FFT inahesabu gharama za fedha hizo - kiasi gani cha kila mzunguko ni katika ishara.

Kwa nini ni "Fast"

Njia ya naive ya kuhesabu mabadiliko ya nne inahitaji Shughuli za N2 kwa sampuli za N2. Kwa sampuli za 1024, hiyo ni karibu operesheni milioni moja. Algorithm ya Cooley-Tukey (1965) hupunguza hii kwa N·log2 (N) 10,000 kwa ajili ya kazi hiyo. 100x kasi ya juu. Kwa sampuli milioni, kasi ni 50,000x.

Mbinu: mgawanyiko N-point kubadilisha katika mabadiliko mawili ya N / 2-point, recursively. Hii inahitaji N kuwa nguvu ya 2 (au wewe pad na sifuri). Kila mmoja ana nusu ya tatizo. Operesheni ya "butterfly" inachanganya nusu:

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

Ambapo W ni maonyesho magumu (mzunguko katika ndege ngumu). Matokeo mawili sawa yanakupa pointi mbili za matokeo. Hii ndio sababu algorithm ni "haraka" inabadilisha kila hesabu mara mbili.

Utekelezaji wa PinePaper ni kitabu cha Cooley-Tukey radix-2 DIT (uamuzi kwa wakati). Picha zote na JavaScript. Tuliandika kutoka mwanzo badala ya kuagiza maktaba kwa sababu tulitaka wanafunzi waweze kusoma chanzo na kuelewa kila mstari.

Nini maana ya bar

Ukiangalia kwa makini uchambuzi wa download muziki kwa ajili ya - kila bar inawakilisha mzunguko bin. Urefu ni ukubwa (nguvu) wa mzunguko huo katika ishara ya sasa.

  • *Wave safi ya sine * hutoa bar moja ndefu kwa mzunguko wake na hakuna kitu kingine.
    • Wimbi la mraba * hutoa baa katika msingi na kila isiyo ya kawaida harmonic (3rd, 5th, 7th ...), kupungua kama 1 /n. Hii ndiyo sababu mawimbi ya sauti ya "buzzy" - ina nishati ya juu ya frequency ambayo sines safi hawana.
    • Sauti nyeupe* hutoa baa za urefu sawa kila mahali. Kila mzunguko una uwezekano sawa.
    • Sauti ya binadamu* inazalisha msingi (kiwango unachosikia) pamoja na fomu - resonant peaks kutoka sura ya trakti yako ya sauti ambayo kutofautisha vowels.

Hatua ya tatu ni: bonyeza kati yao. Viwango vya juu ni formula, si kuchora: sine ni 1 katika msingi, wimbi la mraba ni hasa 1 / n juu ya harmonics.

Interactive demo — open in editor pp:PinePaper

Semalt: Kwa nini matatizo ya SEO

Kuna haja ya catch. FFT inadhani ishara inarudia daima. Na mwisho wa maombi yetu ni kuanza na kuacha. Ikiwa ishara haitatokea kuwa sifuri katika pande zote mbili, kukata ghafla kunaunda maudhui ya juu ya frequency. Aina hii huitwa ‘spectral leakage’.

Kurekebisha: kuzidisha ishara kwa kazi ya window ambayo hugusa vizuri kwa sifuri kwenye makali. Windows ya kawaida:

  • *Hann ** (cosine bell): kusudi nzuri la jumla, kupoteza azimio la mzunguko
  • *Hamming **: sawa na Hann lakini haipatikani sifuri kwenye makali, ukandamizaji bora wa sidelobe
  • Blackman **: lobe kuu nyembamba, ukandamizaji bora wa sidelobe, hupoteza azimio la mzunguko zaidi

Chaguo daima ni biashara kati ya azimio la mzunguko (jinsi hasa unaweza kutambua mzunguko) na kuvuja kwa kiasi (ni kiasi gani cha nishati kinavuja ndani ya bins jirani). Hakuna mlango mzuri. Hii ni kwa mujibu wa kanuni ya usalama – huwezi kuwa na ujuzi sahihi wa wakati wote na mzunguko kwa wakati mmoja.

Ambapo FFT inaishi

Unashirikiana na matokeo ya FFT mara kwa mara:

  • MP3 na Mfinyazo wa AAC: kubadilisha sauti kwa uwanja wa mzunguko, kuacha masafa chini ya kizingiti cha kusikia, kusisitiza kile kinachobaki. Kubadilisha ni msingi wote wa compression ya sauti ya kupoteza.
    • Mfinyazo wa JPEG **: toleo la 2D (DCT) linabadilisha vitalu vya pixel 8 × 8 kwa uwanja wa mzunguko, hupima vipengele vya juu vya frequency. Ndiyo sababu vifaa vya JPEG huonekana kama vitalu.
  • WiFi na 5G: OFDM encoding mgawanyiko data katika wengi frequency sub-carriers. FFT hubadilisha kati ya usambazaji wa kikoa cha wakati na alama za data za frequency.
  • Picha ya MRI **: ishara ya ghafi kutoka kwa scanner ya MRI iko katika nafasi ya frequency. FFT inverse inatengeneza picha ya anga. Kwa kweli, kila MRI umewahi kuona ni mabadiliko ya inverse.
  • Shazam: Inahesabu spectrogram (FFT juu ya madirisha ya sliding), inachukua kilele, inafanana na muundo dhidi ya database. FFT ni hatua ya kwanza katika kutambua kila wimbo.

Algorithm ya umri wa miaka 60, mfukoni mwako, inaendesha mabilioni ya mara kwa siku.

Interactive demo — open in editor pp:PinePaper

Jaribu kuwa

Fungua PinePaper, chagua jenereta ya Analyzer ya Spectrum. Inazalisha wimbi la mraba. Angalia kwa makini - utagundua kwamba harufu ya harufu ya harufu ya kawaida inapungua kama 1 / n. Kugeuka kwa sawtooth - kwa sasa kila kitu kinakwenda kama 1/n. Kupiga kelele - rangi ya rangi, kila mzunguko unaweza kuwa sawa.

Kubadili mfumo wa uendeshaji. Angalia jinsi Hann inavyoboresha wigo kwa gharama ya kilele cha pana. Kuwa Blackman vipande vidogo vidogo lakini vya chini.

Huwezi kujifunza kuhusu FFU. Unapima ishara na kuangalia nini mabadiliko inaonyesha. Hii ni tofauti kati ya kujua na kuelewa.

Marejeo ya

  • Mkuu wa Mkoa, E.O. (1987). * Mabadiliko ya haraka na matumizi yake*. Ukumbi wa kwanza.
  • Mheshimiwa Spika, J.W. wa wa wa wa wa wa wa wa wa. (1965). Algorithm ya hesabu ya mashine ya mfululizo wa Fourier. Mathematics ya Computation, 19(90), 297-301.
  • Kwa upande wake, J. 1822). Théorie analytique de la chaleur. Mwandishi: Firmin Didot.
  • Kwa upande wake, J. ya mwaka 1978. Juu ya matumizi ya Windows kwa Uchambuzi wa Harmonic na Discrete Fourier Transform. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ....................................................................
  • Kwa upande wake, A.V. Kwa mfano, Schafer, R.W. (2009) kuwa Mhe. Uchunguzi wa ishara ya wakati (3rd ed). Ukumbi wa kwanza.
  • Kwa upande wake, Dk. mwaka wa 49. Mawasiliano katika uwepo wa sauti. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ....................................................................
  • Smith, wa wa. (1997). Mwongozo wa Mwanasayansi na Mhandisi wa Usindikaji wa Signal Digital *. Uchapishaji wa Teknolojia ya California.
  • Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ya mwaka (2003). Algorithm ya Utafutaji wa Sauti ya Viwanda. Maendeleo ya mwaka 2003. (Angalau ya alama za vidole ya Shazam.)
  • Kwa upande wake, Bw. (1991) wa. JPEG bado picha Compression Standard. Mawasiliano ya ACM*, 34(4), 30-44.

FFT ya PinePaper ni utekelezaji wa Cooley-Tukey radix-2 na Hann, Hamming, na Blackman, pamoja na filters za chini za kupita na za juu. Jaribu kuwa huru katika [pinepaper.studio/editor] (/editor).

Ready to create?

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

Open PinePaper Editor