Bagaimana saya bisa mendesain filter yang sangat sempit?

15

Misalkan saya mendapat sampel sinyal audio pada Hz, dan saya ingin merancang filter low-pass yang mengisolasi semua yang ada di bawah ~ 60 Hz. Di dunia digital, ini adalah filter low-pass dengan passband di [ - π4800060. Juga, pita transisi juga harus masuk akal. Membangun filter FIR untuk ini dapat memiliki banyak ketukan yang dalam jangka panjang mempengaruhi presisi. Filter IIR terlalu tidak ideal karena audio menderita untuk respons fase-non-linier dalam filter, jadi kecuali sinyal disaring, kemudian dibalik dan disaring lagi, itu sebenarnya bukan pilihan.[-π400,π400]

Mungkinkah transformasi wavelet lebih baik dalam hal ini daripada pemfilteran reguler sekali jalan?

Phonon
sumber
Apakah ada alasan Anda tidak ingin memusnahkan?
Lorem Ipsum
Tidak, menebangi tidak masalah selama saya mendapatkan yang saya inginkan.
Telepon
1
Apa itu pita transisi "masuk akal"? Itu akan menentukan urutan filter Anda. Jika stopband Anda mulai 300 Hz, misalnya, Anda mungkin dalam kondisi yang cukup baik. Jika Anda ingin pelemahan tinggi pada sesuatu seperti 60,1 Hz, maka itu akan lama. Filter Long FIR belum tentu buruk,
Jason R
5
Anda memerlukan spesifikasi filter yang sebenarnya jika tidak, pertanyaannya tidak ada artinya. Sebutkan riak passband yang dapat diterima, penolakan stopband, lebar pita transisi, dll.
Paul R
Masuk akal. Akan melakukan.
Telepon

Jawaban:

20

Jika Anda mengoptimalkan waktu rekayasa dan berada pada platform yang mendukung FFT besar dengan baik (saya..bukan titik tetap), maka ikuti saran hotpaw2 dan gunakan konvolusi cepat . Ini akan melakukan jauh lebih baik daripada implementasi FIR yang naif dan harus relatif mudah diimplementasikan.

Di sisi lain, jika Anda memiliki waktu untuk ini untuk mendapatkan implementasi terbaik atau berada pada platform titik tetap, Anda harus menggunakan multirate down-filter-up-subtract. Tapi agak sulit untuk melakukan semuanya dengan benar.

Saya memiliki akses ke implementasi tepercaya dan yang dioptimalkan untuk konvolusi cepat dan alat penyaringan multirate. Konvolusi cepat memakan waktu sekitar 3x lebih lama untuk mendapatkan kinerja sinyal yang setara dibandingkan dengan struktur multirate. Selanjutnya, itu bahkan pada platform floating point. Kesenjangan akan melebar jauh pada titik tetap dsp.

Secara umum:

Konversi ke bawah:

Gunakan 8 tahap setengah-band, filter decimate-by-2 untuk mengubah sinyal 48kHz Anda menjadi sinyal 187,5 Hz. Tahap pertama downsampling ini dapat memiliki pita transisi yang sangat luas, memungkinkan energi untuk alias selama itu tidak alias kembali ke kisaran sub 60 Hz. Seiring dengan kemajuan tahapan, jumlah keran perlu ditingkatkan, tetapi mereka akan diterapkan pada tingkat pengambilan sampel yang semakin rendah, sehingga biaya keseluruhan setiap tahap tetap kecil.

Penyaringan:

Lakukan penyaringan ketat Anda di sekitar 60 Hz bw untuk menjaga energi yang pada akhirnya ingin Anda kurangi. Ada keuntungan ganda untuk melakukan penyaringan ketat Anda pada tingkat rendah:

  1. 1Hz bandwidth transisi adalah 256 kali lebih besar dalam hal frekuensi digital pada tingkat rendah vs tingkat asli. Jadi setiap ketukan filter Anda 256 kali lebih kuat.
  2. Sinyal itu sendiri berada pada tingkat yang lebih rendah, sehingga filter hanya perlu memproses 1/256 data.

Konversi ke atas:

Pada dasarnya, ini adalah kebalikan dari tahap penipisan. Masing-masing dari 8 tahap interpolator menggandakan laju dengan memperkirakan sampel yang masuk di antara sampel input berurutan. Pita transisi semakin lebar karena laju sampel semakin tinggi.

Mengurangi:

Kurangi sinyal low-pass low-pass filter Anda dari sinyal asli. Jika Anda telah menyesuaikan untuk semua keterlambatan grup dengan benar, struktur keseluruhan akan menjadi filter highpass dengan bandwidth transisi yang sempit.

Mark Borgerding
sumber
Ini jawaban yang fantastis. Bisakah saya mendapatkan komentar Anda di posting ini? dsp.stackexchange.com/questions/29655/…
richieqianle
6

Coba filter konvolusi tambah / tumpang tindih dengan FFT / IFFT terpanjang yang sesuai dengan latensi Anda dan kendala kinerja komputasi. Anda dapat mendesain filter FIR yang sangat panjang saat menggunakan metode ini dengan FFT yang lebih lama.

Jika Anda dapat FFT seluruh lagu, atau seluruh file sinyal audio Anda, dalam satu FFT + IFFT yang sangat panjang (ada algoritma FFT khusus untuk vektor panjang yang tidak cocok dengan dcache atau RAM), Anda tidak perlu melakukan apa pun tumpang tindih menambahkan / menyimpan pemrosesan, dan Anda bisa mendapatkan pita transisi yang sangat sempit.

hotpaw2
sumber
4

Jelas ada dua pilihan: FIR & IIR. Seperti yang sudah disebutkan, FIR membutuhkan respons impuls yang SANGAT panjang (1000 detik) dan mahal dalam hal memori, MIPS & latensi dengan tumpang tindih add / save menjadi pilihan paling efisien. Namun, latensi bisa menjadi masalah nyata. Jika Anda ingin menggunakannya sebagai lulus tinggi untuk subwoofer home theater, latensi akan sangat tinggi sehingga Anda akan kehilangan lip sync dengan video.

IIR adalah beberapa urutan besarnya lebih murah dan karenanya sering digunakan. Memang memang memiliki respons fase tidak datar tetapi dalam banyak kasus ini bukan masalah atau dapat diatasi. Misalnya jika Anda memerlukan filter lulus tinggi untuk melindungi driver dalam kotak bass, respons fase tidak terlalu penting karena respons fase sistem keseluruhan didominasi oleh driver, penutup dan akustik di ruangan. Filter hanya memainkan peran kecil di sini. Dalam banyak kasus Anda juga perlu mempertahankan fase "relatif" bukan fase absolut. Katakanlah Anda ingin menerapkan jalan pintas pada sinyal A tetapi tidak pada sinyal B, Anda dapat dengan mudah memasang jalur pintas yang sesuai pada sinyal B sehingga fase relatif A dan B tetap sama. Keterlambatan latensi & grup keseluruhan dari pendekatan ini masih jauh lebih sedikit daripada metode FIR.

Hilmar
sumber