Saya melihat di thread SO saran untuk menggunakan filtfilt
yang melakukan penyaringan mundur / maju bukan lfilter
.
Apa motivasi untuk menggunakan satu terhadap teknik lainnya?
Saya melihat di thread SO saran untuk menggunakan filtfilt
yang melakukan penyaringan mundur / maju bukan lfilter
.
Apa motivasi untuk menggunakan satu terhadap teknik lainnya?
filtfilt
melakukan filter yang sama dua kali, dalam arah yang berlawanan, jadi itu tidak lebih lambat daripada melakukanlfilter
dua kali dalam satu arah, yang adalah bagaimana Anda akan mendapatkan respons frekuensi yang sama.Jawaban:
filtfilt
adalah penyaringan fase nol, yang tidak menggeser sinyal saat disaring. Karena fase adalah nol pada semua frekuensi, itu juga fase linier. Penyaringan mundur dalam waktu mengharuskan Anda untuk memprediksi masa depan, sehingga tidak dapat digunakan dalam aplikasi kehidupan nyata "online", hanya untuk pemrosesan rekaman sinyal secara offline.lfilter
adalah penyaringan forward-in-time kausal saja, mirip dengan filter elektronik kehidupan nyata. Tidak mungkin fase-nol. Itu bisa fase linear (FIR simetris), tetapi biasanya tidak. Biasanya itu menambah jumlah penundaan yang berbeda pada frekuensi yang berbeda.Contoh dan gambar harus membuatnya jelas. Meskipun besarnya respon frekuensi dari filter adalah identik (kiri atas dan kanan atas), lowpass fase-nol sejajar dengan sinyal asli, hanya tanpa frekuensi tinggi, sedangkan penyaringan fase minimum menunda sinyal dengan cara yang disebabkan oleh sebab-akibat. :
sumber
lfilter
belum tentu fase minimum, bisa berupa apa saja tergantung pada koefisien filter, tetapi dalam kasus apa pun itu adalah kausal , yangfiltfilt
bukan. Jadi hasil perbandingan yangfiltfilt
memiliki zero delay, danlfilter
selalu menambahkan beberapa delay adalah tidak sepenuhnya benar, karenafiltfilt
non-kausal di tempat pertama. Yang penting adalah hal itufiltfilt
tidak menyebabkan distorsi fase apa pun, sedangkanlfilter
tidak (kecuali jika digunakan sebagai filter FIR fase linier, yaitu dengan penyebut = 1).filtfilt
ke- N sesuai dengan penyaringan dengan urutan ke-2 (-2) denganlfilter
.lfilter
ataufiltfilt
. Mereka berperilaku berbeda, seperti yang ditunjukkanJawaban oleh @endolith sudah lengkap dan benar! Silakan baca postingnya terlebih dahulu, dan kemudian yang ini sebagai tambahan. Karena reputasi saya rendah saya tidak mampu untuk merespon komentar mana @Thomas Arildsen dan @endolith berdebat tentang pesanan yang efektif filter diperoleh dengan
filtfilt
:lfilter
tidak menerapkan filter yang diberikan dan dalam ruang Fourier ini seperti menerapkan fungsi transfer filter SEKALI.filtfilt
terapkan filter yang sama dua kali dan efeknya seperti menerapkan fungsi transfer filter SQUARED. Dalam hal filter Butterworth (scipy.signal.butter
) dengan fungsi transferkeuntungan yang efektif adalah
sumber