Saya seorang pemula untuk pemrosesan sinyal dan saya tahu pertanyaan ini mungkin terlalu luas. Tapi saya masih ingin mendengar petunjuk dari para ahli.
Saya diajarkan untuk menggunakan butter
(untuk mendesain filter Butterworth alias filter magnitudo maksimum datar) dan filtfilt
fungsi (Zero-phase digital filtering) untuk penyaringan bandpass sinyal EEG (electroencephalogram) di MATLAB offline (yaitu setelah penyelesaian rekaman). Dengan cara ini Anda dapat menghindari "keterlambatan" yang tak terhindarkan yang disebabkan oleh filter digital (yaitu penyaringan fase nol).
Kemudian, seseorang bertanya kepada saya mengapa kita tidak dapat menggunakan fft
(Fast Fourier transform) untuk mendapatkan representasi domain frekuensi dari sinyal, dan kemudian mengatur daya frekuensi yang tidak diinginkan ke nol, diikuti oleh ifft
(Inverse fast Fourier transform) untuk memulihkan data yang difilter dalam waktu domain untuk tujuan yang sama. Manipulasi dalam domain frekuensi ini terdengar lebih sederhana dan masuk akal bagi saya, dan saya tidak bisa menjawab mengapa.
Apa kelebihan dan kekurangan menggunakan fft/ifft
metode sederhana untuk penyaringan bandpass? Mengapa orang lebih suka menggunakan filter digital FIR atau IIR?
Misalnya, apakah fft/ifft
metode ini lebih rentan terhadap kebocoran spektral atau riak dibandingkan dengan filter digital yang ada? Apakah metode ini juga mengalami penundaan fase? Apakah ada cara untuk memvisualisasikan respons impuls untuk metode penyaringan ini untuk perbandingan?
sumber
Jawaban:
Alasan utama bahwa pemrosesan domain frekuensi tidak dilakukan secara langsung adalah latensi yang terlibat. Untuk melakukan, katakanlah, FFT pada sinyal, Anda harus terlebih dahulu merekam seluruh sinyal domain waktu, mulai dari awal, sebelum Anda dapat mengubahnya menjadi domain frekuensi. Kemudian Anda dapat melakukan pemrosesan, mengonversikannya kembali ke domain waktu dan memainkan hasilnya. Bahkan jika dua konversi dan pemrosesan sinyal di tengah efektif secara instan, Anda tidak mendapatkan sampel hasil pertama sampai sampel input terakhir telah direkam. Tetapi Anda bisa mendapatkan hasil domain frekuensi "ideal" jika Anda bersedia menerima ini. Sebagai contoh, lagu 3 menit yang direkam pada 44100 sampel / detik akan mengharuskan Anda untuk melakukan 8 juta titik transformasi, tetapi itu bukan masalah besar pada CPU modern.
Anda mungkin tergoda untuk memecah sinyal domain waktu menjadi blok data yang lebih kecil dan berukuran tetap dan memprosesnya secara terpisah, mengurangi latensi menjadi panjang blok. Namun, ini tidak berhasil karena "efek tepi" - sampel di kedua ujung blok yang diberikan tidak akan sejajar dengan sampel yang sesuai dari blok yang berdekatan, menciptakan artefak yang tidak menyenangkan dalam hasil.
Ini terjadi karena asumsi yang tersirat dalam proses yang mengkonversi antara domain waktu dan domain frekuensi (dan sebaliknya). Sebagai contoh, FFT dan IFFT "menganggap" bahwa data tersebut bersifat siklik; dengan kata lain, blok-blok dari data domain-waktu identik datang sebelum dan sesudah blok diproses. Karena ini secara umum tidak benar, Anda mendapatkan artefak.
Pemrosesan domain waktu mungkin memiliki masalah, tetapi fakta bahwa Anda dapat mengontrol latensi dan tidak menghasilkan artefak periodik menjadikannya pemenang yang jelas dalam sebagian besar aplikasi pemrosesan sinyal waktu-nyata.
(Ini adalah versi yang diperluas dari jawaban saya sebelumnya .)
sumber
Anda tentu dapat menggunakan filter ideal "boxcar" di domain frekuensi. Dualitas mengatakan ini setara dengan berbelit-belit dengan fungsi tulus yang panjangnya tak terbatas. Untuk mengurangi artefak yang terkait dengan membuat panjang menjadi terbatas, fungsi sinc sering dikalikan dengan jendela. Anda mungkin pernah mendengar tentang Hamming, Hanning (sebenarnya von Hann), peningkatan cosinus, dan teknik windowing lainnya. Konvolusi mungkin lebih sederhana secara komputasi daripada pendekatan fft / ifft, tetapi jawabannya sama.
Setiap metode akan memiliki kelebihan dan kekurangan. Butterworth adalah IIR, dan gerbong boksnya adalah FIR. The Butterworths mungkin lebih rata di pass band, tetapi mungkin dengan rolloff yang kurang curam, tergantung pada urutan IIR dan lebar FIR. filtfilt akan lebih sulit untuk diimplementasikan secara real time.
sumber
Pertanyaan-pertanyaan Terkait
Mengapa itu adalah ide yang buruk untuk memfilter dengan mem-nolkan tempat sampah FFT? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins
Menghapus nilai dari hasil FFT sama dengan pemfilteran? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1
Mengapa kita menggunakan jendela dalam domain waktu alih-alih FFT memodifikasi spektrum dan daripada FFT terbalik /signals/8911/why-do-we-use-window-in-time-domain-rather -dapat-lakukan-fft-ubah-spektrum-dan-t? noredirect = 1 & lq = 1
sumber