Download - Pemodelan Dan Simulasi Modul 1 (1)

Transcript
  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    1/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    MODUL 1

    MATLAB akan digunakan secara ekstensif pada praktikum ini. Modul ini

    memberikan tinjauan singkat mengenai MATLAB dan kapabilitasnya dengan penekanan

    pada isu pemrograman. Seluruh materi pada modul ini merupakan terjemahan bebas dari

    buku DSP First, A Multimedia Approach karangan ames !. Mc"lellan# $onald %.

    Schafer# dan Mark A. &oder# terbitan 'rentice(!all )*++,-# khususnya Appendi B dan ".

    I. Tujuan

    Tujuan khusus modul /*. Mempelajari penggunaan sistem helpuntuk mengetahui commandsdansyntaxdasar

    MATLAB

    0. 1apat menggunakan MATLAB untuk desain filter

    II. Dasar Teori

    MATLAB )Matri Laboratory- adalah sebuah program untuk analisis dan komputasi

    numerik. 'ada a2alnya# program ini merupakan interfaceuntuk koleksi rutin(rutin numerik

    dari proyek L34'A"5 dan 63S'A"5# namun sekarang merupakan produk komersial dari

    perusahaan Math2orks# 3nc. MATLAB telah berkembang menjadi sebuah environmentpemrograman yang canggih yang berisi fungsi(fungsi built-in untuk melakukan tugas

    pengolahan sinyal# aljabar linier# dan kalkulasi matematis lainnya. MATLAB juga berisi

    toolboxyang berisi fungsi(fungsi tambahan untuk aplikasi khusus .

    MATLAB bersifat extensible# dalam arti bah2a seorang pengguna dapat menulis

    fungsi baru untuk ditambahkan pada libraryketika fungsi(fungsi built-inyang tersedia tidak

    dapat melakukan tugas tertentu. 5emampuan pemrograman yang dibutuhkan tidak terlalu

    sulit bila Anda telah memiliki pengalaman dalam pemrograman bahasa lain seperti "#

    'AS"AL# atau 78$T$A4.

    1. MATLAB HELP

    MATLAB menyediakan sistem help on-lineyang dapat diakses dengan perintah

    help. Misalnya# untuk memperoleh informasi mengenai fungsi filter# Anda hanya perlumengetikkan perintah

    >> help filter

    'erintah di atas akan menampilkan informasi dalam bentuk teks pada layar

    MATLAB Anda.

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    111

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    2/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    Sebuah perintah yang sangat berguna untuk mempelajari pemrograman MATLAB

    adalah intro# yang membahas konsep(konsep dasar tentang bahasa MATLAB. Selain itu#juga terdapat banyak program demonstrasi yang mengilustrasikan berbagai kapabilitas

    MATLAB# yang dapat dimulai dengan perintah demo.

    2. VARIABEL DAN OPERASI MATRIKS

    Tipe :ariabel dasar pada MATLAB adalah matriks )pada :ersi ; dan ke atas#

    MATLAB juga menyediakan berbagai tipe data seperti pada bahasa pemrograman

    lainnya-. 9ntuk mendeklarasikan sebuah :ariabel# Anda hanya perlu memberikan nilai

    tertentu padanya pada MATLABprompt. Sebagai contoh#

    M ! " 1 2 #$ % 2 1&

    M !

    1 2 #

    % 2 1

    5etika definisi sebuah matriks melibatkan sebuah rumus yang panjang atau

    banyak entri# maka sebuah perintah MATLAB yang sangat panjang dapat dipecah

    menjadi dua )atau lebih- baris dengan cara menempatkan sebuah tanda ()pada akhirdari sebuah baris yang ingin dilanjutkan. Sebagai contoh#

    P = [ 1, 2, 4, 6, 8 ]+ [ pi, 4, exp(1), 0, -1] + [ co(0!1"pi), in(pi#$), t%n($), %t%n(2), &rt(pi) ]'

    5etika sebuah ekspresi perintah atau pernyataan diakhiri dengan tanda semicolon

    )> Msize = size(M Msize =

    ! "

    8leh karena itu# kita tidak perlu menggunakan :ariabel khusus untuk melacak

    jumlah baris dan kolom suatu matriks. Ada dua jenis :ariabel matriks pada MATLAB#yakni skalar )scalars- dan :ektor )vectors-. Sebuah skalar adalah sebuah matriks yang

    hanya berisi satu elemen# jadi berukuran * *. Sebuah :ektor adalah sebuah matriks yang

    hanya berisi satu baris atau kolom.

    6lemen indi:idu dari sebuah :ariabel matriks dapat diakses dengan memberikan

    indeks baris dan kolom# sebagai contoh

    >> M1" = M(1," M1" =

    #

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    112

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    3/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    Submatriks juga dapat diakses dengan cara yang mirip dengan menggunakan

    operator colon)/- seperti yang dijelaskan pada sesi berikut.

    2.1. O'era(or )o*on +:,

    8perator colon)/- sangat berguna untuk membuat index arrays. =unakan perintah

    help colonuntuk mengetahui deskripsi detail tentang kapabilitasnya.

    4otasi colondidasarkan pada ide bah2a sebuah selang indeks dapat dihasilkan

    dengan memberikan sebuah nilai a2al# inter:al# dan sebuah nilai akhir. 5arena itu# sebuah

    :ektor yang terpartisi secara teratur dapat diperoleh dengan perintah

    iii = nil%i %%l * inter%l * nil%i %hir

    Tanpa parameter inter%l# nilai default(nya adalah *. Metode perhitungan ini

    mirip dengan notasi loop18 pada 78$T$A4# namun metode pada MATLAB selangkahlebih maju dengan cara menggabungkannya dengan pengindeksan matriks. 9ntuk sebuah

    matriks . x 8#(2,$)adalah elemen skalar yang berada pada baris kedua dan kolomketiga dari matriks A. adi sebuah submatriks > ? dapat diekstrak dengan perintah

    (2*/,1*$)!Tanda colon juga berfungsi sebagai sebuah ild card# misalnya#(2,*) adalahbaris kedua matriks.

    'engindeksan mundur akan membalikkan sebuah :ektor# misalnya @)+/(*/*-

    untuk sebuah :ektor yang berisi + buah elemen. 5adang(kadang# Anda juga memerlukan

    sebuah daftar yang berisi semua nilai elemen pada matriks# jadi (*)memberikan sebuah:ektor kolom 0 *# yang merupakan hasil concatenationelemen(elemen setiap kolom

    matrik. 3ni merupakan contoh reshapin!matriks. Teknik reshapin!yang lebih umumdapat dilakukan dengan fungsi reh%pe(,,). Sebagai contoh# matriks . x 8dapatdi(reshapemenjadi sebuah matriks *0 denganne = reh%pe(,12,6)!

    2.2. O'erasi Ma(ri-s anArray

    8perasi defaultpada MATLAB adalah operasi matriks. adi"berarti perkalianmatriks# yang akan dibahas pada bagian berikut.

    0.0.*. Tinjauan 'erkalian Matriks

    8perasi perkalian matriks hanya dapat dilakukan bila kedua matrikstersebut memiliki dimensi yang kompatibel# yakni jumlah kolom matriks harussama dengan jumlah baris matriks . Sebagai contoh# sebuah matriks ; , dapatmengalikan sebuah matriks , ? untuk menghasilkan sebuah matriks ; ?.Secara umum# bilaadalah m n# maka haruslah n p# dan hasil perkalianakan memiliki dimensi m p. 9mumnya perkalian matriks tidak bersifat komutatif#

    yakni . Bila p m# maka perkaliantidak terdefinisi.

    Beberapa kasus khusus untuk perkalian matriks adalah outer product dan

    inner product. 'ada outer product# sebuah :ektor kolom mengalikan sebuah :ektor

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    113

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    4/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    baris untuk menghasilkan sebuah matriks. Bila kita membiarkan semua elemen salah

    satu :ektor tersebut berupa C*D # maka kita akan memperoleh hasil yang berulang.

    [ ]

    =

    ????

    0000

    ****

    ?

    0

    *

    ****

    aaaa

    aaaa

    aaaa

    a

    a

    a

    9ntuk inner product# sebuah :ektor baris mengalikan sebuah :ektor kolom#

    jadi hasilnya berupa skalar. Bila kita membiarkan semua elemen salah satu :ektor

    tersebut berupa C*D# maka kita akan memperoleh penjumlahan semua elemen :ektor

    lainnya.

    [ ] >?0*>?0*

    *

    *

    *

    *

    aaaaaaaa +++=

    0.0.0. 8perasipointise array

    Bila kita ingin melakukan perkalian pointise# ada beberapa kebingungan

    yang bisa muncul. 'ada kasuspointise# kita ingin mengalikan matriks secara elemen

    per elemen# jadi mereka harus memiliki dimensi yang sama. Sebagai contoh# dua

    matriks ; , dapat dikalikan secara pointise# 2alaupun keduanya tidak bisa

    melakukan perkalian matriks biasa. 9ntuk melakukan perkalian pointise pada

    MATLAB# kita menggunakan operator point-star" !" . Misalnya biladan keduanya adalah matriks ? 0 maka

    =

    ==

    ?0?0?*?*

    00000*0*

    *0*0****

    ?0?*

    000*

    *0**

    ?0?*

    000*

    *0**

    EE

    EE

    EE

    E.E.

    baba

    baba

    baba

    bb

    bb

    bb

    aa

    aa

    aa

    #A$

    9ntuk selanjutnya# perkalian semacam ini kita sebut dengan istilah perkalian

    array. 'erhatikan bah2a perkalian array bersifat komutatif karena kita akan

    memperoleh hasil yang sama bila kita menghitung 3 = !".

    1alam MATLAB# bila sebuah titik digunakan dengan operator aritmetik#

    maka ia akan mengubah definisi operator tersebut ke operasi pointise. adi

    operator .F berarti pembagianpointise# .G berarti pemangkatanpointise. Misalnya#

    xxH )I.+-.G)I/>+- akan menghasilkan suatu :ector yang nilainya sama dengan )I#+- n

    untuk n H I#*# 0# J>+.

    0.0.? 8perasi concatenation array

    8perasi ini digunakan untuk menempelkan dua atau lebih array dengan syaratsyarat tertetu sesuai dengan operasi concatenation yangdiinginkan. 1alam MATLAB

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    114

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    5/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    terdapat dua buah fungsi yang dapat digunakan untuk melakukan proses

    concatenation )penempelan- arrays. 7ungsi tersebut adalah :ertcat dan horKcat.

    'enjelasan lanjut dapat dilihat pada help MATLAB untuk fungsi(fungsi tersebut.

    /. PLOT DAN 0RAIK

    MATLAB dapat menghasilkan plot dua dimensi (y dan plot tiga dimensi#

    menayangkan citra# dan bahkan membuat dan memutar :ideo. 1ua fungsi yang yang

    sering digunakan pada praktikum ini adalah plotdan tem. 9ntuk memanggil fungsi ini#umumnya kita membutuhkan dua :ektor )satu :ektor juga bisa# namun untuk definisi

    yang berbeda# gunakan perintah helpuntuk melihat informasi yang lebih lengkap-# untuksumbu dan sumbu y. 'emanggilan fungsi plot(x,)akan menghasilkan suatu plot yangterkoneksi dengan garis lurus untuk setiap dua titik

    5 (x(1),(1), (x(2),(2), (x($),($), !!, (x(),() seperti yang ditunjukkan padagambar 'A.*.

    'emanggilan fungsi tem(x,) akan menghasilkan presentasi seperti yangditunjukkan pada gambar kedua 'A.*

    0 0.5 1 1.5 2 2.5 3 3.5 4-1

    -0.5

    0

    0.5

    1tt = 0:0.3:4; xx = sin(0.7*pi*tt); plot( tt, xx)

    0 0.5 1 1.5 2 2.5 3 3.5 4-1

    -0.5

    0

    0.5

    1tt = 0:0.3:4; xx = sin(0.7*pi*tt); stem( tt, xx)

    0a3ar PA.1

    MATLAB memiliki banyak opsi plottin! yang dapat dipelajari dengan helpplotx, help plotx# dan help 7r%phic):ersi >- atau help 7r%ph2d, help 7r%ph$d,dan help pec7r%ph):ersi ;-.

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    115

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    6/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    /.1. Figure Windows

    5etika MATLAB membuat sebuah plot# MATLAB menulis grafik tersebut ke

    fi!ure indos. Anda bisa membuka beberapafi!ure indos namun setiap saat hanya

    satu indoyang aktif. Setiap perintah plot pada command indoakan mengalihkankeluarannya ke indoyang aktif. 'erintah fi7re(n)akan menampilkan sebuahfi!ureindoyang baru yang ditandai dengan bilangan n# atau membuatnya aktif kembali bila

    telah ada sebelumnya. 'engendalian terhadap berbagai atribut indo)ukuran# lokasi#

    2arna- juga mungkin dilakukan dengan perintah fi7re# yang melakukan inisialisasiterhadap indo plot.

    /.2. Me4P*o( 3e3era'a 5ra6i-

    Anda juga dapat membuat beberapa grafikFplot pada satu indo dengan

    menggunakan fungsi 9plot. 7ungsi ini tidak melakukan prosesplottin!# namun hanyamembagi 2indo2 menjadi beberapa segmen. Sebagai contoh# perintah 9plot($,2,$)akan membagi fi!ure indomenjadi tiga baris dan dua kolom )jadi terdapat enam

    segmen- dan mengarahkan plot berikutnya ke segmen kiri baris kedua. =rafik pada 'A.*

    diperoleh dengan perintah 9plot(2,1,1)dan 9plot(2,1,2).

    7. KONSTRUK PEMRO0RAMAN

    MATLAB mendukung paradigma pemrograman fungsional# di mana Anda dapat

    menyusun fungsi(fungsi secara nested. 'erhatikan persamaan di ba2ah

    ( )=

    %

    n

    nx

    *

    log

    yang dapat diimplementaskan dengan hanya menggunakan satu baris kode MATLAB#

    yakni

    sum( lo$( a%s(&

    di mana x adalah sebuah :ektor yang berisi elemen(elemen n. "ontoh inimengilustrasikan MATLAB dalam bentuk yang paling efisien# di mana fungsi(fungsi

    indi:idu dikombinasikan untuk menghasilkan keluaran. 'enulisan kode(kode MATLAB

    yang efisien memerlukan gaya pemrograman yang menghasilkan fungsi(fungsi kecil yang

    di:ektorisasi. %oop-loop harus dihindari. "ara utama untuk menghindari loop adalah

    memanggil fungsi(fungsi toolboxsebanyakFsesering mungkin.

    7.1. un5si46un5si built-inMATLAB

    Banyak fungsi(fungsi MATLAB yang dapat beroperasi pada skalar sama

    mudahnya dengan operasi pada array. Sebagai contoh# bila xadalah sebuah array# maka

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    116

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    7/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    co(x) mengembalikan sebuah array dengan ukuran yang sama seandainya x berisikosinus dari setiap elemen x.

    =

    -cos)-cos)-cos)

    -cos)-cos)-cos)

    -cos)-cos)-cos)

    -cos)

    #0#*#

    #00#0*#0

    #*0#**#*

    nmmm

    n

    n

    xxx

    xxx

    xxx

    x

    'erhatikan bah2a tidak ada loopyang diperlukan# meskipun co(x)melakukanoperasi kosinus pada setiap elemen array. 5ebanyakan fungsi transcendentalmengikuti

    aturan pointise ini. 'ada beberapa kasus khusus# adalah sangat penting untuk

    membedakan eksponensial matriks (expm) dengan eksponensialpointise(exp)*

    =

    -e.p)-e.p)-e.p)

    -e.p)-e.p)-e.p)

    -e.p)-e.p)-e.p)

    -e.p)

    #0#*#

    #00#0*#0

    #*0#**#*

    nmmm

    n

    n

    aaa

    aaa

    aaa

    A

    7.2. A*iran Pro5ra +Program Flow,

    Aliran program dapat dikendalikan pada MATLAB menggunakan pernyataan if#loophile# dan loopfor. 'ada MATLAB :ersi ;# terdapat juga pernyataan itch. !al inimirip dengan bahasa(bahasa tingkat tinggi seperti " atau 'AS"AL. 1eskripsi dan

    contoh dari setiap konstruk program tersebut dapat dilihat dengan menggunakan perintahhelp.

    %. MATLAB S8RIPTS

    Setiap perintahFpernyataan yang dapat dimasukkan pada indo prompt dapat

    disimpan pada sebuah file teks dan dieksekusi sebagai script. File teks tersebut dapat

    dibuat dengan menggunakan sembarang editorAS"33 seperti program 4otepad atau pada

    editor teks MATLAB. 6kstensifileharus berupa .m danscript tersebut dieksekusi pada

    MATLAB dengan hanya mengetikkan namafile )dengan atau tanpa ekstensi-. 'rogram(

    program tersebut umumnya dikenal dengan istilah m-file. Berikut merupakan contoh

    sebuah m-file/

    tt = '')"*+&& = sin(')-pi-tt+su%plot(!,1,1plot( tt, &&title(.tt = '')"*+ && = sin(')-pi-tt+ plot( tt, &&/su%plot(!,1,!stem( tt, &&title(..tt = '')"*+ && = sin(')-pi-tt+ plot( tt, &&/

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    117

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    8/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    Bila perintah(perintah ini disimpan dengan file bernama plottem!m makapengetikan plottem pada command prompt akan menjalankan file tersebut# dankedelapan baris perintah akan dieksekusi sama halnya bila mereka diketikkan baris per

    baris pada command prompt. !asilnya adalah dua buah plot seperti yang tampak pada

    gambar A.*.

    III. Persia'an Pra-(i-u:

    'elajari penggunaan perintah fir1# fir2# filter# freqz dan perintah(perintah lain

    yang berhubungan dengan topik praktikum pada Matlab.

    IV. Pe(unju- Pra-(i-u

    1. Me3ua( sin9a* in'u( 6i*(er 3eru'a su'er'osisi 3e3era'a sin9a* sinusoia*en5an 6re-uensi 3er3ea

    1. 'ada Matlab# representasikan sinyal dalam :ektor )matriks * 4# 4 panjang

    :ektor-. 5ita akan merepresentasikan sumbu 2aktu dimana untuk It0# kita

    beri panjang :ektor *II )*II sampel- dengan perintah >>i=1:100;

    2. Buat ? sinyal sinusoidal pada frekuensi pencuplikan fsH*III !K untuk masing(

    masing frekuensi sinyal f*H0II !K# f0H*III !K# f?H;III !K. 5etikkan>>sin1=sin(2*pi*i*f1/fs);sin2=sin(2*pi*i*f2/fs);sin3=sin(2*pi*i*f3/fs

    );

    3. umlahkan ketiga sinyal tersebut menjadi satu sinyal sinusoidal rusak dengan

    perintah >>sintot=(sin1+sin2+sin3)/3;4. "oba plot gambarnya dengan perintah >>plot(sintot);

    5. Lihat juga respon frekuensinya dengan perintah freqz.

    6. 5ini Anda telah memiliki sinyal input untukfilteryang akan kita rancang.

    2. Desain an Siu*asi i*(er IR

    5ita akan coba beberapafilter73$ dengan spesifikasi berikut )frekuensi boleh

    diubah(ubah-

    a. 7ilter 73$ lo-passorde ?* dengan frekuensi cut-off,II !K

    b. 7ilter 73$ band-passorde ?* dengan frekuensipass*III N ?III !K

    c. 7ilter 73$ hi!h-passorde ?* dengan frekuensi cut-offIII!K

    *. $ancang ketigafilterdi atas# cari koefisienfilter(nya dengan perintah yang sesuai

    )fir1atau fir2-. "atat masing(masing koefisienfilter.

    0. Lihat frekuensi respon masing(masing filterdengan perintah freqz. =ambarkan

    hasilnya.

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar9ni:ersitas Mercu Buana

    118

  • 7/26/2019 Pemodelan Dan Simulasi Modul 1 (1)

    9/9

    Pemodelan dan Simulasi =Muhamar Kadaffi, MT MODUL : 1

    0OTO2 3O4M5T L5PO45

    /.1. Peran)an5an i*(er en5an Ma(*a3

    'lot Sinyal 3nput

    Sinyal 3nput $espon 7rekuensi

    /.2. Desain i*(er IR

    Lo2(pass orde ?* f

    cut(off ,II !K 5oefisien 7ilter

    $espon 7rekuensi 7ilter

    Band(pass orde ?* f

    cut(off *III(?III !K 5oefisien 7ilter

    $espon 7rekuensi 7ilter

    !igh(pass orde ?* f

    cut(off III !K

    $espon 7rekuensi 7ilter

    Pemodelan dan SimulasiMuhamar Kadaffi, MT

    Pusat Pengembangan BahanAjar

    119