Saya mencoba memfilter sinyal HP dengan memfilter LP dan mengurangi output dari filter asli. Untuk mendapatkan sinyal yang difilter LP, saya mundur-maju memfilter menggunakan filter Butterworth orde ketiga untuk sinyal sampel 16.000. Frekuensi cutoff adalah 0,5 Hz @ 250 Hz. Tidak ada jendela yang digunakan.
Dalam 85% sampel pertama, output dari metode ini tampaknya tumpang tindih sepenuhnya dengan sinyal yang difilter HP. Namun, di akhir output, ada fenomena seperti sup yang berbahaya.
- Apa yang menyebabkannya?
- Apa yang bisa saya ubah untuk membuat metode ini layak?
Berikut adalah dua sinyal yang di-overlay. Yang biru difilter-HP, dan yang merah diperoleh dengan pengurangan.
Inilah perbedaan absolut per sampel. Mereka tidak pernah sama persis; perbedaan minimum adalah 8e-12. 87% dari nilai di bawah 0,01.
(Jika ada cara yang lebih baik untuk mendapatkan filter HP dari filter LP , saya akan senang mempelajarinya.)
sumber
Jawaban:
Methinks @ hotpaw2 ada di jalur yang benar. Dugaan saya adalah bahwa filtfilt tidak menangani kondisi awal untuk filter balik dengan benar. Kedengarannya seperti masalah yang sangat sulit - saya tidak berpikir saya bisa menyalahkan Mathworks karena salah ...
Perbaikannya tampaknya cukup mudah bagi saya: nol-pad ujung sinyal Anda sampai sinc hilang, dan hapus padding (sekarang bukan nol!) Setelah filter.
sumber
Anda melakukan filter mundur-ke depan untuk satu, dan filter hanya ke depan untuk yang lain. Dengan demikian kedua filter akan berperilaku berbeda pada satu atau kedua sisi.
Jika sinyal Anda sangat diam dan persis periodik dalam panjang jendela data, Anda dapat mencoba membungkus data di sekitar secara melingkar dan memulai filter Anda sejak awal dengan panjang respons impuls mereka.
sumber
filtfilt
danbutter(3,0.5/250,high)
). Sinyal berasal dari EKG yang saya tidak bisa harapkan secara periodik.