Prinsip dasar desain filter digital (IIR / FIR)

15

Meskipun saya memiliki pengalaman yang kuat dalam mendesain mesin audio dan semacamnya, saya cukup baru dalam bidang Desain Filter Digital, khususnya filter IIR dan FIR. Dengan kata lain, saya mencoba belajar sebanyak mungkin tentang cara mendesain filter dan mendapatkan persamaan perbedaan mereka. Saya mulai dari dasar, jadi tolong tahan dengan saya, seperti saya katakan, saya mencoba untuk belajar.

Inilah pertanyaan saya:

Katakanlah saya ingin merancang filter low-pass dengan cutoff tertentu - katakan 300 Hz. Apa yang akan menjadi cara terbaik untuk menurunkan fungsi transfer secara matematis dan kemudian menurunkan persamaan perbedaan tertentu untuk mengimplementasikan filter dalam Formulir Langsung I dan Formulir Langsung II (atau hanya DF-1 untuk saat ini ...)?

Saya memiliki beberapa pemahaman tentang fungsi transfer dan bagaimana mereka berhubungan dengan persamaan perbedaan dari beberapa bahan yang sangat baik di web, sayangnya beberapa di antaranya mengasumsikan sedikit pengetahuan sebelumnya, sehingga lebih membingungkan daripada membantu dalam pencarian saya. Jadi saya kira saya perlu contoh langkah-demi-langkah yang akan membantu saya menghubungkan titik-titik.

Jadi saya pada dasarnya mencari bantuan dengan gangguan proses mulai dari memilih frekuensi cutoff hingga menurunkan persamaan perbedaan.

Bantuan apa pun akan sangat dihargai. Saya akrab dengan banyak konsep - respon impuls, DFT, matematika di belakangnya, saya kira apa yang saya butuhkan lebih banyak bantuan adalah konsep z-transform dan kutub / nol digunakan untuk merancang fungsi transfer filter dan kemudian bagaimana cutoff freq. bermain dalam semua ini untuk akhirnya menurunkan persamaan perbedaan.

Karena saya cenderung belajar paling baik dari contoh, saya pikir saya akan bertanya di sini. Terima kasih banyak kepada siapa pun yang menemukan waktu untuk membantu saya.

bitwise
sumber
2
Ada banyak metode desain filter. Berikut adalah beberapa istilah untuk Anda mulai: metode desain jendela, desain filter kuadrat-terkecil, dan desain filter equiripple (biasanya menggunakan algoritma Parks-McClellan). Ini sebagian besar terbatas pada desain filter FIR. Salah satu cara umum merancang filter IIR adalah dengan memetakan prototipe analog (seperti filter Butterworth) ke pendekatan filter digital yang sesuai. Ini dapat dilakukan dengan menggunakan transformasi bilinear atau metode invarian impuls, misalnya.
Jason R

Jawaban:

20

Desain filter digital adalah topik yang sangat besar dan matang dan - seperti yang telah Anda sebutkan dalam pertanyaan Anda - ada banyak materi yang tersedia. Yang ingin saya coba di sini adalah untuk membantu Anda memulai dan membuat materi yang ada lebih mudah diakses. Alih-alih filter digital saya sebenarnya harus berbicara tentang filter waktu diskrit karena saya tidak akan mempertimbangkan koefisien dan kuantisasi sinyal di sini. Anda sudah tahu tentang filter FIR dan IIR, dan Anda juga tahu beberapa struktur filter seperti DF I dan II. Namun demikian, izinkan saya mulai dengan beberapa dasar:

Filter non-rekursif linear time-invariant (LTI) dapat dijelaskan dengan persamaan perbedaan berikut

(1)y(n)=h0x(n)+h1x(n1)++hN1x(nN+1)=k=0N1hkx(nk)

di mana adalah urutan output, adalah urutan input, adalah indeks waktu, adalah koefisien filter, dan adalah panjang filter (jumlah keran). Filter mengetuk juga merupakan respon impuls dari filter karena jika sinyal input adalah impuls, yaitu , makay(n)x(n)nhkNhkx(n)=δ(n)y(n)=hn(jika memori filter telah diinisialisasi dengan nol). Persamaan (1) menjelaskan sistem respon impuls terbatas (FIR) linear time-invariant. Jumlah di sisi kanan (1) adalah jumlah konvolusi, yaitu sinyal output diperoleh dengan mengkonvolusi sinyal input dengan respons impuls. Ini selalu benar, tetapi untuk IIR filter kita tidak dapat secara eksplisit menghitung jumlah lilitan karena respon impuls panjang tak terhingga, yaitu terdapat banyak koefisien hk. Satu keuntungan penting dari filter FIR adalah bahwa mereka selalu stabil, yaitu untuk urutan input yang dibatasi, urutan output selalu dibatasi. Keuntungan lain adalah bahwa filter FIR selalu dapat diwujudkan dengan fase linier persis, yaitu mereka tidak akan menambahkan distorsi fase selain dari penundaan murni. Lebih jauh, masalah desain biasanya lebih mudah, seperti yang akan kita lihat nanti.

Filter LTI rekursif dijelaskan oleh persamaan perbedaan berikut:

(2)y(n)=b0x(n)+b1x(n1)++bMx(nM)a1y(n1)aNy(nN)

bkakak karena filter IIR dapat menjadi tidak stabil, yaitu urutan outputnya dapat tidak terikat, bahkan dengan urutan input yang dibatasi.

Filter dapat dirancang sesuai dengan spesifikasi baik dalam domain waktu (sampel) atau dalam domain frekuensi, atau keduanya. Karena Anda telah menyebutkan frekuensi cut-off dalam pertanyaan Anda, saya menganggap Anda lebih tertarik pada spesifikasi dalam domain frekuensi. Dalam hal ini Anda perlu melihat tanggapan frekuensi sistem FIR dan IIR. Respons frekuensi suatu sistem adalah transformasi Fourier dari respons impulsnya, dengan asumsi bahwa sistem itu ada (yang merupakan kasus untuk sistem yang stabil). Respons frekuensi filter FIR adalah

(3)H(ejθ)=k=0N1hkejkθ

θ

θ=2πffs

ffs

(4)H(ejθ)=k=0Mbkejθ1+k=1Nakejθ

ak=0k=1,,N

Sekarang mari kita lihat metode desain filter. Untuk filter FIR, Anda dapat mengambil transformasi Fourier terbalik dari respons frekuensi yang diinginkan untuk mendapatkan respons impuls filter, yang secara langsung sesuai dengan koefisien filter. Karena Anda memperkirakan respons yang diinginkan dengan respons impuls panjang hingga, Anda harus menerapkan jendela halus ke respons impuls yang diperoleh untuk meminimalkan osilasi dalam respons frekuensi aktual karena fenomena Gibbs. Metode ini disebut metode frekuensi-sampling.

Untuk filter standar sederhana seperti filter lowpass, highpass, bandpass atau bandstop yang ideal (dan beberapa lainnya), Anda bahkan dapat secara analitik menghitung respons impuls yang tepat dengan mengambil transformasi Fourier terbalik dari respons ideal yang diinginkan:

hk=12πππH(ejθ)ejkθdθ

Integral ini mudah untuk dievaluasi untuk respon yang diinginkan secara konstan, seperti halnya filter selektif frekuensi yang ideal. Ini akan memberi Anda respons impuls non-kausal yang sangat panjang, yang perlu di-windowed dan digeser untuk menjadikannya terbatas dan kausal. Metode ini dikenal sebagai desain jendela.

Tentu saja ada banyak metode desain filter FIR lainnya. Salah satu metode numerik yang penting adalah algoritma pertukaran Parks-McClellan yang terkenal yang merancang filter optimal dengan riak passband dan stopband konstan. Ini adalah metode pendekatan numerik dan ada banyak implementasi perangkat lunak yang tersedia, misalnya dalam Matlab dan Oktaf.

ssz

Tentu saja ada banyak metode yang lebih menarik dan berguna, tergantung pada jenis spesifikasi yang Anda miliki, tetapi saya harap ini akan membantu Anda memulai dan akan membuat materi yang Anda temukan lebih mudah dimengerti. Buku yang sangat bagus (dan gratis) yang membahas beberapa metode desain filter dasar (dan banyak lagi) adalah Intoduction to Signal Processing oleh Orfanidis. Anda dapat menemukan beberapa contoh desain di sana. Buku klasik hebat lainnya adalah Desain Filter Digital oleh Parks dan Burrus.

Matt L.
sumber
Wow, Matt, terima kasih banyak atas jawaban yang terperinci dan bijaksana. Saya pasti akan menggali dan benar-benar menghargai waktu Anda. Terima kasih!
bitwise
Apakah ada buku teks yang bagus untuk desain filter wavelet? Saya ingin tahu tentang topik seperti itu: dsp.stackexchange.com/questions/29090/… . Terima kasih!
LCFactorization
Pengantar yang