Resolusi frekuensi tergantung pada hubungan antara panjang FFT dan laju sampling dari sinyal input.
Jika kami mengumpulkan 8192 sampel untuk FFT maka kami akan memiliki:
8192 samples2=4096 FFT bins
Jika laju pengambilan sampel kami adalah 10 kHz, maka teorema pengambilan sampel Nyquist-Shannon mengatakan bahwa sinyal kami dapat berisi konten frekuensi hingga 5 kHz. Kemudian, resolusi bin frekuensi kami adalah:
5 kHz4096 FFT bins≃1.22 Hzbin
Ini mungkin cara yang lebih mudah untuk menjelaskannya secara konseptual tetapi disederhanakan: resolusi nampan Anda hanya , di mana adalah laju pengambilan sampel sinyal input dan N adalah jumlah poin FFT digunakan (panjang sampel).fsampNfsamp
Kita dapat melihat dari atas bahwa untuk mendapatkan nampan FFT yang lebih kecil, kita dapat menjalankan FFT yang lebih lama (yaitu, mengambil lebih banyak sampel dengan laju yang sama sebelum menjalankan FFT) atau menurunkan laju sampling kami.
Tangkapan:
Selalu ada trade-off antara resolusi temporal dan resolusi frekuensi.
Pada contoh di atas, kita perlu mengumpulkan 8192 sampel sebelum kita dapat menjalankan FFT, yang ketika pengambilan sampel pada 10 kHz membutuhkan 0,82 detik.
Jika kami mencoba mendapatkan nampan FFT yang lebih kecil dengan menjalankan FFT yang lebih lama, akan dibutuhkan waktu lebih lama untuk mengumpulkan sampel yang dibutuhkan.
Itu mungkin baik-baik saja, mungkin tidak. Poin penting adalah bahwa pada laju pengambilan sampel yang tetap, peningkatan resolusi frekuensi mengurangi resolusi temporal. Itu adalah semakin akurat pengukuran Anda dalam domain frekuensi, semakin tidak akurat Anda dalam domain waktu. Anda secara efektif kehilangan semua informasi waktu di dalam panjang FFT.
Dalam contoh ini, jika nada 1999 Hz mulai dan berhenti di paruh pertama sampel 8192 FFT dan nada 2002 Hz diputar di paruh kedua jendela, kita akan melihat keduanya, tetapi tampaknya akan terjadi pada saat yang sama. waktu.
Anda juga harus mempertimbangkan waktu pemrosesan. Titik 8192 FFT membutuhkan daya pemrosesan yang layak. Cara untuk mengurangi kebutuhan ini adalah dengan mengurangi laju sampling, yang merupakan cara kedua untuk meningkatkan resolusi frekuensi.
Dalam contoh Anda, jika Anda menurunkan laju sampling ke sesuatu seperti 4096 Hz, maka Anda hanya membutuhkan 4096 titik FFT untuk mencapai 1 Hz sampah * 4096 Hz, maka Anda hanya perlu 4096 poin FFT untuk mencapai 1 hz sampah dan masih dapat menyelesaikan Sinyal 2khz. Ini mengurangi ukuran bin FFT, tetapi juga mengurangi bandwidth sinyal.
Akhirnya dengan FFT akan selalu ada trade off antara resolusi frekuensi dan resolusi waktu. Anda harus melakukan sedikit tindakan penyeimbang untuk mencapai semua sasaran.
Resolusi FFT dasar adalah , di mana adalah frekuensi sampling.fsN fs
Kemampuan untuk membedakan dua sinyal dengan jarak sangat dekat sangat bergantung pada amplitudo relatif dan fungsi windowing yang digunakan.
Anda mungkin menemukan bahwa bermain dengan penganalisa sinyal Baudline adalah cara yang baik untuk mengembangkan beberapa intuisi tentang masalah ini - dan tidak, menjalankan beberapa FFT dan merencanakan satu spektrum pada suatu waktu dalam Matlab atau Python / Numpy benar-benar tidak sama.
EDIT: Ada juga trik untuk mengisi input dengan nol dan mengambil FFT yang lebih besar. Ini tidak akan meningkatkan kemampuan diferensiasi Anda tetapi dapat membuat spektrum lebih mudah dibaca. Ini pada dasarnya adalah trik yang mirip dengan antialiasing dalam grafik vektor.
sumber
Perlu dicatat bahwa FFT adalah alternatif untuk menghitung sejumlah pasangan jumlah yang terpisah (k = 0..sample_length-1) dari Sampel [k] * SineRefWave [j] [k] dan Sampel [j] * CosRefWave [j ] [k], untuk semua j hingga setengah panjang sampel. Jika seseorang membutuhkan pembacaan amplitudo pada semua frekuensi tersebut, FFT akan menghitung semuanya dalam waktu O (NlgN), sedangkan menghitungnya secara individual akan membutuhkan waktu O (N ^ 2). Di sisi lain, jika seseorang hanya membutuhkan pembacaan amplitudo pada beberapa frekuensi, ia akan sering lebih baik hanya menghitungnya secara individual, terutama jika seseorang menggunakan prosesor atau DSP yang efisien dapat menghitung gaya penjumlahan tersebut.
Perlu juga dicatat bahwa sementara FFT dengan misalnya jendela pengambilan sampel 20ms tidak akan dapat membedakan antara nada 1975Hz tunggal, atau kombinasi frekuensi (1975-N) Hz dan (1975 + N) Hz untuk N <25, itu dapat digunakan untuk mengukur frekuensi terisolasi dengan akurasi lebih baik daripada jendela pengambilan sampel jika tidak ada konten spektral lain di dekatnya. Satu-satunya frekuensi 1975Hz akan meningkat secara merata pada nampan tahun 1950Hz dan 2000Hz, seperti kombinasi nada 1974Hz dan 1976Hz. Namun, nada 1974Hz yang terisolasi akan mengambil lebih kuat di nampan 1950Hz daripada di nampan 2000Hz, dan nada 1976Hz akan mengambil lebih kuat di nampan 2000Hz.
sumber
Resolusi frekuensi tidak tergantung pada panjang FFT, tetapi panjang total waktu pengambilan sampel T, yaitu 1 / T, yang juga merupakan komponen frekuensi terendah yang Anda peroleh.
Catatan, zero padding tidak meningkatkan resolusi frekuensi; DFT dari sinyal padding nol hanyalah perkiraan yang lebih baik dari DTFT dari sinyal asli.
sumber
Jika Anda mengetahui kisaran frekuensi input yang mungkin, dan kisarannya sempit, Anda dapat menerapkan undersampling untuk mengurangi jumlah sampel dan waktu untuk menghitung FFT. Dengan 256 sampel dan frekuensi sampel 256 Hz, Anda mendapatkan resolusi 1-Hz yang diinginkan dan bandwidth bebas alias 128 Hz.
sumber
lihat gambar ini. itu sudah jelas. hubungan antara fs dan resolusi fft
sumber