"Aturan praktis" favorit saya untuk urutan filter FIR low-pass adalah "fred harris rule of thumb":
N= [fs/ de l t a ( f) ] ∗ [ a t t e n ( dB ) / 22 ]
di mana delta (f) adalah pita transisi, dalam satuan yang sama dari fs
fs adalah laju sampel dari atten filter (dB) adalah penolakan target dalam dB
Misalnya jika Anda memiliki pita transisi 100 Hz dalam suatu sistem sampel pada 1KHz, dan persyaratan penolakan Anda adalah 50 dB di pita berhenti maka pesanan dapat diperkirakan oleh:
N = 1KHz / 100Hz * 50/22 = 23 PDAM (pembulatan ke atas)
Terima kasih, fred harris!
Perhatikan formula lain yang lebih terperinci yang memperhitungkan riak passband akun adalah rumus Kaiser berkat James Kaiser dari Bell Labs, yang saya sertakan dalam grafik saya di bawah ini.
Untuk sebagian besar aplikasi yang telah saya lakukan, pendekatan fred harris baik-baik saja, karena diberi penolakan tertentu, filter yang dihasilkan menggunakan algoritma desain filter tradisional seperti Parks-McClellan dan Remez telah melampaui persyaratan riak passband saya setelah memenuhi persyaratan penolakan. (Apa yang biasanya saya lakukan adalah memperkirakan pesanan, mendesain filter dengan pesanan itu, memeriksa hasilnya dan menambah atau mengurangi pesanan dari sana untuk menyempurnakan). Hasil dari estimasi hanya: perkiraan, dan dapat sangat bervariasi tergantung pada parameter desain keseluruhan dan tidak dapat dianggap sebagai solusi yang tepat.
Bagi mereka yang akrab dengan desain filter menggunakan pendekatan jendela, tinjauan boxcar atau jendela persegi panjang (yang merupakan pemotongan sederhana) mengungkapkan mengapa diperlukan fs/ Δf PDAM (yang sama dengan 2 π/ Δωjika satuan untuk frekuensi yang dinormalisasi adalah radian / sampel seperti yang sering dilakukan) untuk melengkapi pita transisi. Lihat gambar di bawah yang membantu menjelaskan hal ini.
Gambar pertama di bawah ini menunjukkan frekuensi frekuensi yang diharapkan untuk jendela persegi panjang dalam waktu, dan kemudian dalam bentuk diskrit, di mana itu adalah fungsi nada yang disebut, dengan titik kunci bahwa untuk sampel N pada saat fungsi persegi panjang, respons frekuensi akan memiliki nol pertama pada f = 1 / N (Di mana f adalah frekuensi yang dinormalisasi dengan 1 sebagai laju sampling).
Gambar berikut ini menunjukkan pendekatan jendela persegi panjang untuk menyaring desain (yang saya tidak akan merekomendasikan tetapi informatif). Plot pertama di sudut kiri atas menunjukkan respons frekuensi target untuk filter kami sebagai respons "dinding bata" yang ideal. Tolong jangan bingung dengan "boxcar window" (atau "rectangular window") yang juga berbentuk persegi panjang - jendelanya ada dalam domain waktu!
Untuk mewujudkan filter semacam itu, kami akan menggunakan respons impuls dari respons frekuensi yang diinginkan sebagai koefisien dalam filter FIR kami (koefisien filter adalah respons impuls --- masukkan impuls ke dalam dan ke luar, datanglah semua koefisien! ). Respons impuls untuk respons frekuensi persegi panjang (brickwall) adalah invers FT yang merupakan fungsi Sinc, dalam domain waktu, ditampilkan di sudut kiri bawah sebagai "Respon Impuls yang Diperlukan". Fungsi Sinc meluas ke plus dan minus tanpa batas, jadi untuk benar-benar mewujudkan filter seperti itu kita akan membutuhkan filter yang sangat panjang dan itu akan memiliki penundaan yang sangat lama. Jelas kami tidak bisa melakukan itu, jadi kami memotong koefisien untuk sesuatu yang dapat direalisasikan. Semakin lama filter, semakin dekat kami memperkirakan respons brickwall yang ideal,
Memotong respon impuls dalam domain waktu secara matematis identik dengan mengalikan dengan jendela persegi panjang dalam domain waktu. (Perhatikan bahwa respons impuls juga tertunda setengah durasi jendela agar sistem menjadi sebab-akibat). Mengalikan dalam domain waktu sama dengan konvolusi dalam domain frekuensi. Domain frekuensi (FT) dari respons impuls sebelum pemotongan adalah respons frekuensi brickwall yang diinginkan. Respons frekuensi untuk jendela persegi panjang adalah fungsi Sinc di domain frekuensi.
Jadi ketika kita memotong respons impuls yang diinginkan (dikalikan waktu dengan jendela persegi panjang), kita menggabungkan respons frekuensi yang diinginkan dengan fungsi Sinc, yang menghasilkan perkiraan respons frekuensi target kami seperti yang ditunjukkan di sudut kanan atas gambar. di bawah.
Kunci take-away untuk fungsi Sinc secara umum adalah null pertama adalah 1 / T di mana T adalah durasi dari fungsi persegi panjang. Untuk sistem sampel, nol pertama adalah pada2 π/ Ndi mana N mewakili jumlah sampel selama durasi fungsi persegi panjang. Dalam gambar frekuensi radian dinormalisasi digunakan untuk sumbu frekuensi- (jika itu membingungkan Anda hanya tahu2 πadalah frekuensi radian untuk laju sampling). Jadi dalam proses konvolusi, transisi brickwall yang tajam menyebar dan dalam hal ini pergi ke 0 (kitaΔ ω) lebih dari frekuensi 2 π/ N! Jadi disiniN= 2 π/ Δω
dan tentu saja filternya buruk dengan sidelobes dll. Catatan ini: Transisi dari fungsi Sinc ini adalah yang paling tajam yang tersedia untuk sejumlah ketukan; ia memiliki resolusi terbaik dalam frekuensi tetapi rentang dinamis yang paling buruk (penolakan). Tipologi jendela lainnya (Blackman, Blackman-harris, Kaiser (favorit saya), dll) akan secara signifikan meningkatkan jangkauan dinamis tetapi selalu dengan mengorbankan transisi.
Jadi dari atas, kita melihat asal usulnya 2 π/ Δωyang digunakan dalam rumus perkiraan, dan kami juga melihat mengapa ada faktor multiplikasi tambahan yang meningkatkan jumlah keran di atas ini untuk desain filter yang khas; jendela persegi panjang akan memberi kita transisi terbaik dengan N tap di manaN= 2 π/ Δωtetapi memiliki penolakan yang sangat buruk. Keran lebih banyak digunakan untuk memperlancar transisi waktu lebih jauh di luar transisi tajam dari jendela persegi panjang, memberikan penolakan yang lebih besar dengan mengorbankan bandwidth transisi.