Mengutip Sinyal Digital pemrosesan Sinyal klasik Bellanger - Teori dan Praktek , intinya bukanlah di mana frekuensi cut-off Anda, tetapi seberapa banyak redaman yang Anda butuhkan, berapa banyak riak pada sinyal yang ingin Anda pertahankan yang dapat Anda toleransi dan, yang paling penting, seberapa persempit transisi Anda dari pass-to stopband (lebar transisi) harus.
Saya berasumsi Anda ingin filter fase linier (meskipun Anda menentukan latensi minimum, saya tidak berpikir filter fase minimum adalah ide yang baik, secara umum, kecuali Anda tahu betul apa yang akan Anda lakukan dengan sinyal Anda setelah itu) . Dalam hal ini, urutan filter (yang merupakan jumlah keran) adalah
N≈ 23log10[ 110 δ1δ2]fsΔ f
dengan
fsΔ fδ1δ2 tingkat sampling lebar transisi, yaitu. perbedaan antara ujung pass band dan start stop band riak di passband, yaitu. "berapa banyak dari amplitudo asli yang Anda mampu untuk bervariasi" penindasan di stop band .
Mari pasang beberapa angka! Anda menentukan frekuensi cut-off dari , jadi saya hanya akan melanjutkan dan mengklaim lebar transisi Anda tidak akan lebih dari setengahnya, jadi .fs100Δ f= fs200
Berasal dari teknologi SDR / RF, penindasan 60 dB biasanya cukup lengkap - perangkat keras, tanpa biaya gila, tidak akan lebih baik dalam menjaga sinyal yang tidak diinginkan dari input Anda, jadi ya, jangan sia-siakan CPU untuk memiliki filter fantastis yang lebih baik dari apa yang dapat dilakukan oleh perangkat keras Anda. Karenanya, .δ2= - 60 dB = 10- 3
Katakanlah Anda dapat hidup dengan variasi amplitudo 0,1% dalam passband (jika Anda dapat hidup dengan lebih banyak, pertimbangkan juga membuat persyaratan penindasan menjadi kurang ketat). Itu .δ1= 10- 4
Jadi, pasang ini di:
NFilter Tommy≈ 23log10[ 110 δ1δ2]fsΔ f= 23log10[ 110 ⋅ 10- 4⋅ 10- 3]fsfs200= 23log10[ 110 ⋅ 10- 7]200= 23log10[ 110- 6]200= 23( log10106)200= 23⋅ 6 ⋅ 200= 800 .
Jadi dengan 200 tap, Anda jauh, jika Anda menggunakan pass band yang sangat sempit di filter Anda seperti yang saya duga.
Perhatikan bahwa ini tidak memiliki menjadi masalah - pertama-tama, 800-keran Filter adalah menakutkan, tapi terus terang, hanya pada pandangan pertama:
- Seperti yang saya uji dalam jawaban ini di StackOverflow : CPU saat ini cepat , jika Anda menggunakan implementasi FIR yang dioptimalkan oleh CPU seseorang. Sebagai contoh, saya menggunakan implementasi FFT-FIR dari GNU Radio dengan persis spesifikasi garis besar filter di atas. Saya mendapat kinerja 141 juta sampel per detik - itu mungkin atau mungkin tidak cukup untuk Anda. Jadi, inilah kasus uji khusus pertanyaan kami (yang membutuhkan waktu beberapa detik untuk saya hasilkan):
- Decimation: Jika Anda hanya akan menyimpan sebagian kecil dari bandwidth input, output dari filter Anda akan secara drastis dilampauikan. Memperkenalkan penipisan berarti bahwa filter Anda tidak memberi Anda setiap sampel keluaran, tetapi setiap hanya satu - yang biasanya akan menyebabkan banyak dan banyak aliasing, tetapi karena Anda menghapus semua sinyal yang bisa alias, Anda dapat hemat melakukannya. Implementasi filter pintar (decimator polifase) dapat mengurangi upaya komputasi oleh M, dengan cara ini. Dalam kasus Anda, Anda dapat dengan mudah memusnahkan dengan , dan kemudian, komputer Anda hanya perlu menghitungM.M.M.= 50120050= 24perkalian / akumulasi per sampel input - jauh lebih mudah. Filter di GNU Radio umumnya memiliki kemampuan itu. Dan dengan cara ini, bahkan dari FFT FIR (yang tidak cocok untuk implementasi decimator polyphasing), saya dapat menekan faktor 2 lainnya dalam kinerja. Tidak bisa berbuat lebih banyak. Itu cukup dekat dengan bandwidth RAM, menurut pengalaman saya, di sistem saya. Untuk
- Latensi: Jangan pedulikan itu. Sungguh, jangan, kecuali Anda perlu. Anda melakukan ini dengan laju sampling audio yang khas? Ingat, disebutkan di atas. Jadi waktu yang dihabiskan menghitung output filter hanya akan relevan untuk streaming sinyal langsung MS / s. Untuk DSP dengan data offline: well, tambahkan penundaan untuk sinyal apa pun yang Anda miliki secara paralel ke filter Anda untuk mengimbanginya. (Jika filter Anda adalah fase linier, penundaannya akan menjadi setengah panjang filter.) Ini mungkin relevan dalam implementasi perangkat keras filter FIR.96kSs≪konyol141NONAs
- Implementasi perangkat keras: Jadi, mungkin CPU dan OS PC atau perangkat tertanam Anda benar-benar tidak memungkinkan Anda untuk memenuhi kendala latensi Anda, dan karenanya Anda mencari FIR yang diimplementasikan oleh FPGA. Hal pertama yang Anda perhatikan adalah bahwa untuk perangkat keras, ada paradigma desain yang berbeda - a "Saya menekan semuanya kecuali1100dari input rate saya "filter membutuhkan lebar bit besar untuk nomor titik tetap yang akan Anda tangani di Hardware (seperti yang ditentang ke angka floating point pada CPU). Jadi itulah alasan pertama mengapa Anda biasanya membagi filter menjadi beberapa , bertingkat, lebih kecil, menipiskan filter FIR Alasan lain adalah bahwa Anda dapat, dengan setiap "langkah" kaskade, membiarkan pengganda Anda (biasanya, "irisan DSP") berjalan pada tingkat yang lebih rendah, dan karenanya, gandakan mereka (jumlah irisan DSP biasanya sangat terbatas), menggunakan satu pengali untuk beberapa ketukan.Namun alasan lain adalah bahwa terutama filter setengah-band, yaitu lowpass yang menekan setengah band input dan memberikan setengah tingkat input, sangat efisien diimplementasikan dalam perangkat keras (karena mereka memiliki setengah keran menjadi nol, sesuatu yang sulit untuk dieksploitasi dalam implementasi CPU / SIMD).
Untuk perkiraan cepat dan sangat praktis, saya suka aturan praktis dari fred harris:
dimana:
Atten adalah redaman yang diinginkan dalam dB,
Ini keluar sangat dekat dengan apa yang akan Anda dapatkan untuk filter fase linier dengan riak passband 0,1 dB. Saya sering menggunakan aturan praktis ini untuk mendapatkan ide potongan pertama dari jumlah keran yang dibutuhkan, dan kemudian memodifikasi melalui iterasi dalam proses desain filter.
Yang juga perlu diperhatikan: aturan praktis ini memberikan wawasan besar tentang apa yang benar-benar mendorong jumlah keran: hentikan redaman band dan kecuraman pita transisi (dan riak passband, tetapi biasanya- setidaknya untuk filter yang harus saya rancang untuk aplikasi comm nirkabel - persyaratan redaman akan mendominasi lebih dari riak). Jadi pertanyaan Anda dalam menyatakan cutoff di Fs / 100 hilang seberapa cepat Anda perlu beralih ke stop band.
Bermain-main dengan angka-angka ini juga dapat menunjukkan pentingnya pemrosesan reduksi dengan menggunakan pendekatan penipisan.
sumber
Menambah jawaban yang diterima, beberapa referensi tambahan. Saya tidak akan menulis rumus yang bisa dilibatkan. Rumus-rumus itu sebagian besar menghasilkan aturan praktis atau perkiraan untuk memulai. Anda dapat mengutak-atik angka-angka ini untuk desain Anda yang sebenarnya.
Salah satu asal dari desain Bellanger adalah: Pada kompleksitas komputasi dalam filter digital, 1981, Proc. Eur. Conf. Desain Teori Sirkuit, M. Bellanger. Sangat sulit diperoleh, tetapi itu bisa dilakukan . Menariknya, itu juga menentukan formula untuk mengevaluasi jumlah bit per koefisien, yang harus dipertimbangkan dalam implementasi hingga-aritmatika. Versi yang lebih mudah diakses dalam bahasa Prancis adalah: Evaluasi de la complexité des filteres numériques , 1982.
Beberapa formula lain dikumpulkan dalam desain filter respon impuls terbatas , Buku Pegangan untuk pemrosesan sinyal digital, 1993, T. Samamaki.
Baru-baru ini, Anda dapat membaca Estimasi akurat panjang filter minimum untuk filter digital FIR optimal , 2000, K. Ichige et al.
Terakhir, desain kertas yang efisien dari filter FIR dengan pesanan filter minimum menggunakan optimasi norma-l0 , 2014 mengklaim desain di mana pesanan secara bertahap berkurang.
sumber
Masalah praktis utama yang dapat saya pikirkan adalah jumlah sampel frekuensi yang digunakan saat melakukan optimasi, karena perilaku sampel antar frekuensi dapat menyebabkan efek yang tidak diinginkan. Seberapa baik kecocokan bisa menjadi, tentu saja tergantung pada jumlah keran. Saya kira Anda bisa mengatakan bahwa jumlah minimum keran adalah ketika masalahnya menjadi tidak mungkin. Jadi salah satu solusinya adalah menyelesaikan masalah kelayakan.
sumber