Apa FFT sebenarnya menunjukkan Anda
Setiap suara yang Anda dengar adalah jumlah gelombang sinus. The Fast Fourier Transform decomposes that sum. Inilah artinya, bagaimana cara kerjanya, dan mengapa algoritma 60 tahun masih ada di mana-mana.
Pertanyaan
Mainkan akord pada piano - mengatakan, C dan E bersama-sama. Telinga Anda mendengar satu suara. Tapi suara itu adalah dua frekuensi yang ditempatkan: 261,6 Hz dan 329.6 Hz. Cochlea Anda secara fisik memisahkan mereka - berbeda sel rambut beresonansi pada frekuensi yang berbeda, mengirimkan sinyal yang berbeda ke otak Anda.
Transform Fourier Cepat melakukan hal yang sama, tetapi dengan angka bukan sel rambut. Berikan sinyal (urutan contoh amplitude dari waktu ke waktu) dan itu kembali daftar frekuensi dan kekuatan mereka. Ini menjawab: * Apa frekuensi hadir, dan berapa banyak masing-masing? * *
Apa Sebenarnya Terjadi
Sebuah contoh sinyal dari waktu ke waktu adalah daftar angka: amplitudo di setiap titik contoh. Rekaman 1-detik pada 44.100 Hz adalah 44.100 angka. Angka-angka ini menggambarkan sinyal dalam domain * * time * * - amplitudo sebagai fungsi dari waktu.
FFT mengkonversi ini ke domain frekuensi * * - amplitudo sebagai fungsi frekuensi. Informasi yang sama, representasi yang berbeda. Seperti beralih antara koordinat Cartesian dan kutub: tidak ada yang diciptakan atau dihancurkan, hanya muncul kembali.
Inti matematika: setiap sinyal periodik dapat ditulis sebagai jumlah gelombang sinus dan kosinus pada frekuensi yang berbeda. Ini teorema Fourier (1807). FFT menghitung koefisien dari jumlah itu - berapa banyak frekuensi dalam sinyal.
Mengapa "Cepat"
Cara naif untuk menghitung perubahan Fourier membutuhkan N ² operasi untuk N sampel. Untuk 1024 sampel, itu sekitar 1 juta operasi. Koley- Tukey algoritma (1965) mengurangi ini ke N (N) - sekitar 10.000 operasi untuk masukan yang sama. Sebuah kecepatan 100x. Untuk satu juta sampel, speedup adalah 50.000.000.
Triknya: memecah transformasi N-point menjadi dua N / 2 titik berubah, secara rekursif. Ini membutuhkan N untuk menjadi kekuatan 2 (atau Anda pad dengan nol). Masing-masing membagi setengah masalah. Operasi "kupu-kupu" menggabungkan bagian:
X[k] = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]
Dimana W adalah eksponensial kompleks (rotasi dalam bidang kompleks). Dua sub- hasil yang sama memberikan dua titik keluaran. Inilah mengapa algoritma adalah "cepat" - ia menggunakan kembali setiap komputasi dua kali.
Penerapan PinePaper adalah buku Cooley-Tukey radix-2 DIT (pengurangan waktu). 40 baris JavaScript. Kami menulisnya dari awal daripada mengimpor perpustakaan karena kami ingin siswa dapat membaca sumbernya dan memahami setiap baris.
Apa itu artinya
Ketika Anda melihat spektrum analyzer - bar melompat ke musik - setiap bar mewakili tempat sampah frekuensi. Tinggi adalah besarnya (kekuatan) frekuensi yang dalam sinyal saat ini.
- Sebuah gelombang sinus murni menghasilkan satu bar tinggi pada frekuensi dan tidak ada yang lain.
- Gelombang persegi * * menghasilkan batang pada dasar dan setiap harmonik aneh (3, 5, 7...), berkurang sebagai 1 / n. Inilah sebabnya mengapa gelombang persegi suara "buzzy" - mereka berisi tinggi frekuensi energi yang murni dosa tidak.
- Suara bising * * menghasilkan batang-batang tinggi yang kira-kira sama di mana-mana. Setiap frekuensi hadir dengan probabilitas yang sama.
- Suara manusia * * menghasilkan fundamental (lapangan yang Anda dengar) ditambah benteng - puncak resonansi dari bentuk saluran suara Anda yang membedakan vokal.
Windowing:
Ada tangkapan. FFT mengasumsikan sinyal berulang selamanya. Tapi sampel kami terbatas - itu dimulai dan berhenti. Jika sinyal tidak terjadi pada nol di kedua titik akhir, cutoff mendadak menciptakan konten tinggi buatan. Ini disebut * * spektral kebocoran * *.
Perbaikan: mengalikan sinyal dengan * * fungsi jendela * * yang taters lancar ke nol di tepi. Jendela umum:
- Hann * * bel kosinus): tujuan umum yang baik, kehilangan beberapa resolusi frekuensi
- Hamming * *: mirip dengan Hann tetapi tidak mencapai nol di tepi, sedikit lebih baik penekanan sela
- Blackman * *: mempersempit lobus utama, lebih baik ekstenobe penekanan, kehilangan resolusi frekuensi
Pilihan selalu diperdagangkan antara resolusi frekuensi (bagaimana tepatnya Anda dapat mengidentifikasi frekuensi) dan kebocoran spektral (berapa banyak energi yang mengalir ke tempat sampah tetangga). Tidak ada jendela yang sempurna. Ini adalah konsekuensi dari prinsip ketidakpastian - Anda tidak dapat memiliki pengetahuan yang tepat sewenang-wenang baik waktu dan frekuensi secara bersamaan.
Dimana FFT Lives
Anda berinteraksi dengan hasil FFT secara konstan:
- MP3 dan kompresi AAC * *: ubah audio ke domain frekuensi, buang frekuensi di bawah ambang batas pendengaran, tekan apa yang tersisa. Transformasi adalah dasar dari kompresi audio lossy.
- kompresi JPEG * *: versi 2D (DCT) mengubah blok 8x8 piksel ke domain frekuensi, kuantizes komponen frekuensi tinggi. Itu sebabnya artefak JPEG muncul sebagai blok.
- WiFi dan 5G * *: Encoding OFDM memecah data di banyak sub- operator frekuensi. FFT mengkonversi antara waktu - domain transmisi dan sering terjadi - domain data simbol.
- MRI pencitraan * *: sinyal mentah dari scanner MRI adalah dalam ruang frekuensi. The terbalik FFT rekonstruksi gambar spasial. Secara harfiah, setiap MRI yang pernah Anda lihat adalah perubahan terbalik Fourier.
- Shazam * *: menghitung spektrogram (FFT atas jendela geser), mengekstrak puncak, mencocokkan pola terhadap basis data. FFT adalah langkah pertama dalam mengenali setiap lagu.
Algoritma berusia 60 tahun, di sakumu, berjalan miliaran kali per hari.
}Cobalah
Buka PinePaper, pilih generator Analisa Spectrum. Buat gelombang persegi. Lihatlah bar - Anda akan melihat harmonik aneh jatuh sebagai 1 / n. Beralih ke gigi gergaji - sekarang semua harmonik hadir, jatuh sebagai 1 / n. Beralih ke kebisingan - spektrum datar, setiap frekuensi sama kemungkinan.
Ubah fungsi jendela. Perhatikan bagaimana Hann memperhalus spektrum dengan biaya puncak yang lebih besar. Beralih ke Blackman - puncak lebih sempit tapi sela-sela lebih rendah.
Anda tidak membaca tentang FFT. Anda mengukur sinyal dan mengamati apa transformasi mengungkapkan. Itulah perbedaan antara mengetahui dan memahami.
Referensi
- Brigham, E.O. (1988). * Transform Fast Fourier dan Aplikasi Its *. Prence Hall.
- Cooley, J.W. & Tukey, J.W. (1965). Sebuah Algoritma untuk Kalkulasi Mesin dari Kompleks Fourier Series. * Matematika Komputer *, 19 (90), 297-301.
- Fourier, J. (1822). * Theorie analitique de la chaleur *. "Firmin Didot".
- Harris, F.J. (1978). Pada Penggunaan Windows untuk Analisis Harmonik dengan Transform Fourier Discrete. * Proses IEEE *, 66 (1), 51- 83.
- Oppenheim, A.V. & Schafer, R.W. (2009). * Discrete-Time signal Processing * (3rd ed.). Prence Hall.
- Shannon, C.E. (1949). Komunikasi di Kehadiran Keheningan. * Proceedings dari 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). Algoritma Pencarian Audio Industri. * Proses ISMIR 2003 *. (Algoritma pencetakan jari Shazam)
- Wallace, G.K. (1991). JPEG Masih Standar Kompresi Gambar. * Komunikasi ACM *, 34 (4), 30-44.
- FFT PinePaper adalah implementasi Cooley-Tukey radix-2 dengan Hann, Hamming, dan Blackman windowing, ditambah low-pass dan tinggi-passing filter. Cobalah bebas di [Pinepaper.studio / editor] (/editor). *
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor