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.
On this page
Pertanyaannya
Mainkan akord pada piano — katakan, C dan E bersama. Telingamu mendengar satu suara. Tapi suara itu dua frekuensi superimposed: 261.6 Hz dan 329.6 Hz. Cochlea Anda secara fisik memisahkan mereka — 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 waktu domain — amplitudo sebagai fungsi waktu.
FFT mengubah ini menjadi ** frekuensi — 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). FFAT FFT menghitung koefisien dari jumlah itu — berapa banyak 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) — 10,000 operasi untuk input 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 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" — — itu 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
Ketika Anda melihat analisis spektrum — orang - orang bar bar yang melompat ke musik — setiap bar mewakili 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 bahwa sinus murni tidak.
- **Noise putih menghasilkan bar setinggi kira-kira sama di mana-mana. Setiap frekuensi hadir dengan kemungkinan yang sama.
- **** Suara manusia [*] menghasilkan dasar (yang Anda dengar) ditambah pemasang — puncak resonansi dari bentuk vokal anda yang membedakan vokal.
Tiga yang pertama berada di bawah — klik di antaranya. Ketinggian adalah formula, bukan gambar: sinus adalah 1 pada dasar, gelombang persegi tepat 1/n di harmonik ganjil.
Jendela: Mengapa Sudutnya Penting
Ada tangkapan. FFT menganggap sinyal berulang selamanya. Tapi sampel kita terbatas — itu dimulai 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 tepat arbitrarily baik waktu dan 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.
Cobalah
Open PinePaper, pilih generator Spektrum Analyzer. Janakan gelombang kuadrat. Lihatlah jeruji — anda akan melihat harmonik ganjil jatuh sebagai 1/n. Tukar ke gigi gergaji — sekarang semua harmonik hadir, jatuh sebagai 1/n. Tukar ke kebisingan — spektrum datar, setiap frekuensi sama mungkin.
Perubahan fungsi jendela. Perhatikan bagaimana Hann memperhalus spektrum dengan biaya puncak yang lebih luas. Beralih ke Blackman — puncak yang lebih sempit tapi sisilobes bawah.
Kau tidak membaca tentang FFT. Kau mengukur sinyal dan mengamati apa yang diungkap transform. Itulah perbedaan antara pengetahuan dan pemahaman.
Rujukan
- Brigham, E.O. ANAK (1988). "Penjelmaan Empat Lebih Cepat dan Aplikasinya". Balai Prentice.
- (Inggris) Cooley, J.W. Tukey &, J.W. (1965). Algoritma untuk perhitungan mesin Seri Fourier Complex. Matematika Komputasi, 19(90), 297-301.
- Counderier, J. ^ "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. Mahāyār (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.
- (Inggris) Smith, S.W. (1997). Panduan Ilmuwan dan Insinyur untuk Pengolahan Sinyal Digital. California Technical Publishing (dalam bahasa Inggris).
- Wang, A., et al. ^ Algoritma Pencarian Audio Industrial-Strength. Proceedings of ISMIR 2003. (Algoritma sidik jari audio Shazam.)
- Wallace, G.K. ^ a b c d e f g h i j k l m n o p. Standar Pemampatan Gambar JPEG Masih. Komunikasi AKM, 34(4), 30-44.
FFFT milik PinePaper adalah sebuah implementasi Cooley-Tukey radix-2 dengan Hann, Hamming, dan Blackman windowing, ditambah low-pass dan filter high-pass. (/editor).
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor