Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1
MODUL I PENGENALAN MATLAB
Rosana Dewi Amelinda (13213060) Asisten : Kalam A. L (13212090)
Tanggal Percobaan: 21/9/2015 EL3110-Praktikum Pengolahan Sinyal Digital
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak
Abstrak Pada praktikum Modul I ini dilakukan beberapa
percobaan yaitu pertama dilakukan pembuatan sinyal input
filter yang berasal dari hasil superposisi tiga buah sinyal
sinusoidal dengan frekuensi yang berbeda-beda menggunakan
frekuensi sampling 16 kHz. Sinyal hasil superposisi tersebut
selanjutnya diplot kedalam sebuah grafik dan diamati pula
respon frekuensinya. Percobaan kedua yaitu pembuatan filter
dengan fungsi FIR1 berorde 32 yang terdiri dati filter
low-pass, band-low-pass, dan high-pass filter. Lalu diamati frekuensi
response untuk masing-masing filter yang telah dibuat.
Percobaan ketiga yaitu melakukan desain dan simulasi
menggunakan filter FIR2. Pembuatan filter dilakukan
dengan metode frekuensi sampling menggunakan respon
frekuensi filter yang berasal dari gambar. Perancangan filter
tersebut dilakukan untuk filter berorde 16 dan 128.
Percobaan terakhir yaitu membandingkan hasil konvolusi
(input hasil superposisi pada percobaan 1 dengan salah satu
filter pada percobaan 2) yang berasal dari source code yang
dibuat praktikan dibandingkan dengan filter yang telah ada
pada MATLAB.
Kata kunci: MATLAB, filter FIR1, filter FIR2,
frequensi respons.
1. P
ENDAHULUANMATLAB adalah sebuah bahasa dengan kemampuan tinggi untuk komputasi teknis. Ia menggabungkan komputasi, visualisasi, dan pemrograman dalam satu kesatuan yang mudah digunaka dimana masalah dan penyelesaiannya di ekspresikan dalam notasi matematik yang sudah dikenal. Pemakaian MATLAB meliputi : matematika dan komputasi, pengembangan algoritma, akuisisi data, pemodelan, simulasi, prototype, grafik saintifik dan engineering dan lain-lain.
MATLAB adalah system interaktif yang mempunyai basis data array yang ridak membutuhkan dimensi. Ini memungkinan kita dapat menyelesaikan banyak masalah komputasi teknis, khususnya yang berkaitan dengan formulasi matrik dan vector.
Sistem MATLAB terdiri atas lima bagian utama :
Development Environment, yaitu
kumpulan semua alat-alat dan fasilitas
untuk membantu user dalam
menggunakan fungsi dan file MATLAB. The MATLAB mathematical function
library, yaitu koleksi semua algoritma komputasi.
The MATLAB language, yaitu Bahasa matriks/array level tinggi dengna contoh flow, fungsi, struktur data, input/output, dan fitur objek programming lainnya. Graphics, yaitu fasilitas untuk
menampilkan vector dan matriks sebagai grafik.
The MATLAB Application Program Interface (API), yaitu paket yang memungkinkan user menulis Bahasa C dan Fortran yang berinteraksi dengan MATLAB.
Tujuan yang ingin dicapai pada modul ini yaitu : Mempelajari penggunaan system help
untuk mengetahui commands dan syntax dasar MATLAB.
Dapat menggunakan MATLAB untuk desain filter.
Mempelajari bagaimana menulis fungsi dan m-file pada MATLAB.
Merancang pem-filter-an FIR dengan MATLAB.
Memahami pem-filter-an lewat MATLAB secara mendalam.
2. S
TUDIP
USTAKAMATLAB (Matrix Laboratory) adalah sebuah program untuk analisis dan komputasi numerik. Pada awalnya, program ini merupakan interface untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EISPACK, namun sekarang merupakan produk komersial dari perusahaan Mathworks, Inc. MATLAB telah berkembang menjadi sebuah environment pemrograman yang canggih yang berisi fungsi-fungsi built-in untuk melakukan tugas pengolahan sinyal, aljabar linier, dan kalkulasi matematis lainnya. MATLAB juga berisi toolbox yang berisi fungsi-fungsi tambahan untuk aplikasi khusus .
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 2 MATLAB bersifat extensible, dalam arti bahwa
seorang pengguna dapat menulis fungsi baru untuk ditambahkan pada library ketika fungsi-fungsi built-in yang tersedia tidak dapat melakukan tugas tertentu. Kemampuan pemrograman yang dibutuhkan tidak terlalu sulit bila Anda telah memiliki pengalaman dalam pemrograman bahasa lain seperti C, PASCAL, atau FORTRAN.
a. MATLAB HELP
MATLAB menyediakan sistem help on-line yang dapat diakses dengan perintah help.
Contoh :
>> help filter
b. VARIABEL DAN OPERASI MATRIKS Tipe variable pada MATLAB adalah matriks. Untuk mendeklarasikan sebuah variable, kita perlu memberikan nilai tertentu padanya pada MATLAB
prompt. Sebagai contoh :
>> M = [ 1 2 6; 5 2 1] M =
1 2 6 5 2 1
Ketika definisi sebuah matriks melibatkan sebuah rumus yang panjang atau banyak entri, maka sebuah perintah MATALB yang sangat panjang dapat dipecah menjadi dua (atau lebih) baris dengan cara menempatkan sebuah tanda (…) paa akhir dari sebuah baris yang ingin dilanjutkan. Sebagai contoh :
P = [ 1, 2, 4, 6, 8 ]+ [ pi, 4, exp(1), 0, -1] + … [cos(0.1*pi), sin(pi/3), tan(3), atan(2), sqrt(pi) ]; Ketika sebuah ekspresi perintah atau pernyataan diakhiri dengan tanda semicolon (;), maka hasilnya tidak akan ditampilkan di layar.
Ada dua jenis variabel matriks pada MATLAB, yakni skalar (scalars) dan vektor (vectors). Sebuah skalar adalah sebuah matriks yang hanya berisi satu elemen, jadi berukuran 1 x 1. Sebuah vektor adalah sebuah matriks yang hanya berisi satu baris atau kolom.
Operator colon (:) sangat berguna untuk membuat
index arrays
.
Notasi colon didasarkan pada ide bahwa sebuah selang indeks dapat dihasilkan dengan memberikan sebuah nilai awal, interval, dan sebuah nilai akhir. Karena itu, sebuah vektor yang terpartisi secara teratur dapat diperoleh dengan perintahiii = nilai awal : interval : nilai akhir Perkalian matriks
Operasi perkalian matriks AB hanya dapat dilakukan bila kedua matriks tersebut memiliki dimensi yang kompatibel, yakni jumlah kolom matriks A harus sama dengan jumlah baris matriks B. Sebagai contoh, sebuah matriks 5 x 8 dapat mengalikan sebuah matriks 8 x 3 untuk menghasilkan sebuah matriks AB 5 x 3. Secara umum, bila A adalah m x n, maka B haruslah n x p, dan hasil perkalian AB akan memiliki dimensi m x p. Umumnya perkalian matriks tidak bersifat komutatif, yakni AB ≠ BA. Bila p = m, maka perkalian AB tidak terdefinisi
.
Beberapa kasus khusus untuk perkalian matriks adalah outer product dan inner product. Pada outer
product, sebuah vektor kolom mengalikan sebuah
vektor baris untuk menghasilkan sebuah matriks. Bila kita membiarkan semua elemen salah satu vektor tersebut berupa ‘1’ , maka kita akan memperoleh hasil yang berulang. Untuk inner
product, sebuah vektor baris mengalikan sebuah
vektor kolom, jadi hasilnya berupa skalar. Bila kita membiarkan semua elemen salah satu vektor tersebut berupa ‘1’, maka kita akan memperoleh penjumlahan semua elemen vektor lainnya.
Operasi pointwise array
Bila kita ingin melakukan perkalian pointwise, ada beberapa kebingungan yang bisa muncul. Pada kasus pointwise, kita ingin mengalikan matriks secara elemen per elemen, jadi mereka harus memiliki dimensi yang sama. Sebagai contoh, dua matriks 5 x 8 dapat dikalikan secara pointwise, walaupun keduanya tidak bisa melakukan perkalian matriks biasa. Untuk melakukan perkalian pointwise pada MATLAB, kita menggunakan operator “point-star”A .* B.
Operasi concatenatio
Operasi ini digunakan untuk menempelkan dua atau lebih array dengan syarat syarat tertetu sesuai dengan operasi concatenation yangdiinginkan. Dalam MATLAB terdapat dua buah fungsi yang dapat digunakan untuk melakukan proses concatenation (penempelan) arrays. Fungsi tersebut adalah vertcat dan horzcat. Penjelasan lanjut dapat dilihat pada help MATLAB untuk fungsi-fungsi tersebut.
c. PLOT GRAFIK
MATLAB dapat menghasilkan plot dua dimensi x-y dan plot tiga dimensi, menax-yangkan citra, dan bahkan membuat dan memutar video. Dua fungsi yang yang sering digunakan pada praktikum ini adalah plot dan stem. Untuk memanggil fungsi ini, umumnya kita membutuhkan dua vektor (satu vektor juga bisa, namun untuk definisi yang
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 3 berbeda, gunakan perintah help untuk melihat
informasi yang lebih lengkap), untuk sumbu x dan sumbu y. Pemanggilan fungsi plot(x,y) akan menghasilkan suatu plot yang terkoneksi dengan garis lurus untuk setiap dua titik
{ (x(1),y(1), (x(2),y(2), (x(3),y(3), …….., (x(N),y(N) } seperti yang ditunjukkan pada gambar PA.1. Pemanggilan fungsi stem(x,y) akan menghasilkan presentasi seperti yang ditunjukkan pada Gambar 1. 1 PA.1
d. KONSTRUKSI PEMROGRAMAN
MATLAB mendukung paradigma pemrograman fungsional, di mana Anda dapat menyusun fungsi-fungsi secara nested. Perhatikan persamaan di bawah
yang dapat diimplementaskan dengan hanya menggunakan satu baris kode MATLAB, yakni
sum( log( abs(x) ) )
di mana x adalah sebuah vektor yang berisi elemen-elemen xn. Contoh ini mengilustrasikan MATLAB dalam bentuk yang paling efisien, di mana fungsi-fungsi individu dikombinasikan untuk menghasilkan keluaran. Penulisan kode-kode MATLAB yang efisien memerlukan gaya pemrograman yang menghasilkan fungsi-fungsi kecil yang divektorisasi. Loop-loop harus dihindari. Cara utama untuk menghindari loop adalah memanggil fungsi-fungsi toolbox
sebanyak/sesering mungkin. e. MATLAB SCRIPTS
Setiap perintah/pernyataan yang dapat dimasukkan pada window prompt dapat disimpan pada sebuah file teks dan dieksekusi sebagai script. File teks tersebut dapat dibuat dengan menggunakan sembarang editor ASCII seperti program Notepad atau pada editor teks MATLAB. Ekstensi file harus berupa .m dan script tersebut dieksekusi pada MATLAB dengan hanya
mengetikkan nama file (dengan atau tanpa ekstensi). Program-program tersebut umumnya dikenal dengan istilah m-file.Berikut merupakan contoh sebuah m-file:
tt = 0:0.3:4; xx = sin(0.7*pi*tt); subplot(2,1,1) plot( tt, xx)
title(‘tt = 0:0.3:4; xx = sin(0.7*pi*tt); plot( tt, xx)’) subplot(2,1,2)
stem( tt, xx)
title(‘‘tt = 0:0.3:4; xx = sin(0.7*pi*tt); plot( tt, xx)’) Bila perintah-perintah ini disimpan dengan file bernama plotstem.m maka pengetikan plotstem pada command prompt akan menjalankan file tersebut, dan kedelapan baris perintah akan dieksekusi sama halnya bila mereka diketikkan baris per baris pada command prompt. Hasilnya adalah dua buah plot seperti yang tampak pada gambar A.1.
f. MENULIS FUNGSI MATLAB
Kita dapat menulis fungsi sendiri dan kemudian ditambahkan pada environment MATLAB. Fungsi-fungsi ini merupakan jenis lain dari m-file, dan dibuat sebagai sebuah file ASCII menggunakan
editor teks. Kata pertama pada m-file tersebut
haruslah keywordfunction untuk memberitahukan MATLAB bahwa file tersebut diperlakukan sebagai sebuah fungsi dengan argumen. Pada baris yang sama juga berisi calling template yang menyatakan argumen input dan output dari fungsi. Nama file untuk m-file tersebut haruslah berekstensi .m dan nama fungsi tersebut akan menjadi nama dari perintah baru pada MATLAB. Sebagai contoh, perhatikan file berikut, yang mengekstrak L buah elemen terakhir dari sebuah vector.
function y = foo( x, L )
%FOO mengambil L buah titik terakhir dari x % penggunaan:
% y = foo( x, L ) % di mana: % x = vektor input
% L = jumlah titik yang ingin diambil % y = vektor output
N = length(x); If (L > N)
error(‘vektor input terlalu pendek’) end
y = x(( N-L+1):N );
Bila file ini disimpan dengan nama foo.m, operasi ini dapat dipanggil dari MATLAB command line dengan cara mengetikkan
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 4 Outputnya akan berupa tujuh elemen terakhir dari
vektor (1:2:37), yakni aa = [ 25 27 29 31 33 35 37 ]
2.1
J
UDULS
UB-
BABSub-bab pada percobaan ini, yaitu : Penguat kelas A
Penguat pushpull kelas B Penguat pushpull kelas AB
3. METODOLOGI
Pada percobaan 1 ini, alat dan bahan yang digunakan yaitu :
1. 1 unit computer 2. Software MATLAB Memulai percobaan
1. Percobaan membuat sinyal input filter berupa superposisi beberapa sonyal sinusoid dengan frekuensi berbeda
2. Percobaan desain dan simulasi flter FIR 1
3. Percobaan desain dan simulasi filter FIR 2
Pastikan komputer yang akan
digunakan berfungsi dengan normal
dan tidak ada masalah apapun.
Software Matlab sudah terinstal
dalam komputer.
Pada Marlab, direpresentasikan sinyal dalam vekor (matriks 1 x N, N panjang vektor). Akan direpresentasikan sumbu waktu dimana untuk 0<t<2𝜋, diberipanjang vektor 100 sampel dengan
perintah >>i = 1:100
Dibuat 3 sinyal sinusoidal pada frekuensi pencuplikan fs = 16 kHz untuk masing-masing
frekuensi sinyal f1 = 200 Hz, fs = 1 kHz, f3 = 5 kHz. Diketikan : >>sin1 = sin (2*pi*i*f1/fs); sin2
= sin (2*pi*i*f2/fs); sin3 = sin (2*pi*i*f3/fs);
Dijumlahkan ketiga sinyal tersebut menjadi satu sinyal sinusoidal rusak dengan perintah >>sintot
= (sin1+sin2+sin3)/3;
Dicoba lot gambarnya dengan perintah >>plot (sintot)
Dilihat juga respon frekuensinya dengan peritah freqz.
Dibuat beberapa filter dengan spesifikasi sebagai berikut
a. Filter FIR low-pass orde 32 dengan frekuensi cut-off 800 Hz
b. Filter FIR band-pass orde 32 dengan frekuensi pass 1 - 3 kHz
c. Filter FIR high-pass orde 32 dengan frekuensi cut-off 6 kHz
Dirancang ketiga filter tersebut, dicari koefisien filternya dengan perintah yang sesuai (fir1). Dicatat
masing-masing koefisien filter.
Dilihat frekuensi respon masing-masing filter dengan perintah freqz. Digambarkan hasilnya. Dianalisis pada
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 5 4. Percobaan membuat m-file untuk
melakukan pem-filter-an FIR.
Mengakhiri Percobaan
4. HASIL DAN ANALISIS
Percobaan 1 : Membuat sinyal input filter berupa superposisi beberapa sinyal sinusoidal dengan frekuensi berbeda
Pada percobaan pertama ini dilakukan representasi 3 buah sinyal sinusoidal dengan nilai frekuensi yang berbeda-beda (frekuensi sampling 16 kHz). Representasi sinyal tersebut dilakukan sebanyak 100 sampel (I dari 1 sampai 100). Sinyal sinusoidal pertama memiliki frequensi 200 Hz seperti ditunjukan pada gambar dibawah :
Gambar 1 Sinyal sinusoidal 1
Sinyal kedua memiliki frekuensi 1 kHz, seperti pada gambar berikut :
Gambar 2 Sinyal sinusoidal 2
Yang terakhir yaitu sinyal ketiga yang memiliki frekuensi sebesar 5 kHz.
Gambar 3 Sinyal sinusoidal 3
Kode matlab untuk pengeplotan ketiga sinyal tersebut yaitu :
(( Initialisasi ))
i = 1:100 (banyak sampel)
fs = 16000 (besar frek sampling) f1 = 200 (nilai frek 1)
f2 = 1000 (nilaifrek 2) f3 = 5000 (nilai frek 3) (( rumus fungsi ))
sin1 = sin(2*pi*i*(f1/fs)) (fungsi1) sin2 = sin(2*pi*i*(f2/fs)) (fungsi2) sin3 = sin(2*pi*i*(f3/fs)) (fungsi3) (( Display ))
figure (1);
subplot(2,1,1); plot(i,sin1); title('sin1') {plot sinyal 1} subplot(2,1,2); plot(i,sin2); title('sin2') {plot sinyal 2} figure (2);
subplot(2,1,1); plot(i,sin3); title('sin3') {plot sinyal 3} Selanjutnya dilakukan pengeplotan sinyal total yang merupakan hasil penjumlahan dari ketiga sinyal. Berikut gambarnya :
Dibuat desain filter FIR dengan metoda frekuensi sampling dengan respon frekuensi seperti apda
gambar dibawah (Respon Frekuensi Filter)
Dirancang filter diatas, dicari koefisien filternya dengan perintah yang sesuai (fir2). Dicatat
koefisien filter. Digunakan orde 16.
Dilihat frekuensi respon filter dengan perintah freqz. Digambarkan hasilnya. Dilakukan untuk
orde yang lebih besar misalnya 128. Dibandingkan dengan hasil sebelumnya.
Pada bagian ini dibuat m-file untuk melakukan pemfilteran FIR saja, untuk m-file tersebut tidak diperbolehkan memanggil fungsi internal MATLAB.
Dibandingkan hasilnya dengan percobaan dengan menggunakan perintah filter dari MATLAB.
Sebelum keluar dati ruang praktikum, dirapikan meja praktikum dan dimatikan komuter dati jala-jala listrik.
Dimatikan MCB dimeja praktikum sebelum meninggalkan ruangan.
Diperiksa lembar penggunaan meja.
Dipastikan asisten telah menandatangani catatan percobaan kali ini pada Buku Catatan Laboratorium.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 6 Gambar 4 Sinyal total ((sin1+sin2+sin3) / 3)
Dari sinyal total tersebut dibuat pula hasil respons frekuensinya sebagai berikut :
Gambar 5 Respon frequensi sinyal total
Perintah matlab untuk pengeplotan sinyal total beserta respons frekuensinya yaitu :
sintot = (sin1+sin2+sin3)/3 (nilai
sinyal total yang merupakan penjumlahan dari ketiga siyal)
subplot(2,1,2); plot(i,sintot); (plot grafik sinyal total )
title('sintot') (pemberitan judul
grafik)
freqz (sintot); (perintah untuk
mengamati respons frekuensi sinyal) Dari percobaan ini telah diperoleh sebuah sinyal input filter yaitu berupa sinyal total hasil penjumlahan 3 buah sinyal sinusoidal dengan frekuensi yang berbeda-beda. Dapat dilihat bahwa nilai-nilai sinyal total (mulai dari i = 1 hingga i = 100) merupakan hasil superposisi nilai-nilai sinyal 1, sinyal 2 dan sinyal 3. Misalnya saja unuk nilai sinyal total saat i = 50, merupakan hasil penjumlahan dari sinyal 1 (saat i = 50), ditambahkan dengan sinyal 2 (saat i = 50) dan sinyal 3 (saat i = 50).
Percobaan 2 : Desain dan simulasi filter FIR 1 Pada percobaan 2, dilakukan pembuatan 3 buah filter dengan memanfaatkan fungsi FIR 1 yang telah ada pada MATLAB. Filter pertama yang dibuat yaitu filter FIR low-pass orde 32 (fc 800 Hz), berikut respons frekuensinya :
Gambar 6 Respon frekuensi filter FIR low-pass
Source code yang digunakan yaitu :
LowPass = fir1(32,0.1); (pembuatan
filter low-pass dengan mencari nilai koefisiennya menggunakan perintah fir1)
freqz(LowPass); (perintah untuk melihat frekuensi respons dari low-pass filter)
Selanjutnya dilakukan juga pembuatan filter FIR
band-pass orde 32 (f pass 1-3 kHz) dengan respons
frekuensi sebagai berikut :
Gambar 7 Respon frekuensi filter FIR band-pass
Source code :
BandPass = fir1(32,[0.125,
0.375],'bandpass'); (pembuatan filter band-pass dengan mencari nilai koefisiennya menggunakan perintah fir1)
freqz(BandPass); (perintah untuk melihat frekuensi respons dari band-pass filter)
Dan yang terakhir yaitu pembuatan filter FIR
high-pass orde 32 (fc 6 kHz) dengan respons frekuensi
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 7 Gambar 8 Respon frekuensi filter FIR
high-Source Code :
HighPass = fir1(32,0.75,'High');
(pembuatan filter high-pass dengan mencari nilai koefisiennya menggunakan perintah fir1)
freqz(HighPass); (perintah untuk melihat frekuensi respons dari high-pass filter)
Pada Matlab telah disediakan fungsi fir1() yang dapat digunakan untuk merancang linear-phasa FIR filter konvensional seperti lowpass, highpass, bandpass dan bandstop yang didasarkan pada metode windowing. Dengan perintah b = fir(N,Wn) akan menghasilkan sebuah vector b yang merupakan respons impuls pada suatu lowpass filter dengan orde senilai N. nilai frekuensi cut-off (f[Wn]) harslah bernila antara 0 sampai 1 yang mana mengacu pada suatu nilai yang 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.
Gambar 9 Contoh peredaman pada low-pass filter
Dapat dilihat dari gambar diatas, respon frekuensi FIR yang dihasilkan menunjukan bahwa pada nilai frekuensi cut-off (dalam hal ini ditunjukan dengan nilai Wn – 0.1), mulai menunjukan adanya efek redaman terhadap sinyal input sehingga outputnya mengalami pelemahan nilai. Pada Wn = 0.2, sinyal benar-benar mengalami peredaman ditunjukan dengan adanya ripple pada frekuensi diatas Wn = 0.2. Hal ini (sifat serupa sesuai filternya) juga terjadi pada filter band pass dan
filter high pas yaitu pada frekuensi antara 0.125-0.375 (band-pass) dan pada Wn = 0.75 (high-pass). Percobaan 3 : Desain dan simulasi filter FIR 2 Percobaan ketiga yaitu melakukan perancangan filter (low-pass) dengan metoda frekuensi sampling menggunakan grafik response frekuensi yang yang telah ditentukan. Berikut hasil frekuensi response yang dihasilkan untuk dua orde yang berbeda (16 dan 128) :
Gambar 10 Filter dengan orde 16
Gambar 11 Filter dengan orde 128
Source code : (( inisialisasi nilai )) f = [0 0.1 0.3 1]; m = [1 1 0 0]; (( eksekusi program )) ((orde 16))
lowpass = fir2(16,f,m); (pembuatan
filter low-pass dengan mencari nilai koefisiennya menggunakan perintah fir2)
freqz(lowpass); (perintah untuk
melihat frekuensi respons dari low-pass filter dengan orde 16)
((orde 128))
lowpass = fir2(128,f,m); (pembuatan filter low-pass dengan mencari nilai koefisiennya menggunakan perintah fir2)
freqz(lowpass); (perintah untuk
melihat frekuensi respons dari low-pass filter dengan orde 128)
Pada MATLAB terlah disedakan fitur filter fir2(). Contohnya untuk perintah b = fir2(N,f,m)
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 8 digunakan untuk mendesain filter digital FIR orse
N dengan respons frekuensi yang ditentukan oleh vector f dan m, serta menghasilkan koefisien filter pada vector b sebanyak N+1. Vektor f dan m menetapkan frekuensi dan magnitude untuk filter sehinga dapat dilakukan perintah plot(f,m) yang akan dihasilkan gambar dari respons frekuensi yang diinginkan. Nilai frekuensi pada vekto f haruslah bernilai antara 0.0<f<.10, dimana 1.0 menunjukan setengah dari frekuensi sampling. Nilai pada vector f harus bertambah, dimulai dati 0 dan berakhir pada 1.0.
Secara default , FIR2 menggunakan window jenis Hamming. Tipe window yang lain seperti Boxcar, Hanning, Barlett, Blackman, Kaiser dan Chebwin
juga dapat digunakan, misalnya b=
fir2(N,f,m,Blackman(N+1)) digunakan
untuk perintah pada window Blackman.
Perbedaan nilai orde pada fungsi yang digunakan hanya berpengaruh pada jumlah sample yang digunakan. Misalnya untuk orde 16 digunakan sampel sebanyak 16 buah sedangkan untuk orde 128 digunakan sampel sebanyak 128 buah.
Percobaan 4 : Percobaan m-file untuk melakukan pem-filter-an FIR
Pada percobaan 4 ini praktikan diminta untu membuat m-file untuk melakukan pem-filter-an saja, namun dengan ketentuan tidak diperbolekan untuk memanggil fungsi internal MATLAB. Kemudian hasil dari penggunaan m-file tersbut dibandingkan dengan hasil yang diperoleh apabila menggunakan fungsi filter yang telah ada pada MATLAB. Berikut merupakan hasil konvolusi sinyal input (sintot perc 1) dengan filter low-pass menggunakn fungsi filter yang telah ada pada MATLAB :
Gambar 12 Konvolusi sinyal total dcngan filter low-pass filter mengguanakan perintah filter dari MATLAB
Gambar 13 Frekuensi response sinyal hasil konvolusi mengguanakan perintah filter dari MATLAB
Kemudian hasil diatas selanjutnya akan dibandingkan dengan hasil konvolusi sinyal input dan filter yang sama namun dilakukan dengan m-file yang telah dibuat praktikan, yaitu sebagai berikut :
Gambar 14 Konvolusi sinyal total dengan filter low-pass filter menggunakan source code yang dibuat praktikan
Gambar 15 Frekuensi response sinyal hasil konvolusi menggunakan source code yang dibuat praktikan
Source code
function y=my_conv(x,h) (nama fungsi) (( inisialisasi ))
x2=h; (x2 di assign dengan filter h)
lx=length(x); (length sinyal input)
lh=length(h); (length filter h)
(( program utama yang melakukan proses konvolusi sinyal input (sintot) dengan filter low-pass)) (Membalik sinyal input)
if lx>lh
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 9 else x=[x zeros(1,lh-lx)]; end y=zeros(1,lx+lh-1); x=fliplr(x);
(Menjumlahkan sinyal input yang telah dibalik dengan filter lowpass)
for i=1:length(y) if i<=length(x) y(i)=sum(x(1,length(x )-i+1:length(x)).*x2(1,1:i)); else j=i-length(x); y(i)=sum(x(1,1:length(x )-j).*x2(1,j+1:length(x2))); end end
Penulisan barisan ekspresi dalam MATLAB command window biasanya dilakukan baris perbaris dan biasanya untuk menyimpan barisan perintah dan hasil outputnya dengan menggunkan command diary. Hal ini sangatlah tidak efisien dikarenakan barisan yang telah tersimpan di diary tidak dapat diloadkan kembali seandaianya telah keluar dari MATLAB. Apalagi jika dilakukan banyak sekali perulangan barisan perintah yang sama, misalkan dilakukan pengolahan data dan perhitungan yang samayang melibatkan data atau fungsi yang berbeda. Untuk itu MATLAB menyediakan suatu struktur untuk membuat fungsi anda sendiri atau suatu teknik pemrograman dalam bentuk M-File.
Fungsi M-file hampir sama dengan script file dimana keduanya merupakan suatu file teks dengan ekstensi .m. Fungsi M-file ini tidak dimasukkan dalam command window, melainkan suatu file tersendiri yang dibuat dalam editor teks (MATLAB editor/debugger). Suatu fungsi M-File harus mengikuti beberapa aturan, diantaranya : nama fungsi, baris komentar, serta argument input dan output.
Berdasarkan fungsi m-file tersebut, maka telah dibuat m-file untuk fungsi konvolusi yang telah dtuliskan diatas. Dari m-file tersebut kemudian fungsi dijalankan di MATLAB. Setelah output dicocokan dengan fungsi filter yang telah ada pada MATLAB, ternyata diperoleh hasil respons frekuensi yang sama sehingga dapat dipastikan fungsi m-file yang telah dibuat praktikan adalah benar.
5. K
ESIMPULANDari percobaan didapatkan kesimpulan :
Perintah help dapat digunakan untuk mengetahui tentang penjelasan commands dan syntax dasar dari fungsi-fungi yang ada pada MATLAB.
MATLAB dapa digunakan untuk
melakukan desain filter suatu sinyal. Pada MATLAB terdapat 2 jenis fungsi
filter yang dapat langsung digunakan, yaitu fir 1 dan fir 2. Keduanya sama-sama dapat digunakan untuk malakukan filter terhadap sinyal dengan variabel input berupa orde dan frekuensi cut off sinyal. Perbedaan kedua filter ini yaitu pada metode pem-filter-an yang digunakan. Dimana pada fir 1, metode pem-filter-an yang digunakan yaitu dengan window method sedangkan pada fir 2 digunakan metode dengan memanfaatkan frekuensi sampling.
Fungsi-fungsi matematika sederhana juga dapat dilakukan pada MATLAB untuk menjumlahkan dua atau lebih sinyal. Algoritma fungsi-fungsi tertentu dapat
dibuat dalam bentuk m-file pada MATLAB.
D
AFTARP
USTAKA[1]. Mervin T Hutabarat, Praktikum Elektronika II
Laboratorium
Dasar
Teknik
Elektro
ITB,Bandung, 2015.
[2]. Proakis, Jhon. Manolakis, Dimitris, Digital Signal
Processing, principles, algoritm, and application,
Prentice Hall, 1998
[3].
http://tribudi.lecturer.pens.ac.id/LN_DSP_Pra
k/prak_DSP_1.pdf
, 6.03, 22 September 2015
[4].
http://bima.lecturer.pens.ac.id/materi%20prakt
ikum%20dsp/ps5_fir.pdf
, 3.20, 23 September
2015
[5].
http://elista.akprind.ac.id/upload/files/1585_
Modul4.pdf
, 5.51, 23 September 2015.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1 0
LAMPIRAN
PERCOBAAN 1 i = 1:100 fs = 16000 f1 = 200 f2 = 1000 f3 = 5000 sin1 = sin(2*pi*i*(f1/fs)) sin2 = sin(2*pi*i*(f2/fs)) sin3 = sin(2*pi*i*(f3/fs)) sintot = (sin1+sin2+sin3)/3 figure (1);subplot(2,1,1); plot(i,sin1); title('sin1') subplot(2,1,2); plot(i,sin2); title('sin2') figure (2);
subplot(2,1,1); plot(i,sin3); title('sin3') subplot(2,1,2); plot(i,sintot); title('sintot') freqz (sintot);
PERCOBAAN 2
LowPass = fir1(32,0.1); freqz(LowPass);
BandPass = fir1(32,[0.125 0.375],'bandpass'); freqz(BandPass); HighPass = fir1(32,0.75,'High'); freqz(HighPass); PERCOBAAN 3 f = [0 0.1 0.3 1]; m = [1 1 0 0]; lowpass = fir2(16,f,m); freqz(lowpass); lowpass = fir2(128,f,m); freqz(lowpass); PERCOBAAN 4 function y=my_conv(x,h) x2=h; lx=length(x); lh=length(h); if lx>lh x2=[x2 zeros(1,lx-lh)]; else x=[x zeros(1,lh-lx)]; end y=zeros(1,lx+lh-1); x=fliplr(x); for i=1:length(y) if i<=length(x)
y(i)=sum(x(1,length(x)-i+1:length(x)).*x2(1,1:i)); else
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 11 j=i-length(x);
y(i)=sum(x(1,1:length(x)-j).*x2(1,j+1:length(x2))); end