Fakta bahwa hasilnya rumit harus diharapkan. Saya ingin menunjukkan beberapa hal:
Anda menerapkan filter domain frekuensi brick-wall untuk data, mencoba untuk nol semua output FFT yang sesuai dengan frekuensi lebih besar dari 0,005 Hz, kemudian mengubah terbalik untuk mendapatkan sinyal domain-waktu lagi. Agar hasilnya menjadi nyata, maka input ke FFT terbalik harus simetris konjugat . Ini berarti bahwa untuk panjang- FFT,N
X[k]=X∗[N−k],k=1,2,…,N2−1(Neven)
X[k]=X∗[N−k],k=1,2,…,⌊N2⌋(Nodd)
- Perhatikan bahwa untuk genap, dan secara umum tidak sama, tetapi keduanya nyata. Untuk aneh , harus nyata.NX[0]NX[0]X[N2]NX[0]
Saya melihat bahwa Anda mencoba melakukan sesuatu seperti ini dalam kode Anda di atas, tetapi itu tidak sepenuhnya benar. Jika Anda menerapkan kondisi di atas pada sinyal yang Anda berikan ke FFT terbalik, maka Anda harus mengeluarkan sinyal nyata.
Poin kedua saya lebih bersifat filosofis: apa yang Anda lakukan akan berhasil, karena hal itu akan menekan konten domain frekuensi yang tidak Anda inginkan. Namun, ini biasanya bukan cara filter lowpass akan diterapkan dalam praktiknya. Seperti yang saya sebutkan sebelumnya, apa yang Anda lakukan pada dasarnya adalah menerapkan filter yang memiliki respon magnitudo dinding-bata (yaitu persegi panjang sempurna). Respons impuls filter semacam itu memiliki bentuk . Karena penggandaan dalam domain frekuensi setara dengan (dalam kasus menggunakan konvolusi DFT, bundar) dalam domain waktu, operasi ini sama dengan menggabungkan sinyal domain waktu dengan fungsi .s i n csinc(x)sinc
Mengapa ini menjadi masalah? Ingatlah seperti apa fungsi dalam domain waktu (di bawah gambar dipinjam tanpa malu-malu dari Wikipedia):sinc
Fungsi memiliki dukungan yang sangat luas dalam domain waktu; itu meluruh sangat lambat saat Anda bergerak menjauh dari lobus utamanya. Untuk banyak aplikasi, ini bukan properti yang diinginkan; ketika Anda memadukan sinyal dengan , efek dari sidelobes yang perlahan membusuk akan sering terlihat dalam bentuk domain waktu dari sinyal output yang difilter. Efek semacam ini sering disebut sebagai dering . Jika Anda tahu apa yang Anda lakukan, ada beberapa kasus di mana jenis penyaringan ini mungkin sesuai, tetapi dalam kasus umum, itu bukan yang Anda inginkan.s i n csincsinc
Ada cara yang lebih praktis untuk menerapkan filter lowpass, baik dalam domain waktu dan frekuensi. Respons impuls terbatas dan filter respons impuls tak terbatas dapat diterapkan langsung menggunakan representasi persamaan perbedaannya . Atau, jika filter Anda memiliki respons impuls yang cukup lama, Anda seringkali dapat memperoleh manfaat kinerja menggunakan teknik konvolusi cepat berdasarkan FFT (menerapkan filter dengan mengalikan dalam domain frekuensi alih-alih konvolusi dalam domain waktu), seperti tumpang tindih- simpan dan tumpang tindih-tambahkan metode.