Mengapa saya harus menggunakan filter digital untuk melewati band daripada hanya memanipulasi sinyal dalam domain frekuensi dan kemudian memulihkannya ke dalam domain waktu?

15

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 filtfiltfungsi (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/ifftmetode sederhana untuk penyaringan bandpass? Mengapa orang lebih suka menggunakan filter digital FIR atau IIR?

Misalnya, apakah fft/ifftmetode 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?

Kouichi C. Nakamura
sumber
Pertanyaan terkait (tetapi tidak harus duplikat): electronics.stackexchange.com/questions/100348/why-use-a-filter/…
helloworld922
Menggunakan FFT untuk memfilter sinyal benar-benar valid, tetapi ada beberapa hal yang harus diperhatikan. Lihat pertanyaan / jawaban serupa ini untuk info lebih lanjut: stackoverflow.com/a/2949227/565542
sbell
5
Pertanyaan seperti ini mungkin lebih cocok untuk situs Pemrosesan Sinyal .
Jason R
2
Saya pikir bahwa Panduan Ilmuwan dan Insinyur untuk Pemrosesan Sinyal Digital Oleh Steven W. Smith punya jawaban. Saya pikir dia mengatakan bahwa sampel dalam - sampel jauh lebih efisien dengan filter digital. Tapi, ada lebar minimal jendela (64 sampel atau lebih, saya tidak ingat persis) ketika lebih tepat untuk melibatkan konversi FFT di mana Anda dapat memiliki filter bata di domain freq. Efisiensi bukan satu-satunya masalah. Filter bata menyiratkan bahwa Anda perlu menggunakan sampel dari masa depan, yang tidak mungkin secara real time.
Val
Terima kasih, saya mencari sesuatu seperti situs Pemrosesan Sinyal, tetapi tidak dapat menemukannya.
Kouichi C. Nakamura

Jawaban:

9

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 .)

Dave Tweed
sumber
1
Terima kasih banyak atas jawaban terperinci dalam kata-kata sederhana. Sekarang saya dapat melihat bahwa dalam pertanyaan saya, saya seharusnya menyebutkan bahwa pekerjaan saya terutama untuk analisis offline daripada pemrosesan online atau real-time. Saya akan mengedit pertanyaan. Poin Anda cukup jelas: Karena FFT membutuhkan seluruh durasi data, Anda harus menunggu hingga perekaman selesai.
Kouichi C. Nakamura
1
OK cukup adil. Izinkan saya menunjukkan satu hal lagi tentang pemfilteran domain frekuensi yang mungkin atau mungkin tidak menjadi masalah bagi Anda: Filter tidak akan kausal dalam domain waktu. Dengan kata lain, respons impuls mereka meluas ke waktu positif dan negatif. Ini dapat memiliki beberapa efek mengejutkan jika Anda tidak menyadarinya.
Dave Tweed
Terima kasih. Saya mencari "Filter kausal" di Wikipedia. Menurut definisi, gerbong FFT tidak peduli tentang waktu, jadi saya bisa melihatnya tidak menyebabkan masalah. Sifat itu menjelaskan mengapa Anda tidak dapat menggunakannya untuk pemfilteran waktu nyata.
Kouichi C. Nakamura
3
@DaveTweed: Pernyataan Anda tentang membutuhkan 8 juta poin FFT untuk memfilter lagu 3 menit yang disampel pada 44,1 kHz salah. Algoritma konvolusi berbasis FFT sebenarnya banyak digunakan dalam praktik. Metode seperti overlap-save dan overlap-add digunakan sehingga ukuran FFT yang lebih sederhana (dan karenanya memproses latensi) diperlukan. Teknik-teknik ini melakukan persis seperti yang disarankan oleh paragraf kedua Anda: gunakan balok yang lebih kecil sambil menangani "efek tepi" yang terjadi di antaranya.
Jason R
2
@ DaveTweed: Saya tidak setuju. Metode konvolusi cepat seperti overlap-save dan overlap-add adalah setara (hingga presisi numerik) untuk mengarahkan konvolusi linier (yaitu menerapkan filter dalam domain waktu). Tidak ada kompromi kinerja dalam kondisi batas dalam bentuk apa pun versus pemrosesan domain waktu, dan latensi terikatnya masih membuatnya bermanfaat untuk banyak aplikasi waktu nyata. Saya berpendapat bahwa pernyataan bahwa penyaringan domain frekuensi memerlukan satu FFT besar di seluruh sinyal input tidak benar, dan saya tidak yakin apa yang Anda maksud dengan pemrosesan domain frekuensi "murni" dalam konteks ini.
Jason R
2

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.

Scott Seidman
sumber
1
Untuk penjelasan yang sangat jelas tentang windowing dan block filtering, lihat bukunya, Digital Filter oleh RW Hamming. Tersedia dari Dover, harga sangat bagus. (Kebetulan, Scott, saya pikir ini adalah Hamming yang diberi nama jendela dan von Hann adalah orang yang mendapatkan namanya dibantai dalam menamai jendelanya)
The Photon
Juga, saya cukup yakin gerbong yang diimplementasikan dengan FFT, menurut definisi, sangat datar di band pass. Ketika kita mengatakan filter Butterworth "maksimal datar" saya percaya kita membicarakannya dalam konteks hanya filter sebab-akibat (dan Wiki mengatakan bahwa meskipun demikian dimungkinkan untuk membuat filter Chebychev terbalik yang lebih datar daripada Butterworth).
The Photon
1
Setuju untuk panjang tak terbatas yang ideal, tetapi tidak begitu yakin setelah pemotongan dan pembuatan jendela
Scott Seidman
@ThePhoton Terima kasih atas koreksi Hamming / von Hann. Tidak dapat memvisualisasikan rak buku saya dengan benar dari rumah.
Scott Seidman
@ Foton; Terima kasih untuk buku Filter Digital Hamming . Saya melihatnya dan sepertinya ditulis khusus untuk pelajar sekolah dasar. Saya membelinya dengan harapan. :)
Kouichi C. Nakamura
0

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

Kouichi C. Nakamura
sumber