Professional Documents
Culture Documents
Pendahuluan
Filter digital memiliki banyak kelebihan dibandingkan dengan pasangannya filter analog, baik dalam performa yang lebih tinggi dengan transition zone yang lebih kecil, ketahanan, serta fleksibilitas dalam menentukan range kerjanya (Smith, 1997: 327).
dimana: - H(z) merupakan fungsi transfer dari filter IIR - a1, a2,..., aN merupakan koefisien feed back dari filter IIR - b0, b1,...bN merupakan koefisien feed forwad dari filter IIR
Diagram blok untuk sebuah filter IIR dalam bentuk direct form II dapat digambarkan seperti berikut:
Proses pemfilteran pada sebuah sinyal akan mengikuti bentuk persamaan beda berikut ini.
Karena adanya proses feedback ini filter IIR juga dikenal sebagai recursive filter
Untuk mendesain filter dengan Matlab bisa dilakukan dengan dua cara yaitu dengan memanfaatkan visual desain FDA Tool ataupun dengan menulis m file. Tujuannya tetap sama yaitu mendapatkan koefisien filter b dan a (koefisien pembilang dan penyebut fungsi alih filter).
1. FDA Tool (Filter design and Analysis Tool) Tool ini adalah bagian dari signal processing toolbox yang memang dikhususkan untuk perancangan dan analisa suatu filter. FDATool berupa GUI yang memungkinkan kita untuk mendesain, memanggil dan menganalisis filter IIR maupun filter FIR. Untuk memanggil tool ini sangat mudah sekali yaitu dengan mengetikan pada command window matlab fdatool kemudian dieksekusi. 2. M-File Matlab menyediakan berbagai tool yang lengkap dalam desain filter digital maupun implementasi filter hasil rancangan tersebut untuk simulasi performa dari filter digital tersebut. Berikut beberapa syntax penting dalam mendesain filter IIR diantaranya besself, butter, cheby1, cheby2, ellip, maxflat dan yulewalk.
Terdapat dua buah metoda untuk mendesain filter digital IIR, yaitu
Medota desain secara langsung (direct design) Medota design secara tidak langsung (indirect design). Proses direct design memerlukan perhitungan aproksimasi matematis dan akan membutuhkan pemakaian perhitungan differensial yang rumit untuk setiap nilai parameter dari tranfer function filter yang dikehendaki. Hal ini membuat persamaan matematis filter tersebut menjadi non-linier dan sukar di pecahkan. Untuk mendapatkan hasil perhitungan biasanya diperlukan bantuan algoritma metode numerik dengan komputer.
Metoda desain secara tak langsung relatif lebih sederhana dan lebih mudah dilakukan. Metoda ini terbagi dalam dua langkah utama, yaitu:
Mendisain secara matematis sebuah filter prototype berupa sebuah filter analog dengan spesifikasi yang diinginkan. Dari filter analog ini kemudian dicari persamaan transfer function analognya H(s). Tiga jenis filter analog yang bisa digunakan adalah butterworth, chebyshev dan elliptic Transfer function dari filter prototype kemudian ditranformasikan kedalam bentuk diskritnya. Proses transformasi ini dapat menggunakan beberapa macam metoda, seperti impulse-invariant dan bilinear transformation.
1. Menggunakan filter analog untuk mendesain filter IIR menggunakan filter analaog digunakan fungsi-fungsi MATLAB sebagai berikut: Butterworth, Chebyshev tipe 1, chebyshev tipe 2, dan Elliptic. [b,a] = butter (N,Wn) [b,a] = cheby1 (N,Rp,Wn) [b,a] = cheby2 (N,Rs,Wn) [b,a] = ellip (N,Rp,Rs,Wn) Dengan nilai Wn : 0.0 < Wn <1.0, dimana 1.0 mennunjukkan setengah dari frekuensi sampling. Parameter Rp dan Rs menunjukkan ripple passband dan atenuasi stopband dalam dB berturut-turut. Fungsi-fungsi tersebut adalah filter lowpass.
Sedangkan untuk filter high pass, band pass, dan stop pass adalah sebagai berikut : [b,a] = BUTTER (N, Wn, high); digunakan untuk mendisain filter high-pass [b,a] = BUTTER (N, Wn) ; dengan Wn=[W1 W2] digunakan untuk mendesain filter band-pass [b,a] = BUTTER (N,Wn,stop); dengan Wn=[W1 W2] digunakan untuk mensiain filter band-stop
Langkah kedua mentranformasikan kedalam bentuk diskritnya. Proses transformasi ini dapat menggunakan beberapa macam metoda, seperti penempatan pole-zero, impulse invariant MZT (matchedz z-transform) dan bilinear z-transformation (BZT). 1. Menggunakan metode penempatan pole zero untuk mendesain filter IIR dengan menggunakan fungsi Zplane(pembilang,penyebut) Zplane(zero,pole) 2. Menggunakan metode penempatan pole zero untuk mendesain filter IIR dengan menggunakan fungsi : [b,a]=impinvar (pembilang,penyebut,FT) [b,a]=impinvar (pembilang,penyebut,FT,s) [b,a]=impinvar (pembilang,penyebut) [b,a]=impinvar (pembilang,penyebut,s)
3. Menggunakan metode BZT. Perlu diperhatikan bahwa ketika kita menggunakan metode BZT, kita harus mencari orde filter yang digunakan. Fungsi matlab untuk mencari orde filter : [N,Wn]= buttord(Wp,Ws,Rp,Rs) [N,Wn]= cheb1ord(Wp,Ws,Rp,Rs) [N,Wn]= cheb2ord(Wp,Ws,Rp,Rs) [N,Wn]= ellipord(Wp,Ws,Rp,Rs) [N,Wn]= buttord(Wp,Ws,Rp,Rs,s) [N,Wn]= cheb1ord(Wp,Ws,Rp,Rs,s) [N,Wn]= cheb2ord(Wp,Ws,Rp,Rs,s) [N,Wn]= ellipord(Wp,Ws,Rp,Rs,s)
Contoh Desain filter lowpass dengan frekuensi cut off 5 kHz pada fekuensi sampling sebesar 16 kHz. Tentukan nilai koefisiennya Jawab: Diketahui frekuensi sampling filter = 16 kHz Setengah dari frekuensi sampling filter = 8 kHz Frekuensi cut off filter = 5 kHz Nilai wn sebagai frekuensi cut off bernilai = (5 kHz / 8 kHz) = 0,625 Dirancang filter low pass IIR orde 2, orde 10, dan orde 15 sebagai perbandingan [a,b]=butter(orde,frekuensi_cut_off);
Dari Gambar di atas, semakin besar ordenya, maka filter lowpass IIR semakin curam/mendekati ideal.
penyebut =
1.0000 -0.6014 0.1381
Contoh program menentukan respon frekuensi dengan metode impulse invariant N=input('Masukan orde filter= '); fc=input('Masukan frekuensi cut-off = '); Wn=2*pi*fc; [a,b]=butter(N,Wn,'s'); FT=input('Masukan frekuensi sampling= '); [B,A]=impinvar(a,b,FT); [H,omega]=freqz(A,B,512); mag=20*log10(abs(H)); disp('Pembilang= ');disp(B) disp('Penyebut= ');disp(A) plot(omega/pi,mag) xlabel('frekuensi normalisasi') ylabel('gain,dB') Dengan memasukan nilai nilai N =2 Fc = 150 FT = 1280 Diperoleh :
Program untuk menentukan orde filter dan koefisien, serta plot respons frekuensi dengan metode BZT FT = input('Masukan frekuensi sampling = '); Fp = input('Masukan frekuensi batas passband (Hz) = '); Fs = input ('Masukan frekuensi batas stopband (Hz) = '); Rp = input ('Massukan ripple passband (dB) = '); Rs = input ('Masukan atenuasi stopband (dB) = '); Wp = Fp/(0.5*FT); Ws = Fs/(0.5*FT); [N,Wn]= buttord(Wp,Ws,Rp,Rs); [b,a]= butter(N,Wp); [B,A]= freqz(b,a,512); mag = 20*log10(abs(B)); disp ('orde filter = '); disp(N) disp ('koefisien pembilang = '); disp (b) disp ('koefisien penyebut = '); disp(a) plot (A/pi,mag) xlabel ('frekuensi normalisasi') ylabel ('gain, dB')
Semisal dengan memasukan nilai nilai berikut, FT = 8000 Fp = 500 Fs = 2000 Rp = 3 Rs = 30 Maka diperoleh : orde filter = 3 koefisien pembilang = 0.0053 0.0159 0.0159 0.0053 koefisien penyebut = 1.0000 -2.2192 1.7151 -0.4535
TERIMA KASIH