Saya punya algoritma yang nol pad urutan ke 4N, melakukan FFT, dan hanya menggunakan frekuensi terendah N poin dari 4N yang dihasilkan.
Ini sepertinya banyak pekerjaan yang sia-sia, ada ide bagaimana ini bisa dilakukan lebih cepat?
Saya punya algoritma yang nol pad urutan ke 4N, melakukan FFT, dan hanya menggunakan frekuensi terendah N poin dari 4N yang dihasilkan.
Ini sepertinya banyak pekerjaan yang sia-sia, ada ide bagaimana ini bisa dilakukan lebih cepat?
Jawaban:
Jika Anda hanya beberapa nampan maka yang berikut ini mungkin sangat efisien untuk Anda:
1. Cukup lakukan DFT pada setiap frekuensi yang Anda butuhkan.
2. Gunakan algoritma Goertzel untuk setiap frekuensi yang dipermasalahkan.
Padding nol hingga panjang 4X, menghitung FFT yang lebih panjang, dan kemudian hanya menggunakan nampan 1/4 terbawah menghasilkan hasil yang hampir sama dengan interpolasi Sinc windowed dari FFT panjang asli.
Jadi cukup gunakan panjang FFT asli dan interpolasi menggunakan kernel interpolasi Sinc 3 fase dengan lebar jendela yang sesuai.
Zero padding dalam domain waktu memberi Anda solusi frekuensi yang lebih tinggi tetapi tidak ada informasi baru, sehingga memberikan interpolasi pada domain frekuensi. Bergantung pada sifat sinyal Anda dan ketelitian yang dibutuhkan, Anda mungkin bisa mendapatkan titik frekuensi tambahan dengan FFT reguler dari titik N dan melakukan interpolasi yang sesuai (linier, spline, pchip, sinc, dll).