Anda di halaman 1dari 14

MODUL I

PENGENALAN MATLAB
Ainun Lina Huda Nur Syahadhah (13117039)
Asisten : Maulida Khusnul ‘Aqib (13116002)
Tanggal Percobaan : 17/09/2019
EL3104_D-03_Praktikum_Pengolahan_Sinyal_Digital
Laboratorium Teknik Elektro
Institut Teknologi Sumatera

Abstrak—Laporan ini memuat beberapa percobaan yang memperoleh informasi mengenai fungsi filter, Anda
sudah dilakukan pada saat praktikum. Percobaan tersebut hanya perlu mengetikkan perintah
meliputi: membuat sinyal input filter yang berupa
superposisi beberapa sinyal sinusoidal dengan frekuensi >> help filter
yang berbeda, mendesain dan mensimulasikan filter fir1
dan filter fir2, dan membuat m-file untuk melakukan Perintah di atas akan menampilkan informasi dalam bentuk
pemfilteran. teks pada layar MATLAB Anda. Sebuah perintah yang sangat
berguna untuk mempelajari pemrograman MATLAB adalah
Kata Kunci—Matlab, Filter intro, yang membahas konsep-konsep dasar tentang bahasa
MATLAB. Selain itu, juga terdapat banyak program
demonstrasi yang mengilustrasikan berbagai kapabilitas
I. PENDAHULUAN MATLAB, yang dapat dimulai dengan perintah demo.
MATLAB (Matrix Laboratory) adalah sebuah program
untuk analisis dan komputasi numerik. MATLAB bersifat B. VARIABEL DAN OPERASI MATRIKS
extensible, dalam arti bahwa seorang pengguna dapat menulis Tipe variabel dasar pada MATLAB adalah matriks (pada
fungsi baru untuk ditambahkan pada library ketika fungsi- versi 5 dan ke atas, MATLAB juga menyediakan berbagai tipe
fungsi built-in yang tersedia tidak dapat melakukan tugas data seperti pada bahasa pemrograman lainnya). Untuk
tertentu. mendeklarasikan sebuah variabel, Anda hanya perlu
memberikan nilai tertentu padanya pada MATLAB prompt.
MATLAB telah berkembang menjadi sebuah environment Sebagai contoh,
pemrograman yang canggih yang berisi fungsi-fungsi built-in
untuk melakukan tugas pengolahan sinyal, aljabar linier, dan >> M = [ 1 2 6; 5 2 1]
kalkulasi matematis lainnya. MATLAB juga berisi toolbox
yang berisi fungsi-fungsi tambahan untuk aplikasi khusus . M=
Adapun tujuan dari percobaan modul 1 ini ialah : 1 2 6
1. Mempelajari penggunaan sistem help untuk
mengetahui commands dan syntax dasar MATLAB 5 2 1
2. Dapat menggunakan MATLAB untuk desain filter
3. Mempelajari bagaimana menulis fungsi dan m-file Ketika definisi sebuah matriks melibatkan sebuah rumus
pada MATLAB yang panjang atau banyak entri, maka sebuah perintah
4. Merancang pem-filter-an FIR dengan MATLAB MATLAB yang sangat panjang dapat dipecah menjadi dua
5. Memahami pem-filter-an lewat MATLAB secara (atau lebih) baris dengan cara menempatkan sebuah tanda (…)
mendalam pada akhir dari sebuah baris yang ingin dilanjutkan. Sebagai
contoh,
II. LANDASAN TEORI
P = [ 1, 2, 4, 6, 8 ]+ [ pi, 4, exp(1), 0, -1] + …
A. MATLAB HELP
[ cos(0.1*pi), sin(pi/3), tan(3), atan(2), sqrt(pi) ];
MATLAB menyediakan sistem help on-line yang dapat
diakses dengan perintah help. Misalnya, untuk Ketika sebuah ekspresi perintah atau pernyataan diakhiri
dengan tanda semicolon (;), maka hasilnya tidak akan
ditampilkan di layar. Hal ini sangat membantu ketika MATLAB memiliki banyak opsi plotting yang dapat
Anda bekerja dengan matriks dengan ukuran yang sangat dipelajari dengan help plotxy, help plotxyz, dan help
besar. graphics (versi 4) atau help graph2d, help graph3d, dan help
specgraph (versi 5).
Ukuran dari sebuah matriks dapat diketahui dengan operator
size: D. KONSTRUK PEMROGRAMAN

>> Msize = size(M) MATLAB mendukung paradigma pemrograman fungsional,


Msize = di mana Anda dapat menyusun fungsi-fungsi secara nested.
2 3 Perhatikan persamaan di bawah

Oleh karena itu, kita tidak perlu menggunakan variabel


khusus untuk melacak jumlah baris dan kolom suatu matriks.
Ada dua jenis variabel matriks pada MATLAB, yakni skalar yang dapat diimplementaskan dengan hanya menggunakan
(scalars) dan vektor (vectors). Sebuah skalar adalah sebuah satu baris kode MATLAB, yakni
matriks yang hanya berisi satu elemen, jadi berukuran 1 x 1.
Sebuah vektor adalah sebuah matriks yang hanya berisi satu
baris atau kolom. sum( log( abs(x) ) )

Elemen individu dari sebuah variabel matriks dapat diakses


dengan memberikan indeks baris dan kolom, sebagai contoh di mana x adalah sebuah vektor yang berisi elemen-elemen xn.
Contoh ini mengilustrasikan MATLAB dalam bentuk yang
>> M13 = M(1,3) paling efisien, di mana fungsi-fungsi individu dikombinasikan
M13 = untuk menghasilkan keluaran. Penulisan kode-kode MATLAB
6 yang efisien memerlukan gaya pemrograman yang
menghasilkan fungsi-fungsi kecil yang divektorisasi. Loop-
Submatriks juga dapat diakses dengan cara yang mirip loop harus dihindari. Cara utama untuk menghindari loop
dengan menggunakan operator colon (:) seperti yang adalah memanggil fungsi-fungsi toolbox sebanyak/sesering
dijelaskan pada sesi berikut. mungkin.

C. PLOT DAN GRAFIK E. MATLAB SCRIPTS


MATLAB dapat menghasilkan plot dua dimensi x-y dan Setiap perintah/pernyataan yang dapat dimasukkan pada
plot tiga dimensi, menayangkan citra, dan bahkan membuat window prompt dapat disimpan pada sebuah file teks dan
dan memutar video. Dua fungsi yang yang sering digunakan dieksekusi sebagai script. File teks tersebut dapat dibuat
pada praktikum ini adalah plot dan stem. Untuk memanggil dengan menggunakan sembarang editor ASCII seperti
fungsi ini, umumnya kita membutuhkan dua vektor (satu program Notepad atau pada editor teks MATLAB. Ekstensi
vektor juga bisa, namun untuk definisi yang berbeda, file harus berupa .m dan script tersebut dieksekusi pada
gunakan perintah help untuk melihat informasi yang lebih MATLAB dengan hanya mengetikkan nama file (dengan atau
lengkap), untuk sumbu x dan sumbu y. Pemanggilan fungsi tanpa ekstensi). Program-program tersebut umumnya dikenal
stem(x,y) akan menghasilkan presentasi seperti yang dengan istilah m-file.Berikut merupakan contoh sebuah m-file:
ditunjukkan pada Gambar 1. 1 PA.1
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.
Setiap perintah/pernyataan yang dapat dimasukkan pada Bila file ini disimpan dengan nama foo.m, operasi ini dapat
window prompt dapat disimpan pada sebuah file teks dan dipanggil dari MATLAB command line dengan cara
dieksekusi sebagai script. File teks tersebut dapat dibuat mengetikkan
dengan menggunakan sembarang editor ASCII seperti
program Notepad atau pada editor teks MATLAB. Ekstensi aa = foo( (1:2:37), 7 );
file harus berupa .m dan script tersebut dieksekusi pada
MATLAB dengan hanya mengetikkan nama file (dengan atau Outputnya akan berupa tujuh elemen terakhir dari vektor
tanpa ekstensi). Program-program tersebut umumnya dikenal (1:2:37), yakni
dengan istilah m-file.Berikut merupakan contoh sebuah m-file:
aa = [ 25 27 29 31 33 35 37 ]
tt = 0:0.3:4;
xx = sin(0.7*pi*tt); G. TIPS PEMROGRAMAN
subplot(2,1,1)
plot( tt, xx) Bagian ini akan memperkenalkan beberapa tips
title(‘tt = 0:0.3:4; xx = sin(0.7*pi*tt); plot( tt, pemrograman yang akan meningkatkan kecepatan program
xx)’) subplot(2,1,2) MATLAB Anda. Untuk mengetahui lebih banyak tentang tips
stem( tt, xx) dan ide, perhatian gaya-gaya penulisan pada m-file (built-in
title(‘‘tt = 0:0.3:4; xx = sin(0.7*pi*tt); plot( tt, xx)’) function) yang tersedia pada toolbox MATLAB.Sebagai
contoh, ketikkan perintah

Bila perintah-perintah ini disimpan dengan file bernama


plotstem.m maka pengetikan plotstem pada command type angle
prompt akan menjalankan file tersebut, dan kedelapan type conv
baris perintah akan dieksekusi sama halnya bila mereka type trapz
diketikkan baris per baris pada command prompt. Hasilnya
adalah dua buah plot seperti yang tampak pada gambar A.1.
Mempelajari gaya pemrograman orang lain merupakan cara
F. MENULIS FUNGSI MATLAB yang efisien untuk memahami suatu bahasa pemrograman
komputer. Pada petunjuk-petunjuk berikut, kita akan
Anda dapat menulis fungsi sendiri dan kemudian ditambahkan membahas hal-hal yang terpenting dalam penulisan kode
pada environment MATLAB. Fungsi-fungsi ini merupakan MATLAB yang baik. Petunjuk- petunjuk ini akan menjadi
jenis lain dari m-file, dan dibuat sebagai sebuah file ASCII sangat berguna ketika Anda semakin mengenal MATLAB
menggunakan editor teks. Kata pertama pada m-file
tersebut haruslah keywordfunction untuk memberitahukan
MATLAB bahwa file tersebut diperlakukan sebagai sebuah III. METODOLOGI
fungsi dengan argumen. Pada baris yang sama juga berisi
calling template yang menyatakan argumen input dan output A. Alat dan Bahan
dari fungsi. Nama file untuk m-file tersebut haruslah 1. 1 unit komputer
berekstensi .m dan nama fungsi tersebut akan menjadi nama 2. Software Matlab
dari perintah baru pada MATLAB. Sebagai contoh, perhatikan
file berikut, yang mengekstrak L buah elemen terakhir dari
B. Langkah Kerja
sebuah vektor
Sebelum praktikum dilaksanakan, lakukan beberapa hal
function y = foo( x, L ) berikut ini:

%FOO mengambil L buah titik terakhir dari x


% penggunaan: Pastikan komputer yang akan digunakan berfungsi
% y = foo( x, L ) dengan normal dan tidak ada masalah apapun.
% di mana:
% x = vektor input
% L = jumlah titik yang ingin diambil
% y = vektor output Software Matlab sudah terinstal dalam komputer.

N = length(x);
If (L > N) 1. Percobaan membuat sinyal input filter berupa superposisi
error(‘vektor input terlalu beberapa sinyal sinusoidal dengan frekuensi berbeda.
pendek’) end
y = x(( N-L+1):N );
Pada Matlab, representasikan sinyal dalam vektor (matriks 1
x N, N panjang vektor). Kita akan merepresentasikan sumbu
waktu dimana untuk 0<t<2 , kita beri panjang vektor 100
(100 sampel) dengan perintah >>i=1:100;

Buat 3 sinyal sinusoidal pada frekuensi pencuplikan


fs=16000 Hz untuk masing-masing frekuensi sinyal
f1=200 Hz, f2=1000 Hz, f3=5000 Hz.
Ketikan :
>>sin1=sin(2*pi*i*f1/fs);sin2=sin(2*pi*i*f2/fs);sin3=sin(2
*pi*i*f3/fs);

Rancang filter di atas, cari koefisien filter-nya dengan


Jumlahkan ketiga sinyal tersebut menjadi satu sinyal perintah yang sesuai (fir2). Catat koefisien filter. Gunakan
sinusoidal rusak dengan perintah orde 16.
>>sintot=(sin1+sin2+sin3)/3;

Lihat frekuensi respon filter dengan perintah freqz.


Coba plot gambarnya dengan perintah >>plot(sintot); Gambarkan hasilnya. Lakukan untuk orde lebih besar
misalnya 128. Bandingkan dengan hasil sebelumnya.

4. Percobaan membuat m-file untuk melakukan pem-filter-an


Lihat juga respon frekuensinya dengan perintah freqz.
FIR

Pada bagian ini anda diminta untuk membuat m-file untuk


Kini Anda telah memiliki sinyal input untuk filter yang akan melakukan pemfilteran FIR saja, untuk m-file anda tidak
kita rancang diperbolehkan memanggil fungsi internal MATLAB.
Bandingkan hasilnya dengan percobaan dengan menggunakan
perintah filter dari MATLAB. (Untuk kelancaran praktikum
source code bisa dipersiapkan sebelum praktikum)
2. Percobaan desain dan simulasi filter FIR 1
Catatan:
Kita akan coba beberapa filter FIR dengan spesifikasi  Pada laporan m-file disertakan, dan berikan
berikut (frekuensi boleh diubah-ubah) penjelasan algoritma yang anda gunakan untuk
 Filter FIR low-pass orde 32 dengan frekuensi cut-off melakukan pem-filter-an FIR.
800 Hz
 Filter FIR band-pass orde 32 dengan frekuensi pass HINT: Koefisien filter FIR adalah merupakan respon impuls
1000 – 3000 Hz dari filter.
 Filter FIR high-pass orde 32 dengan frekuensi cut-off
6000Hz
IV. HASIL DAN ANALISIS
Rancang ketiga filter di atas, cari koefisien filter-nya A. Percobaan membuat sinyal input filter berupa superposisi
dengan perintah yang sesuai (fir1). Catat masing-masing
beberapa sinyal sinusoidal dengan frekuensi berbeda
koefisien filter.

Freqz (sintot)

Lihat frekuensi respon masing-masing filter dengan


perintah freqz. Gambarkan hasilnya. Analisa pada Kode MATLAB
frekuensi cut off. >> i = 1 : 100; %membuat variable i
>> sin1 = sin (2*22/7*i*200/16000) ; sin2 = sin
(2*22/7*i*1000/16000) ; sin3 = sin (2*22/7*i*5000/16000) ;
3. Percobaan desain dan simulasi filter FIR 2
%membuat sinyal sinusoidal
>> sintot = (sin1+sin2+sin3) / 3; %menggabungkan ketiga
Kita akan coba mendesain filter FIR dengan metoda
frekuensi sampling dengan respon frekuensi seperti pada sinyal sinusoidal
Gambar 1. 2 Respon Frekuensi Filter
>> plot (sintot); %memplotkan sinyal yang sudah
digabungkan >> help fir1 fungsi –nfungsi yang ada di fir1
>> lowpass = fir1 (N,Wn)
>> bandpass = fir1 (N, [Wn1, Wn2], ‘bandpass’
>> highpass = fir1 (N, Wn, ‘high’)

cut off
Wn =
s . 0.5

Kode MATLAB
>> lowpass = firl(32, 0.1); %membuat sinyal lowpass
>> bandpass = firl(32, [0.125, 0.375] , ‘bandpass’);
%membuat sinyal bandpass
>> highpass = firl(32, 0.75, ‘high’); %membuat sinyal
highpass
>> freqz lowpass; %memplotkan dalam bentuk frekuaensi
Plot (sintot) untuk sinyal lowpass
>> freqz bandpass; %memplotkan dalam bentuk frekuaensi
untuk sinyal bandpass
>> freqz highpass; %memplotkan dalam bentuk frekuaensi
untuk sinyal highpass

Freqz (sintot)
Lowpass
Pada percobaan pertama ini yaitu membuat sinyal input
filter berupa superposisi dengan menggunakan frekuensi yang
berbeda – beda. Frekuensi yang digunakan yaitu 200 Hz, 1000
Hz, dan 5000 Hz. Sedangkan frekuensi sampling yang
digunakan sebesar 16000 Hz. Representasi sinyal dilakukan
sebanyak 100 sampel yaitu i dari 1 sampai 100.
Setelah sinyal sinusoidal dengan frekuensi - frekuensi
tersebut terbentuk, selanjutnya menggabungkan ketiga sinyal
sinusoidal tersebut menjadi satu dan diplotkan dalam bentuk
frekuensi.
Berdasarkan dengan kurva yang didapatkan semakin besar
frekuensi yang digunakan maka grafik phasa yang dihasilkan
semakin kecil atau menurun dengan magnituda yang tidak
stabil.

B. Percobaan desain dan simulasi filter FIR 1


Bandpass
Highpass

Pada percobaan ini dilakukan pembuatan 3 buah filter yaitu


FIR2 Orde 16
lowpass, bandpass, dan highpass dengan menggunakan fungsi
FIR 1. Pada lowpass grafik magnitude dan grafik phasa yang
dihasilkan cenderung stabil hanya saja pada 0 - 0.2 rad/sampel
frekuensi sinyal pada grafik magnitude maupun grafik phasa
mengalami penurunan .
Pada bandpass grafik magnitude maupun grafik phasa
mengalami naik turun . pada grafik magnitude frekuensi snyal
nya mengalami penaikan hingga 0 dB tetapi tutun kembali
pada 0.5 rad/sampel, setelahnya cenderung stabil.
Sedangkan pada highpass, grafik magnitude yang dihasilkan
awalnya stabil tetapi antara 0.6 – 1 rad/ sample mengalami
kenaikan hingga 0 dB. Sedangkan pada grafik phasa yang
dihasilkan mengalami penurunan pada 0.6 – 1 rad/sample.

C. Percobaan desain dan simulasi filter FIR 2

FIR2 Orde 128


>> help fir2
>> f = [Wn0, Wn1, Wn02, Wn3] Pada percobaain ini membuat desain dan simulasi untuk
>> A = [1 1 0 0] filter FIR 2 dengan rumus yang telah ada . Terdapat dua orde
>> lowpass = fir2 (N, f, A) yang akan digunakan yaitu orde 16 dan orde 128. Dapat
dilihat perbedaan grafik magnitude dan grafik fhasa antara
orde 16 dengan orde 128. Pada orde 128, grafik magnitude
dan grafik phasanya yang dihasilkan memiliki kerapatan yang
Kode MATLAB lebih rapat dibandingkan dengan orde 16.
>> f = [0 0.1 0.15 1] ; (membuat matriks frekuensi)
>> A = [1 1 0 0]; (membuat matriks jarak)
>> lowpass = fir2(16,f,A); (membuat sinyal lowpass dalam
D. Percobaan membuat m-file untuk melakukan pem-filter-an
orde 16)
FIR
>> freqz (lowpass); ( memplotkan dalam bentuk frekuensi
>> lowpass = fir2 (128,f,A); (membuat sinyal lowpass dalam
orde 128) Function W = conv [x,h]
>>freqz (lowpass); (memplotkan dalam bentuk frekuensi) - Inisialisasi
- Pembalikan Sinyal
- Penjumlahan Sinyal
Script MATLAB V. SIMPULAN
function y=D6 conv (a,b)
x2=b; 1. MATLAB dapat digunakan untuk membuat sebuah desain
la=length (a); filter dari suatu sinyal.
lb=length (b); 2. Pada MATLAB terdapat dua fungsi filter, yaitu FIR 1 dan
if la>llb FIR 2.
x2=[x2 zeros(l, la-lb)]; 3. Fungsi dari FIR 1 dapat membuat 3 buah sinyal, yaitu
else lowpass, bandpass, dan highpass.
a=[a zeros(l, lb-la)]; 4. Fungsi m.file hampir sama dengan script dimana
end keduanya merupakan sebuah file teks dengan ekstensi .m.
y=zeros(l, la+lb-l);
a=fliplr(a);
VI. REFERENSI
for i=l:length(b)
if i<=length(a)
y(i)=sum(a(l, length(a)-i+1:length(a)).*x2(l,l:i)); [1] Digital Signal Processing Principles, Algorithms, and
else Applications Third Edition, John G. Proakis Northeastern
j=i-length(a); University Dimitris G. Manolakis Boston College
y(i)=sum(a(l,l:length(a)-j.*x2(l,j+l:length(x2)));
end
end

Pada percobaan ini, praktikan diminta untuk membuat


sebuah m-file yang berupa script. Script tersebut merupakan
sebuah script yang didalamnya berisi sinyal - sinyal yang telah
dibuat sebelumnya.
Lampiran

Anda mungkin juga menyukai