Apa Sebenarnya FFT Menunjukkan Anda
Setiap suara yang kau dengar adalah gelombang sinus. Fast Fourier Transform terurai yang jumlah. Inilah artinya, cara kerjanya, dan mengapa algoritma 60 tahun masih ada di mana-mana.
Pertanyaannya
Mainkan kord pada piano — katakanlah, C dan E bersama - sama. Telingamu mendengar satu suara. Tapi suara itu dua frekuensi superimposed: 261.6 Hz dan 329.6 Hz. Secara fisik, koklea Anda memisahkan mereka — sel - sel rambut yang berbeda bergema pada frekuensi yang berbeda, mengirimkan sinyal yang berbeda ke otak Anda.
Transform Fast Fourier melakukan hal yang sama, tetapi dengan angka bukan sel rambut. Kata itu memberi sinyal (urutan sampel amplitudo seiring waktu) dan mengembalikan daftar frekuensi dan kekuatan mereka. Jawabannya: ** frekuensi apa yang ada, dan berapa banyak dari masing-masing?**
Apa yang Sebenarnya Terjadi
Sinyal yang dicontohkan dari waktu ke waktu adalah daftar angka: amplitudo pada setiap titik sampel. Rekaman 1 detik di 44.100 Hz adalah 44.100 angka. Angka - angka ini menggambarkan sinyal dalam **time domain ** — amplitudo sebagai fungsi waktu.
FFT mengubah ini menjadi frequence domain — amplitudo sebagai fungsi frekuensi. Informasi yang sama, perwakilan yang berbeda. Seperti switching antara Cartesian dan koordinat kutub: tidak ada yang dibuat atau dihancurkan, hanya re-expressed.
Inti matematika α γ: setiap sinyal periodik dapat ditulis sebagai jumlah sinus dan gelombang kosinus pada frekuensi yang berbeda. Ini adalah teorema Fourier (1807). FFTFT menghitung koefisien dari jumlah tersebut — berapa banyak dari setiap frekuensi dalam sinyal.
Mengapa "Fast"
Cara naif untuk menghitung transformasi Fourier membutuhkan Operasi N2 untuk sampel N. Untuk sampel 1024, itu sekitar 1 juta operasi. Algoritme Cooley-Tukey (1965) mengurangi ini menjadi N·log2(N) — sekitar 10.000 operasi untuk masukan yang sama. Kecepatan 100x. Untuk 1 juta sampel, kecepatannya 50.000x.
Triknya: bagikan transformasi titik-N menjadi dua transformasi titik-N/2, secara rekursif. Ini membutuhkan N untuk menjadi kekuatan 2 (atau Anda pad dengan nol). Masing-masing membagi sebagian masalah. Operasi ini menggabungkan bagian:
X[k] = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]
Where W adalah eksponensial kompleks (sebuah rotasi dalam pesawat kompleks). Dua sub-pembalasan yang sama memberikan dua poin output. Inilah sebabnya mengapa algoritmanya "cepat" — menggunakan kembali setiap perhitungan dua kali.
Pelaksanaan PinePaper PinePaper adalah buku teks Cooley-Tukey radix-2 DIT (decimasi dalam waktu). Marix 40 baris JavaScript. Kami menulisnya dari awal daripada mengimpor perpustakaan karena kami ingin siswa dapat membaca sumber dan memahami setiap baris.
Apa Arti Bar Itu
Bila Anda melihat penganalisa spektrum — bar - bar yang melompat ke musik — setiap bar melambangkan bin frekuensi. Tinggi badan adalah magnitudo (kekuatan) dari frekuensi tersebut dalam sinyal saat ini.
- Gelombang sinus murni menghasilkan satu batang tinggi pada frekuensinya dan tidak ada yang lain.
- *****A gelombang persegi menghasilkan bar pada dasar dan setiap harmonik ganjil (ke-3, ke-5, ke-7...), berkurang sebagai 1/n. Inilah sebabnya mengapa gelombang persegi suara "buzzy" — mereka mengandung energi frekuensi tinggi yang sinus murni tidak.
- **Noise putih menghasilkan bar setinggi kira-kira sama di mana-mana. Setiap frekuensi hadir dengan kemungkinan yang sama.
- ***** Suara manusia menghasilkan nada dasar (yang Anda dengar) ditambah pemasang — puncak resonansi dari bentuk vokal Anda yang membedakan vokal.
Jendela: Mengapa Sudutnya Penting
Ada tangkapan. FFT menganggap sinyal berulang selamanya. Namun, sampel kita terbatas — mulai dan berhenti. Jika sinyal tidak terjadi pada nol di kedua titik akhir, pemotongan tiba-tiba menciptakan konten frekuensi tinggi buatan. Ini disebut **kebocoran **.
Fix: kalikan sinyal dengan fungsi *window yang taper lancar ke nol di tepi. Jendela umum:
- Tujuan umum yang baik, kehilangan beberapa resolusi frekuensi
- ********: mirip dengan Hann tetapi tidak mencapai nol di tepi, sedikit lebih baik tekanan sidelobe
- **Blackman **********: lobus utama yang lebih sempit, penekan sisilobe yang lebih baik, kehilangan lebih banyak resolusi frekuensi
Pilihan itu adalah pilihan yang selalu menjadi tradeoff antara resolusi frekuensi (bagaimana tepatnya Anda dapat mengidentifikasi frekuensi) dan kebocoran spektral (berapa banyak energi berdarah ke tempat sampah tetangga). Tidak ada jendela yang sempurna. Ini adalah konsekuensi dari prinsip ketidakpastian — Anda tidak dapat memiliki pengetahuan yang tepat secara arbitari tentang waktu maupun frekuensi secara bersamaan.
Di Mana FFT Tinggal
Anda berinteraksi dengan hasil FFT secara konstan:
- MP3 dan kompresi AAC: mentransformasikan audio ke domain frekuensi, abaikan frekuensi di bawah ambang pendengaran, kompresi apa yang tersisa. Penjelmaan adalah seluruh dasar kompresi audio hilang.
- **JPEG kompresi: versi 2D (DCT) mengubah blok piksel 8×8 ke domain frekuensi, kuantifikasi komponen frekuensi tinggi. Itu sebabnya artefak JPEG muncul sebagai blok.
- **WiFi dan 5G: Encoding OFDM membagi data melintasi banyak sub-carrier frekuensi. FFT FFT berkonversi antara transmisi time-domain dan simbol data frequency-domain.
- MRI imaging: sinyal mentah dari pemindai MRI berada di ruang frekuensi. FFT terbalik merekonstruksi gambar spasial. Setiap MRI yang pernah kau lihat adalah transformasi Fourier terbalik.
- Shazam*: menghitung spektrogram (FFT atas jendela geser), mengekstrak puncak, cocok dengan pola terhadap sebuah basis data. FFTFT adalah langkah pertama dalam mengenali setiap lagu.
Algoritma 60 tahun, di sakumu, berjalan miliaran kali per hari.
¶ ¶widget: fungsi-plot}}}
Cobalah
Open PinePaper, pilih generator Spektrum Analyzer. Janakan gelombang kuadrat. Lihatlah jerujinya — Anda akan melihat harmonik yang aneh jatuh sebagai 1/n. Tukar ke gigi gergaji — sekarang semua harmonik hadir, jatuh sebagai 1/n. Spektrum yang rata, setiap frekuensinya sama besar.
Perubahan fungsi jendela. Perhatikan bagaimana Hann memperhalus spektrum dengan biaya puncak yang lebih luas. Tukar ke Blackman — puncak yang lebih sempit tetapi sisi yang lebih rendah.
Kau tidak membaca tentang FFT. Kau mengukur sinyal dan mengamati apa yang diungkap transform. Itulah perbedaan antara pengetahuan dan pemahaman.
Rujukan
- Brigham, E.O. (1988). "Penjelmaan Empat Lebih Cepat dan Aplikasinya". Balai Prentice.
- ¡Colley, J.W. & Tukey, J.W. (1965). Algoritma untuk perhitungan mesin Seri Fourier Complex. Matematika Komputasi, 19(90), 297-301.
- Cotherier, J. (1822). "Théorie analytique de la chaleur" Paris: Firmin Didot.
- (Inggris) Harris, F.J. (1978). Dia menggunakan Windows untuk Analisis Harmonis dengan Transform Fourier Diskret. Proceedings dari IEEE, 66(1), 51-83.
- Openheim, A.V. & Schafer, R.W. (2009). Parameter screte-Time Signal Processing* (3rd ed.). Balai Prentice.
- Shannon, C.E. (1949). Komunikasi yang Menakjubkan dalam Kebisingan. Proceedings of the IRE, 37(1), 10-21.
- ^ Smith, S.W. (1997). Panduan Ilmuwan dan Insinyur untuk Pengolahan Sinyal Digital. California Technical Publishing (dalam bahasa Inggris).
- Wang Wang, A., et al. (2003). Algoritma Pencarian Audio Industrial-Strength. Proceedings of ISMIR 2003. (Algoritma sidik jari audio Shazam.)
- Wallace, G.K. (1991). Standar Pemampatan Gambar JPEG Masih. Komunikasi AKM, 34(4), 30-44.
FFFFT milik FAFAIL PinePaper adalah sebuah implementasi Cooley-Tukey radix-2 dengan Hann, Hamming, dan Blackman windowing, ditambah dengan low-pass dan filter high-pass. (/editor).
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor