Kategori
Pengolahan Sinyal Informasi

Filter Digital (Matlab)

Filter FIR

Matlab telah menyediakan sebuah fungsi fir1() yang dapat digunakan untuk merancang linear-phase FIR filter konvensional seperti lowpass, highpass, bandpass, dan bandstop didasarkan pada metode windowing. Dengan menggunakan perintah b = fir1(N,Wn) akan menghasilkan sebuah vector b yang merupakan respon impulse response pada suatu lowpass filter dengan order senilai N. Nilai frekuensi cut-off (Wn) harus bernilai atara 0 sampai 1 yang
mana mengacu pada suatu nilai berkaitan berkaitan dengan nilai setengah dari frekuensi sampling (fs) yang dalam beberapa literature juga dinyatakan sebagai sampling rate. Nilai frekuensi cut off ini merupakan bentuk ternormalisasi dari fs/2.

Untuk menghasilkan sebuah bentuk filter yang lain, misalnya high pass filter, kita harus memodifikasi dengan satu perintah tambahan seperti berikut b = fir1(N,Wn,’high’). Perintah ini akan menghasilkan sebuah respon impulse high pass filter dengan order N, dan sebuah frekuensi cut-off ternormalisasi Wn. Dengan cara yang hampir sama, kita bisa
menyusun perintah, b = fir1(N,Wn,’pass’), untuk menghasilkan sebuah band pass filter, yang mana dalam hal ini Wn memiliki dua-element vector untuk menentukan nilai passband pada band pass filter. Dan untuk band stop filter kita bisa melakukannya dengan b = fir1(N,Wn,’stop’).

Jika kita tidak menyebutkan jenis window yang digunakan, maka secara default, Matlab akan menentukan semua perintah diatas bahwa window yang digunakan adalah time window hamming. Jenis fungsi window yang lain dapat digunakan dengan cara menyebutkan secara spesifik jenis window yang digunakan dalam merancang FIR filter. Misalnya untuk window Blackman, dapat dilakukan dengan cara sebagai berikut b = fir1(N, Wn, blackman(N)).

Windowing

Pada contoh program berikut ini disajikan sebuah cara merancang FIR low pass filter dengan menggunakan jenis window hamming. Dalam hal ini nilai orde filternya adalah 16, dan frekuensi cut off sebesar 0.4.

Respon Frekuensi FIR Filter dengan Windowing dalam skala linear

Prosedur perancangan diatas akan menghasilkan sebuah low pass filter yang memiliki respon frekuensi. Bentuk yang disajikan dalam respon frekuensi ini adalah dalam skala linear, belum dalam bentuk terskala decibel. Jika anda ingin melakukan perubahan untuk menghasilkan bentuk skala decibel, anda harus memodifikasi pada nilai respon frekuensinya dalam skala logaritmik

Respon Frekuensi FIR Filter dengan Windowing dalam skala dB

Respon frekuensi FIR yang dihasilkan menunjukkan bahwa pada nilai frekuensi cut off, dalam hal ini ditunjukkan dengan nilai w = 0.4, mulai menunjukkan efek redaman terhadap sinyal input, sehingga outputnya mengalami pelemahan nilai. Pada nilai w = 0.6, sinyal benar-benar mengalami peredaman sampai nol dan demikian seterusnya nilai redaman menghasilkan sinyal output yang dilemahkan sampai mendekati nilai nol. Sedangkan dalam skala logaritmik, hasilnya menunjukkan adanya ripple pada frekuensi diatas w = 0,6.

Parks-McClellan

Pada perangkat lunak Matlab juga telah terdapat berbagai contoh fungsi untuk perancangan FIR filter yang merupakan hasil pengembangan dari berbagai algoritma. Salah satu diantara fungsi tersebut adalah yang dibentuk didasarkan pada algoritma Park-McClellan. Bentuk sintaknya cukup sederhana seperti berikut : b = remez(N,F,A). Dimana, b merupakan sebuah respon impulse sepanjang N+1 dari sebuah filter FIR dengan orde N, yang memiliki karakteristik respon phase linear. Variabel F adalah suatu vector yang merepresentasikan nilai-nilai pada band frekuensi terskala terhadap frekuensi sampling (fs/2), bernilai 0 sampai 1. Sehingga dalam hal ini F=0 akan merepresentasikan 0 Hz, dan F=1 berkaitan dengan suatu nilai frekuensi linear sebesar fs/2. Variable A adalah suatu vector dengan nilai real vector yang merepresentasikan nilai magnitudo sebagai fungsi dari nilai frekuensi pada vektor F. Antara F dan A, merupakan sebuah pasangan bentuk respon frekuensi yang disederhanakan sehingga bisa juga dituliskan sebagai (F(k), A(k)) diantara F(k+1) dan F(k+2) ditandai sebagai suatu daerah transition bands.

Filter berikut memiliki karakteristik low pass filter, dengan nilai yang sama pada teknik windowing. Frekuensi cut-off wc=0,4 dan orde filter N=16

Program diatas menghasilkan sebuah FIR filter dengan respon frekuensi terskala linear. Untuk menghasilkan sebuah FIR filter terskala logarithmic dalam satuan dB diperlukan modifikasi perintah sebagai berikut:

FILTER IIR

Dalam terminologi IIR filter, yang mana nilai ouput di waktu sebelum mulainya sistem (< 0) sudah diperhitungkan dengan adanya parameter feedback internal dari sistem tersebut. IIR Filter bisa dinyatakan dalam sebuah persamaan beda yang merepresentasikan hubungan output/input sistem LTI sebagai berikut:

di mana:
M = orde filter
i, j = filter indek
bi = koefisien feed forward IIR filter
aj = koefisien feed back IIR filter
M+N+1, menentukan banyaknya (total koefisien), sedangkan untuk order filter biasanya
ditetapkan sebagai nilai N

Filter IIR memiliki kecenderungan bentuk roll off yang tajam. Berbeda dengan design pada suatu filter FIR, yang seringkali didasarkan pada pendekatan sebuah deretan input secara numerik, IIR filter design seringkali dimulai dengan sebuah analog filter yang mana kita rasakan memiliki sifat mendekati. Fungsi transfer (system function) dapat direpresentasikan sebagai jumlahan tak hingga (infinite) pada sederetan ratio of polynomials. Dengan adanya penggunaan feedback, mungking sekali system ini tidak stabil. Sistem ini juga tidak memiliki respon fase linear terhadap perubahan frekuensi sinyal input.

Di dalam realisasiny sebuah IIR filter bisa mendekati dengan bentuk blok diagram standar seperti berikut.

Salah satu metode yang sederhana dalam merancang sebuah IIR filter adalah melalui pembuatan protitipe filter analog (Butterworth, Chebyshev, dsb). Dari hasil perancangan ini kemudian diamati nilai pole & zero, bentuk respon frekuensinya dan respon impulse.

Matlab telah menyediakan banyak fungsi yang berkaitan dengan perancangan IIR filter menggunakan prototype analog filter, salah satunya adalah butterworth filter analog. Untuk mendesain analog butterworth filter, dilakukan dengan perintah [B,A]=butter(N,Wn). Langkah ini akan menghasilkan sebuah low pass filter digital yang berbasis pada Analog Butterworth Filter dengan order senilai N, dan frekuensi cut-off sebesar Wn. Variable B merupakan koefisien feed forward IIR filter, dan variabel A merupakan koefisien feedback filter IIR. Koefisien-koefisien ini akan menentukan bentuk perbandingan polynomial-z. Nilai frekuensi cut-off harus berada diantara 0,0 < Wn < 1,0. Dimana 0 dalam hal ini akan ekuivalen dengan 0 Hz, sedangkan nilai 1,0 akan ekuivalen dengan nilai fs/2 (setengah sampling rate atau setengah frekuensi sampling).

Jika dalam proses perancangan ditetapkan bahwa Wn merupakan dua element vektor, misalnya Wn=[W1 W2], maka perintah butter diatas akan menghasilkan suatu band pass filter dengan orde 2N, dengan daerah pass band yang berada diantara W1 < W < W2. Sedangkan untuk menghasilkan filter high pass, dan band stop, kita harus memodifikasi perintah diatas seperti halnya pada waktu melakukannya pada perancangan FIR filter.

Berikut ini dilakukan sebuah filter IIR dengan orde N=2, frekuensi cut-off wc=0,4 , dan menginginkan respon frekuensinya merupakan sebuah low pass filter. Langkah pembuatan programnya adalah sebagai berikut :

Ref : [1][2]