78

Click here to load reader

125848955 Diktat Matlab Unikom

Embed Size (px)

DESCRIPTION

PSD

Citation preview

Page 1: 125848955 Diktat Matlab Unikom

1

UNIVERSITAS

KOMPUTER

INDONESIA

Jurusan Teknik Elektro

Universitas Komputer Indonesia Copyright @2009

Diktat Matlab & Simulink with Application

Page 2: 125848955 Diktat Matlab Unikom

2

SATUAN ACARA PERKULIAHAN (SAP)

MATA KULIAH KEAMANAN KOMPUTER

KODE / SKS : / SKS

Dosen : Jana Utama, ST

Program Studi : S1 Teknik Elektro

Kelas/angkatan : 06TE01 / 2006

Minggu

ke Pokok Bahasan Sub Pokok

Bahasan

Tujuan Instruksional

Khusus

Ref.

1 Pengarahan perkuliahan

dan pengenalan MATLAB o Memulai perintah

sederhana

o Penggambaran grafik

o Penyusunan program

o Fungsi dalam MATLAB

2

&

3

Pemrograman MATLAB o Kontrol program

o M-file

o Fungsi inline dan

perintah feval

4 &

5

Pemrograman MATLAB o Operator logika

o Operasi Array

o Akar-akar persamaan

o Fungsi zero

6 Sinyal dan sistem o Analisis filter dan

Implementasi

7 Analisis dan desain

filter analog

o Desain LPF analog

o Desain Butterworth

LPF

8 Ujian Tengah Semester

9 &

10

Analisis dan desain

filter digital o Desain IIR dan FIR

o FIR dan Signal flow

graph

11 &

12

Analisis dan desain

filter digital o Low pass filter

o High pass filter

o Signal processing tools

13 Neural Network

(Perceptron)

o Pembentukan jaringan

o Pembentukan vektor

masukan dan target

o Menghitung keluaran

perceptron

o Menghitung bobot dan

bias

14 &

15

Neural Network

(Backpropagation) o Inisialisasi

Backpropagation

o Insisialisasi Bobot

o Simulasi jaringan

16 Ujian Akhir Semester

Page 3: 125848955 Diktat Matlab Unikom

3

ATURAN PERKULIAHAN KEAMANAN KOMPUTER

DAFTAR HADIR MIN = 80% X 16= 14

KOMPONEN NILAI

TUGAS / pokok bahasan = 25%

UTS = 30%

UAS = 45%

Nilai Mutlak

85 – 100 = A

70 – 84 = B

56 – 69 = C

41 – 55 = D

≤ 40 = E

Keterlambatan kehadiran dengan toleransi 10 menit

Buku Acuan : Bebas (mencakup pembahasan yang ada)

Page 4: 125848955 Diktat Matlab Unikom

4

MODUL 1

PENGENALAN MATLAB: SEBAGAI ALAT ANALISIS PERMASALAHAN ENGINEERING

I. TUJUAN

Mahasiswa mampu mengoperasikan Matlab dan memanfaatkannya sebagai perangkat

Simulasi untuk praktikum Sinyal dan Sistem

II. DASAR TEORI

1.1 Apa Sih MATLAB Itu?

MATLAB adalah sebuah bahasa dengan (high-performance) kinerja tinggi untuk komputasi

masalah teknik. Matlab mengintegrasikan komputasi, visualisasi, dan pemrograman dalam suatu

model yang sangat mudah untuk pakai dimana masalah-masalah dan penyelesaiannya

diekspresikan dalam notasi matematika yang familiar. Penggunaan Matlab meliputi bidang–

bidang:

• Matematika dan Komputasi

• Pembentukan Algorithm

• Akusisi Data

• Pemodelan, simulasi, dan pembuatan prototipe

• Analisa data, explorasi, dan visualisasi

• Grafik Keilmuan dan bidang Rekayasa

MATLAB merupakan suatu sistem interaktif yang memiliki elemen data dalam suatu array

sehingga tidak lagi kita dipusingkan dengan masalah dimensi. Hal ini memungkinkan kita untuk

memecahkan banyak masalah teknis yang terkait dengan komputasi, kususnya yang berhubungan

dengan matrix dan formulasi vektor, yang mana masalah tersebut merupakan persoalan apabila

kita harus menyelesaikannya dengan menggunakan bahasa level rendah seperti Pascall, C dan

Basic.

Nama MATLAB merupakan singkatan dari matrix laboratory. MATLAB pada awalnya ditulis

untuk memudahkan akses perangkat lunak matrik yang telah dibentuk oleh LINPACK dan

EISPACK. Saat ini perangkat MATLAB telah menggabung dengan LAPACK dan BLAS library,

yang merupakan satu kesatuan dari sebuah seni tersendiri dalam perangkat lunak untuk komputasi

matrix.

Dalam lingkungan perguruan tinggi teknik, Matlab merupakan perangkat standar untuk

memperkenalkan dan mengembangkan penyajian materi matematika, rekayasa dan kelimuan. Di

industri, MATLAB merupakan perangkat pilihan untuk penelitian dengan produktifitas yang tingi,

pengembangan dan analisanya.

Fitur-fitur MATLAB sudah banyak dikembangkan, dan lebih kita kenal dengan nama toolbox.

Sangat penting bagi seorang pengguna Matlab, toolbox mana yang mandukung untuk learn dan

apply technologi yang sedang dipelajarinya. Toolbox toolbox ini merupakan kumpulan dari

fungsi-fungsi MATLAB (M-files) yang telah dikembangkan ke suatu lingkungan kerja MATLAB

untuk memecahkan masalah dalam kelas particular. Area-area yang sudah bisa dipecahkan dengan

toolbox saat ini meliputi pengolahan sinyal, system kontrol, neural networks, fuzzy logic,

wavelets, dan lain-lain.

Page 5: 125848955 Diktat Matlab Unikom

5

2.2. Kelengkapan pada Sistem MATLAB

Sebagai sebuah system, MATLAB tersusun dari 5 bagian utama:

1. Development Environment. Merupakan sekumpulan perangkat dan fasilitas yang

membantuanda untuk menggunakan fungsi-fungsi dan file-file MATLAB. Beberapa

perangkat ini merupakan sebuah graphical user interfaces (GUI). Termasuk didalamnya

adalah MATLAB desktop dan Command Window, command history, sebuah editor dan

debugger, dan browsers untuk melihat help, workspace, files, dan search path.

2. MATLAB Mathematical Function Library. Merupakan sekumpulan algoritma komputasi

mulai dari fungsi-fungsi dasar sepertri: sum, sin, cos, dan complex arithmetic, sampai dengan

fungsi-fungsi yang lebih kompek seperti matrix inverse, matrix eigenvalues, Bessel functions,

dan fast Fourier transforms.

3. MATLAB Language. Merupakan suatu high-level matrix/array language dengan control

flow statements, functions, data structures, input/output, dan fitur-fitur object-oriented

programming. Ini memungkinkan bagi kita untuk melakukan kedua hal baik "pemrograman

dalam lingkup sederhana " untuk mendapatkan hasil yang cepat, dan "pemrograman dalam

lingkup yang lebih besar" untuk memperoleh hasil-hasil dan aplikasi yang komplek.

4. Graphics. MATLAB memiliki fasilitas untuk menampilkan vector dan matrices sebagai suatu

grafik. Didalamnya melibatkan high-level functions (fungsi-fungsi level tinggi) untuk

visualisasi data dua dikensi dan data tiga dimensi, image processing, animation, dan

presentation graphics. Ini juga melibatkan fungsi level rendah yang memungkinkan bagi anda

untuk membiasakan diri untuk memunculkan grafik mulai dari benutk yang sederhana sampai

dengan tingkatan graphical user interfaces pada aplikasi MATLAB anda.

5. MATLAB Application Program Interface (API). Merupakan suatu library yang

memungkinkan program yang telah anda tulis dalam bahasa C dan Fortran mampu

berinterakasi dengan MATLAB. Ini melibatkan fasilitas untuk pemanggilan routines dari

MATLAB (dynamic linking), pemanggilan MATLAB sebagai sebuah computational engine,

dan untuk membaca dan menuliskan MAT-files.

III. PERANGKAT YANG DIPERLUKAN

PC yang dilengkapi dengan perangkat multimedia (sound card, Microphone, Speaker active,

atau headset)

Sistem Operasi Windows dan Perangkat Lunak Matlab yang dilengkapi dengan tool box DSP

IV. LANGKAH PERCOBAAN

4.1 Memulai Matlab

Perhatikan Dekstop pada layar monitor PC, anda mulai MATLAB dengan melakukan double-clicking pada shortcut icon MATLAB

Gambar 1. Icon MATLAB pada desktop PC

Page 6: 125848955 Diktat Matlab Unikom

6

Selanjutnya anda akan mendapatkan tampilan seperti pada Gambar berikut ini.

Gambar 2. Tampilan awal Matlab

Sedangkan untuk mengakhiri sebuah sesi MATLAB, anda bisa melakukan dengan dua cara,

pertama pilih File -> Exit MATLAB dalam window utama MATLAB yang sedang aktif, atau

cara kedua lebih mudah yaitu cukup ketikkan type quit dalam Command Window.

4.2 Menentukan Direktori Tempat Bekerja

Anda dapat bekerja dengan MATLAb secara default pada directory Work ada di dalam Folder

MATLAB. Tetapi akan lebih bagus dan rapi jika anda membuat satu directory khusus dengan

nama yang sudah anda kususkan, “dargombes” atau nama yang lain yang mudah untuk diingat.

Hal ini akan lebih baik bagi anda untuk membiasakan bekerja secara rapi dan tidak mencampur

program yang anda buat dengan program orang lain. Untuk itu Arahkan pointer mouse anda pada

kotak bertanda … yang ada disebelah kanan tanda panah kebawah (yang menunjukkan folder

yang sedang aktif). Pilih new directory, selanjutnya ketikkan “dargombes”, dan diikuti dengan

click Ok.

Gambar 3. Membuat Folder baru tempat program

Page 7: 125848955 Diktat Matlab Unikom

7

4.3 Memulai Perintah Sederhana

Langkah kita yang pertama adalah dengan menentukan variable scalar dengan cara melakukan

pengetikan seperti berikut:

» x = 2 (selanjutnya tekan “Enter”)

x =

2

» y = 3

y =

3

» z = x + y

z =

5

Tidak terlalu menjadi masalah bagi anda? Saya percaya anda tidak mengalami kesulitan, sebab

anda adalah orang yang sangat cerdas.

Nah bagaimana dengan yang satu berikutnya ini? Disini kita mulai dengan mendefinisikan dua

buah vector, yaitu vector x dan vector y:

» x = [1 2 3]

x =

1 2 3

» y = [4 5 6]

y =

4 5 6

Selajutnya ketik:

>> y(1)

ans =

4

dan ulangi untuk y(2) and y(3).

Matlab menggunakan integer positif untuk index array. Elemen pertama adalah y(1), elemen

kedua adalah y(2), dan seterusnya. Nol atau bilangan negatif tidak diperbolehkan untuk indek

array. Sekarang kita jumlahkan keduanya: » x+y

ans = 5 7 9

dan sekarang hitung inner product:

» x*y'

ans = 32

Jawabannya adalah 1*4 + 2*5 + 3*6 = 32! Catat, bahwa y' adalah transpose pada y dan

merupakan suatu vector kolom. Untuk memeriksanya, ketikkan perintah berikut:

>> y'

ans =

4

5

6

Cara lain pada pengkombinasian dua vector adalah diakukan melalui perkalian elementdemi-

element: >> x.*y

ans = 4 10 18

Jawabannya adalah 1*4=4 2*5=10 3*6=18.

Page 8: 125848955 Diktat Matlab Unikom

8

Catat periode sebelum perkalian simbol. Sekarang kita dapat mendefinisikan suatu matrix:

» A = [1 2 3

4 5 6

7 8 9];

Catat bahwa matrik tidak diulang kalau kita menggunakan semi colon. Kita sekarang kalikan A

dengan transpose dari x:

» A*x'

ans = 14

32

50

Sekarang kita harus mentranspose x untuk memenuhi perkalian suatu matrik dan suatu vector

kolom. Matrik-matrik ini dapat juga dikalikan satu sama lain diantara mereka:

» B = [1 2 3 4

5 6 7 8

7 6 5 4];

» A*B

ans =

32 32 32 32

71 74 77 80

110 116 122 128

Jawabannya adalah 1*1=1 2*5=10 3*7=21, sehingga baris 1 kolom 1= 1+10+21=32, 1*2=2

2*6=12 3*6=18, sehingga baris 1 kolom 2= 2+12+18=32 dst. Sedangkan untuk baris 2 mariks A

dikalikan dengan setiap elemen pada kolom mariks B lalu dijumlahkan (sama seperti yang ada

diatas) dst.

Sekarang coba anda lakukan penjumlahan antara A dan B:

» A+B

??? Error using ==> + Matrix dimensions must agree.

Baiklah, kita tidak dapat menambah suatu matrik 3 kali 3 dengan matrix 3 kali 4 , dan Matlab akan

mendeteksi dimensi yang mismatch dan selanjutnya memeberikan pesan error. Sekarang kita cari

cara lain untuk mendefinisikan matrik dan vektor. Sebagai contoh suatu matrik nol dengan

dimensi 3 baris dan 6 kolom dapat dinyatakan sebagai:

>> zeros(3,6)

ans =

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

tentu saja jika anda tambahkan suatu ";" setelah zeros (3,6), jawabannya tidak akan ditampilkan di

layar monitor anda. Angka pertama, 3 menunjukkan jumah baris, sedangkan angka kedua, 6,

adalah jumlah kolom. Kita dapat pula melakukan hal yang sama untuk menampilkan angka satu

seperti

berikut:

>> ones(3,6)

ans =

1 1 1 1 1 1

1 1 1 1 1 1

1 1 1 1 1 1

Page 9: 125848955 Diktat Matlab Unikom

9

Pendefinisian Vektor-vektor Besar

Suatu vektor 1 kali 100 yang menyusun sample pada sinyal cosinus dapat dibangkitkan dengan

>> x = cos(0.1*pi*(0:99));

Untuk membangkitkan suatu "ramp" dari 1 sampai 50 coba:

>> x = [1:1:50];

bilangan kedua mengindikasikan step kenaikan dari dari 1 sampai 50. Untuk membangkitkan

suatu fungsi "ramp" dari 1 sampai 50 coba berikut ini:

>> x = [1:1:50];

Ketika anda tidak memasukkan angka kedua pada perintah diatas, maka secara otomatis (default)

step kenaikan ditetapkan bernilai “1”:

>> x = [1:50];

Anda bisa juga secara khusus mendefinisikan suatu rentang nilai pada x sebagai berikut::

>> x(51:100) = [50:-1:1]

Ini merupakan metode yang sangat bermanfaat untuk mensepsifikasi nilai “waktu” untuk

penggambaran. Sebagai contoh, ditetapkan interval sampling dalam contoh diatas adalah 1 detik.

Selanjutnya anda dapat mendefisnisikan seperti berikut:

>> time = [0:0.001:0.099];

4.4 Penggambaran Grafik

Salah satu kelebihan dari Matlab adalah kemudahan dalam mengolah grafik. Sehingga anda tidak

perlu kesulitan untuk melihat suatu respon system, misalnya pada kasus melihat bentuk sinyal

dalam domain waktu anda cukup mengikuti langkah berikut. Sekarang ketikkan:

>> time = [0:0.001:0.099];

>> x = cos(0.1*pi*(0:99));

>> plot(time,x)

>> xlabel('time (msec)')

>> ylabel('x(t)')

ini akan menghasilkan gambar seperti berikut:

Gambar 4. Contoh tampilan grafik sederhana dengan perintah plot

Page 10: 125848955 Diktat Matlab Unikom

10

Sedangkan cara untuk menampilkan sederetan nilai fungsi waktu diskrit adalah dengan

menggunakan perintah "stem". Dari contoh deretan perintah coba anda rubah beberapa bagian

dengan perintah berikut:

>> stem(time,x)

>> xlabel('time (msec)')

>> ylabel('x(t)')

Apakah hasilnya seperti berikut ini?

Gambar 5. Contoh tampilan grafik dengan perintah stem

4.5 Menyusun Progam Sederhana

Anda dapat mengedit suatu file text yang tersusun dari beberapa perintah Matlab. Ini dapat

dilakukan dengan menekan double-click pada icon "New M-File" icon in the Matlab toolbar.

Gambar 6. Langkah awal menyusun program sederhana

Selanjutnya anda akan mendapatkan sebuah tampilan Matlab Editor yang masih kosong seperti

ini.

Gambar 7. Tampilan Matlab Editor tempat membuat program.

Page 11: 125848955 Diktat Matlab Unikom

11

Selanjutnya anda buat program seperti pada contoh sebelumnya:

Gambar 8. Contoh penulisan program pada Matlab Editor

Gambar 9. Cara menyimpan dan mengeksekusi program anda

Lanjutkan dengan menekan toolbar Debug, dan jangan lupa anda pilih Save anda Run. Disitu anda

harus menuliskan nama program. Anda tuliskan coba_1, secara otomatis akan menjadi file

coba_1.m dan akan anda lihat tampilan hasilnya. Seperti apa ya?

Program kedua anda

Cobalah untuk membuat program seperti berikut ini pada Matlab editor, dan jangan lupa anda

simpan dengan nama coba_2

x(1:52) = [0 0 1:1:50]; x(53:102) = [50:-1:1];

h = [1 2];

for n = 3:101,

y(n) = 0;

for m = 1:2,

y(n) = y(n) + h(m)*x(n-m);

end

end

plot(y)

Hasil apa yang anda dapatkan ?

Dalam hal ini anda harus memahami arti setiap perintah yang anda tuliskan dalam Matlab, tidak

ada salahnya anda bertanya kepada instruktur apa arti perintah-perintah tersebut.

Program ketiga anda

Satu contoh lain program untuk for adalah pembangkitan gambar seperti berikut.

%File Name:coba_3.m

Page 12: 125848955 Diktat Matlab Unikom

12

n=201;

delx=10/(n-1);

for k=1:n

x(k)=(k-1)*delx;

y(k)=sin(x(k))*exp(-

0.4*x(k));

end

%plot(x,y)

plot(x,y,'linewidth',4)

title('Grafik yang

pertama')

xlabel('x');ylabel('y');

Bagiamana hasilnya?

Gambar 10. Tampilan program grafik ketiga

4. 6. Fungsi dalam Matlab

Matlab juga mampu untuk menuliskan fungsi yang didefinisikan oleh pemakainya. Buat sebuah

fungsi dengan menuliskan program berikut ini:

function y = x2(t)

y = t^2;

Anda simpan dengan nama "x2.m" selanjutnya anda dapat memanfaatkan fungsi tersebut melalui

Matlab line command dengan cara berikut:

>>t=0:1:10;

>> y_2=x2(t)

Hasilnya adalah seperti berikut:

y_2 =

0 1 4 9 16 25 36 49 64 81 100

Anda bisa juga memanggil fungsi tersebut melalui program pada panggil_1.m file yang anda buat

seperti berikut:

t=0:1:10;

y_2=x2(t)

Hasilnya adalah sama seperti menggunakan command line window.

TUGAS

1. Dari contoh-contoh program yang sudah anda jalankan, coba berikan penjelasan arti setiap

perintah terhadap output yang dihasilkannya.

2. Coba anda cari bagaimana cara menampilkan grafik untuk tampilan tiga dimensi dan grafik

polar.

3. Bagaimana cara menampilkan lebih dari satu persamaan dalam satu grafik? Misalnya anda

memiliki dua fungsi sinus yang berbeda fase. Fungsi pertama anda tampilkan, lalu anda

lanjutkan menampilkan fungsi kedua, dengan catatan tamplan pada fungsi pertama tidak boleh

hilang.

4. Bagaimana cara menampilkan lebih dari satu grafik dalam satu tampilan? Misalnya anda

gunakan fungsi pada soal ke-3, satu fungsi ditampilkan diatas dan fungsi lainya di bagian

bawah.

5. Bagimana cara menampilkan dua fungsi diman masing-masing fungsi disajikan dalam grafik

berbeda. Misalnya anda gunakan contoh kasus pada soal ke-3, fungsi pertama anda tampilkan

pada figure (1), sementara fungsi kedua anda tampilkan pada figure (2).

Page 13: 125848955 Diktat Matlab Unikom

13

MODUL 2

Pemrograman Matlab

Kontrol program

Matlab bisa berlaku seperti bahasa pemrograman C ataupun pascal yang mempunyai

struktur kontrol program, biasanya pemrograman dengan matlab memerlukan lebih dari satu

baris dan memungkinkan untuk didokumentasikan dalam m-file, kontrol program ini

digunakan untuk memperbaiki tampilan atau membuat tampilan sesuai yang kita inginkan.

Dalam bagian dibahas sebagian kontrol program yang diperlukan dalam pemrograman

menggunakan matlab :

1. loop for

Loop for meungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang tetap.

Bentuk umum dari loop for adalah :

. for x= array

statement

end

untuk tiap iterasi, x diisi dengan kolom array berikutnya, yaitu dalam iterasi ke-n dalam loop,

x = array(:,n).

contoh 1 :

>>for n = 1 : 10

x(n)=sin(n*pi/10);

end

>> x

x =

Columns 1 through 8

0.3090 0.5878 0.8090 0.9511 1.0000

0.9511 0.8090 0.5878

Columns 9 through 10

0.3090 0.0000

contoh 2 :

> for i=1:5

disp('Ini hasil looping 5 kali');

end

Ini hasil looping 5 kali

Ini hasil looping 5 kali

Ini hasil looping 5 kali

Ini hasil looping 5 kali

Ini hasil looping 5 kali

2. loop while

loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu sejumlah, tetapi loop

while mengerjakan sekelompok perintah yang diulang secara tidak terbatas. Bentuk umum

loop while adalah

Page 14: 125848955 Diktat Matlab Unikom

14

while ekpresi

statement

end

semua elemen yang dieksekusi diantara while dan end dan harus bernilai benar.

Contoh :

>> x=0;

>> while x<5

disp('Diulang 5 kali');

x=x+1;

end

Diulang 5 kali

Diulang 5 kali

Diulang 5 kali

Diulang 5 kali

Diulang 5 kali

3. Kontruksi if-else-end

Seringkali sederetan perintah harus dikerjakan dengan didasarkan pada hasil tes rasional.

Dalam bahasa pemrograman, logika ini dikerjakan dengan variasi kontruksi if-else-end.

Bentuk paling sederhana kontruksi if-else-end adalah : If ekpresi

Pertintah

End

Contoh:

>> angka=-4;

>> if angka > 0

disp('nilai nya adalah positif');

else

disp('nilainya adalah negatif');

end

nilainya adalah negatif

4. Control Flow

Untuk mengontrol flow dari perintah, pembuat MATLAB mensuplai peralatan programmer yang

dapat digunakan untuk menulis computer code.

_ the for loops

_ the while loops

_ the if-else-end constructions

_ the switch-case constructions

Mengulang dengan loop for Syntax nya adalah

for k = array

commands

end

For loop dapat berjaring misalkan

H = zeros(5);

for k=1:5

for l=1:5

H(k,l) = 1/(k+l-1);

end

end

Page 15: 125848955 Diktat Matlab Unikom

15

H

H =

1.0000 0.5000 0.3333 0.2500 0.2000

0.5000 0.3333 0.2500 0.2000 0.1667

0.3333 0.2500 0.2000 0.1667 0.1429

0.2500 0.2000 0.1667 0.1429 0.1250

0.2000 0.1667 0.1429 0.1250 0.1111

Matriks H diebut Hilbert Matrix. Perintah pertama adalah untuk membuat ruang pada memori

komputer untuk matriks yang akan mengembang.

Mengulang loop dengan while Syntax nya adalah

while expression

statements

end

Misalkan angkaπdibagi dua. Hasil nya kemudian dibagi dua lagi. Proses ini diteruskan sampai

harganya lebih kecil atau sama dengan 0.01. Berapa angka dari proses terakhir yang lebih dari

satu?

q = pi;

while q > 0.01

q = q/2;

end

q

q =

0.0061

Konstruksi if-else-end

if expression

commands

end

atau

if expression

commands (evaluated if expression is true)

else

commands (evaluated if expression is false)

end

atau

if expression1

commands (evaluated if expression 1 is true)

elseif expression 2

commands (evaluated if expression 2 is true)

elseif …

.

.

.

else

commands (executed if all previous expressions evaluate to false)

end

Chebyshev polynomial Tn(x)=0,1,… adalah hal yang penting dalam analisis numeric.

Didefinisikan secara recursive sebagai berikut.

Page 16: 125848955 Diktat Matlab Unikom

16

Tn(x) = 2xTn – 1(x) – Tn – 2(x), n = 2, 3, … , T0(x) = 1, T1(x) = x.

function T = ChebT(n)

% Coefficients T of the nth Chebyshev polynomial of the first kind.

% They are stored in the descending order of powers.

t0 = 1;

t1 = [1 0];

if n == 0

T = t0;

elseif n == 1;

T = t1;

else

for k=2:n

T = [2*t1 0] - [0 0 t0];

t0 = t1;

t1 = T;

end

end

coeff = ChebT(3)

coeff =

4 0 -3 0

Maka: T3(x) = 4x3 – 3x.

M-Files

File yang terdiri dari kode komputer disebut m-files. Terdapat beberapa m-files yaitu: script files

dan function files. Script files tidak perlu menyertakan input argument atau output argument.

Function file harus menyertakan input argumen atau output arugumen.

Untuk membuat m-file

Click File lalu New dan M-File

Save file pertama dengan nama misalkan graph_pertama.m

Ini adalah contoh file script

% Script file graph_pertama.

x = pi/100:pi/100:10*pi;

y = sin(x)./x;

plot(x,y)

grid

Tanda % adalah komentar. Seluruh komentar tidak dihiraukan oleh MATLAB.

Berikut adalah contoh file function

function [b, j] = descsort(a)

% Fungsi descsort menyusun secara menurun, array a

% Output parameter j merupakan tempat asal angka di array b dari

% array a.

[b ,j] = sort(-a);

b = -b;

Fungsi ini menyertakan satu input argument, sebuah array angka riil, dan menyusun array yang

berurutan untuk mendapatkan array b dari array a. Fungsi built-in MATLAB digunakan dalam hal

Page 17: 125848955 Diktat Matlab Unikom

17

ini adalah sort. Fungsi ini menyusun array secara menaik. Beberapa trik yang digunakan

memperbolehkan kita untuk menyusun array angka secara menurun.

Untuk mendemonstrasikan fungsi dari function yang dibahas,

a = [pi –10 35 0.15];

[b, j] = descsort(a)

b =

35.0000 3.1416 0.1500 -10.0000

j =

3 1 4 2

Jika dscsort digunakan tanpa output argument, maka tempat asal angka akan hilang.

descsort(a)

ans =

35.0000 3.1416 0.1500 -10.0000

Fungsi Inline dan Perintah feval

MATLAB mempunyai perintah inline untuk mendefinisikan inline functions dalam Command

Window. Misalkan:

f = inline('sqrt(x.^2+y.^2)','x','y')

f =

Inline function:

f(x,y) = sqrt(x.^2+y.^2)

Maka dapat dievaluasi

f(3,4)

ans = 5

Dapat juga digunakan memecahkan persoalan dalam dua process. Misalkan :

A = [1 2;3 4]

A = 1 2

3 4

dan

B = ones(2,2)

B = 1 1

1 1

Maka

C = f(A, B)

C =

1.4142 2.2361

3.1623 4.1231

Untuk mengeksekusi fungsi yang dispesifikasikan oleh string diperlukan perintah feval seperti

dibawah ini

feval('functname', input parameters of function functname)

Misalkan code m-file myclm dan isint secara bersamaan Save m-file:

function c = mylcm(a, b)

% The least common multiple c of two integers a and b.

if feval('isint',a) & feval('isint',b)

Page 18: 125848955 Diktat Matlab Unikom

18

c = a.*b./gcd(a,b);

else

error('Input arguments must be integral numbers')

end

Buka M-file lain dan save isint.

function k = isint(x);

% Check whether or not x is an integer number.

% If it is, function isint returns 1 otherwise it returns 0.

if abs(x - round(x)) < realmin

k = 1;

else

k = 0;

end

gcd (greatest common divisor) merupakan function built-in. Perintah feval digunakan dua kali

pada baris kedua. Dia mengecek apakah kedua input argument adalah integer.

Aturan Trapezoidal dengan bentuk koreksi sering digunakan untuk integrasi numeric dari fungsi

yang terdiferensiasi pada interval integrasi.

dengan h = b – a. Formula ini sangat mudah dimplementasikan di MATLAB

function y = corrtrap(fname, fpname, a, b)

% Corrected trapezoidal rule y.

% fname - the m-file used to evaluate the integrand,

% fpname - the m-file used to evaluate the first derivative

% of the integrand,

% a,b - endpoinds of the interval of integration.

h = b - a;

y = (h/2).*(feval(fname,a) + feval(fname,b))+ (h.^2)/12.*( ...

feval(fpname,a) - feval(fpname,b));

Misalkan

a = [0 0.1];

b = [pi/2 pi/2 + 0.1];

y = corrtrap('sin', 'cos', a, b)

y =

0.9910 1.0850

OPERATOR LOGIKA

MATLAB menyediakan operasi logika dan relasional, hal ini diperlukan untuk menjawab

pertanyaan benar atau salah dan salah satu manfaat yang penting dari kemampuan ini adalah

untuk mengontrol urutan eksekusi sederetan perintah MATLAB (biasanya dalam M-File)

berdasarkan pada hasil pertanyaan benar/salah.

Sebagai masukan pada semua ekpresi relasi dan logika , MATLAB menganggap semua angka

tidak nol sebagai benar, nol sebagi salah. Hasil dari semua ekspresi logika relasi dan logika

adalah satu untuk benar dan nol untuk salah dengan tipe array logika yaitu hasilnya memuat

bilangan 1 dan 0 yang tidak saja dapat digunakan untuk statemen matematika akan tetapi

dapat juga untuk pengalamatan

Page 19: 125848955 Diktat Matlab Unikom

19

Floor, Ceil, Fix, Round

Contoh:

randn('seed', 0) % This sets the seed of the random numbers generator to zero T = randn(5)

T =

1.1650 1.6961 -1.4462 -0.3600 -0.0449

0.6268 0.0591 -0.7012 -0.1356 -0.7989

0.0751 1.7971 1.2460 -1.3493 -0.7652

0.3516 0.2641 -0.6390 -1.2704 0.8617

-0.6965 0.8717 0.5774 0.9846 -0.0562

A = floor(T)

A = 1 1 -2 -1 -1

0 0 -1 -1 -1

0 1 1 -2 -1

0 0 -1 -2 0

-1 0 0 0 -1

B = ceil(T)

B = 2 2 -1 0 0

1 1 0 0 0

1 2 2 -1 0

1 1 0 -1 1

0 1 1 1 0

C = fix(T)

C = 1 1 -1 0 0

0 0 0 0 0

0 1 1 -1 0

0 0 0 -1 0

0 0 0 0 0

D = round(T)

D = 1 2 -1 0 0

1 0 -1 0 -1

0 2 1 -1 -1

0 0 -1 -1 1

-1 1 1 1 0

Page 20: 125848955 Diktat Matlab Unikom

20

Operasi Array

Semua komputasi yang dikerjakan sejauh ini hanya melibatkan bilangan tunggal yang

disebut skalar. Opeasi skalar memang merupakan dasar matematika. Namun jika dalam sesaat

kita ingin melakuakan operasi yang sama pada beberapa bilangan, perulangan operasi skalar

akan menghabiskan waktu dan tentu saja tidak praktis. Untuk mengatasi masalah ini matlab

menyediakan operasi pada array data.

Array Sederhana

Perhatikan masalah saat kita diharuskan untuk menggambar grafik dengan fungsi y = sin(x) ;

0 ≤ x ≤ π , tidak mungkin kita menghitung semua titik yang kita perlukan secara satu persatu.

Sintaks sederhana untuk menunjukan semua titik tersebut adalah

>> x=0:20:180

x =

0 20 40 60 80 100 120 140 160 180 >> y=sin(x)

y =

Columns 1 through 8

0 0.9129 0.7451 -0.3048 -0.9939 -0.5064 0.5806 0.9802

Columns 9 through 10

0.2194 -0.8012

Pada tulisan x=0:20:180 dimaksudkan dengan :

x merupakan variabel yang menampung array

0 merupakan batas bawah dari array

10 merupakan selang atau interval

180 merupakan batas atas dari array

Pada tulisan y=sin(x) dimaksudkan dengan :

y merupakan variabel array yang menampung perhitungan dengan sin x dimana x dari 0

sampai 180 dengan interval 10

Jika kita hanya membutuhkan nilai dari interval tertentu maka kita bisa menuliskannya

dengan sintaks:

>> x(4) % elemen array ke 4

ans = 60

Maksudnya adalah nilai dari x yang ke empat dari array x adalah 60

>> y(5) % nilai array ke 5

ans = -0.9939

maksudnya adalah nilai array y yang ke 5 adalah -0.9939 kita juga bisa menuliskan nilai array

tertentu dengan menunjukan indeksnya contoh:

>> x(2:4)

ans = 20 40 60

maksudnya adalah semua nilai dengan indeks 2 sampai dengan 4 pada array x , 2:4 berarti

menghitung dari 2 sampai 5

Page 21: 125848955 Diktat Matlab Unikom

21

Array n dimensi

Array yang kita bahas diatas merupakan array 1 dimensi, gabuangan dari array merupakan

sebuah matriks, sekarang kita akan menuliskan bagaimana menuliskan array dalam n dimensi.

Contoh:

>> A=[1 2 3;4 5 6;7 8 9]

A = 1 2 3

4 5 6

7 8 9

merupakan matriks dengan 3 kolom dengan 3 baris dalam array kita juga bisa memanipulasi

elemen elemen yang ada dalam array tersebut contohnya:

>> A(3,3)=0

A = 1 2 3

4 5 6

7 8 0

maksudnya mengganti elemen 3,3 menjadi 0 untuk mengetahui jumlah array kita gunakan

sintaks size: contoh:

>> size(A)

ans = 3 3

maksudnya matriks A merupakan matriks 3 x 3

Menciptakan matriks B dengan urutan baris A yang dibalik

>> B=A(3:-1:1,:)

B = 7 8 0

4 5 6

1 2 3

mengganti semua elemen baris ke 2 dari matriks B dengan 0 maka sintaksnya:

>> B(2,:)=0

B = 7 8 0

0 0 0

1 2 3

Untuk membuat transpose dari matriks B kita gunakan sintaks:

>> E=B'

E = 7 0 1

8 0 2

0 0 3

sehingga bentuk dari perkalian manual yang ada dimatriks ada yang langusng digunakan pada

sintaks matlab.

Page 22: 125848955 Diktat Matlab Unikom

22

Contoh Penggunaan Aplikasi Array

Problem: Elemen radioaktif polonium mempunyai waktu paruh 140 hari, yang berarti bahwa,

karena radoaktif meluruh, jumlah polonium yang tertinggal setelah 140 hari adalah setengah

dari jumlah semula. Jika dimiliki 10 gram polonium hari ini, berapa banyak yang tersisa pada

akhir setiap minggu selama 10 minggu ?

Penyelesaian : Menggunakan persamaan :

Jumlah_tinggal = jumlah_semula*0.5waktu/waktu_paruh

Untuk masalah ini, solusi dari MATLAB adalah :

>> initial_amount=10;

>> half_life=140;

>> time=7:7:70 %akhir dari 10 minggu pertama

time =

7 14 21 28 35 42 49 56 63 70 >> amount_left=initial_amount*0.5.^(time/half_life)

amount_left =

Columns 1 through 8

9.6594 9.3303 9.0125 8.7055 8.4090 8.1225 7.8458 7.5786

Columns 9 through 10

7.3204 7.0711

Dengan matematika array sangat mudah untuk mengevaluasi suatu ekspresi dengan banyak

nilai untuk satu variabel. Perhatikan bahwa pemangkatan titik .^ digunakan karena kita ingin

menghitung 0.5 yang akan dipangkatkan dengan setiap elemen pada array eksponen. Data ini

dengan mudah digambarkan dengan matlab.

>> plot(time/7,amount_left)

>> xlabel('Jumlah Minggu'),ylabel('Jumlah Polonium tersisa')

hasilnya:

Contoh Perhitungan Konsentrasi dengan Matematika Array

Problem : Sebagai bagian dari suatu proses pembuatan suku cadang di suatu proses

pembuatan suku cadang di suatu pabrik otomatis, suku cadang tersebut dicelupkan ke air

untuk pendinginan, kemudian dicelup dibak air asam untuk membersihkan. Setelah beberapa

lama, konsentrasi larutan asam menurun karena air saat pencelupan bertambah dan larutan

yang terbuang saat suku cadang tadi diambil dari bak. Untuk memelihara kualitas, keasaman

larutan asam tidak boleh kurang dari suatu batas minimum. Dimulai dengan konsentrasi asam

90%. Jika konsentrasi minimum adalah 50%, air yang bertambah ke bak asam adalah 1% dari

volume bak, dan 1 % dari larutan terbuang saat suku cadang dikeluarkan, berapa banyak suku

cadang dapat dicelupkan ke bak air asam sebelum keasaman larutan dalam bak berada di

bawah batas minimum?

Page 23: 125848955 Diktat Matlab Unikom

23

Penyelesaian :

%Script M file example.m

initial_con=90;

min_con=50;

lost=1:10 % 1% sampai 10% dengan kenaikan 1%

n=floor(log(initial_con/min_con)./log(1+lost/100))

stem(lost,n)

xlabel('Persentase yang hilang setiap kali pencelupan')

ylabel('Jumlah Pencelupan')

title('Contoh Pencelupan Bak Air-Asam')

hasil :

>> example

lost = 1 2 3 4 5 6 7 8 9 10

n = 59 29 19 14 12 10 8 7 6 6

Akar akar Persamaan Permasalahan pemecahan persamaan nonlinear sering muncul dari ebrbagai macam persoalan

praktis. Bentuk umum permasalahannya secara sederhana adalah menemukan sebuah nilai

variabel x sedemikian sehingga f(x) = 0, dimana f adalah sembarang fungsi nonlinear x,

sedangkan x merupakan solusi atau akar persamaan ini. Sebelum kita lebih jauh tentang akar

akar persamaan, sebelumnya kita ulas sedikit tentang bagaimana menggambarkan fungsi

Contoh:

Gambarkan fungsi dibawah ini :

1. y=(x – 1)3

(x + 2)2

( x – 3) ; 0 ≤ x ≤ 4

jawab :

% Gambar1.m

x=0:0.1:4;

y=((x + 1).^3).*((x + 2).^2) .*( x - 3);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

Running :

>>gambar1

Page 24: 125848955 Diktat Matlab Unikom

24

Gambar dari fungsi y=(x – 1)3

(x + 2)2

( x – 3) ; 0 ≤ x ≤ 4

Jawab:

% Gambar2.m

x=0:0.1:20;

y=exp(-x/10).*sin(10*x);

plot(x,y)

xlabel('Sumbu x')

ylabel('Sumbu y')

Running :

>>gambar2.m

Untuk persamaan non linear seperti diatas yang melibatkan fungsi transenden, tugas mencari

akar akar merupakan pekerjaan yang cukup sulit apalagi ketika jumlah akar akarnya tidak

diketahui atau mungkin tak terbatas banyak akarnya. (Lihat contoh no 2) . Sebetulnya secara

Page 25: 125848955 Diktat Matlab Unikom

25

sederhana kita bisa mencari titik di x yang berpotongan dengan sumbu y = 0 secara grafik(

solusi grafik merupakan solusi juga) tapi itu masih terlalu kasar dan tidak terlalu akurat

apalagi untuk fungsi fungsi yang tidak diketahui solusinya terletak di x berapa.

Metoda Newton

Metoda ini merupakan solusi persamaan f(x) = 0 berdasarkan pada sifat geometri sederhana

tangen. Metode ini membutuhkan beberapa aprokimasi awal untuk turunan f(x)nya berada

pada daerah yang diinginkan.

Coba akar1 Function[res,it]=fnewton(func,dfunc,x,tol)

% x adalah nilai awal, tol adalah akurasi yang diinginkan

it=0;

xo=x;

d=feval(func,xo)/feval(dfunc,xo);

while abs(d)>tol

x1=xo – d;

it=it+1;

xo=x1;

d=feval(func,xo)/feval(dfunc,xo);

end;

res=xo

kita coba mencari sebuah akar persamaan(x – 1)3

(x + 2)2

( x – 3) = 0 untuk menggunkan

metoda newton kita harus mendefinisikan fungsi dan turunannya sehingga :

function F=f302(x);

F=x.^3 – 10.0*x.^2 + 29.0*x-20.0;

Function F=f303(x);

F=2*x.^2-20*x+29;

Maka kita panggil f newton tadi sebagai berikut :

>>[x,it]=fnewton(‘f302’,’f303’,7,.00005)

x=5.0000

it=6

Page 26: 125848955 Diktat Matlab Unikom

26

Permasalahan yang sering muncul dalam mencari akar adalah :

1. Mencari aprokimasi awal yang baik

2. Fungsi berkondisi „sakit‟

3. Memutuskan pada kriteria konvergensi yang paling cocok

4. Diskontinuitas pada persamaan yang dipecahkan

Fungsi fZero

Beberapa metoda di pencarian akar ini punya kelebihan dan kekurangannya. Metode Brent

mengkombinasikan interpolasi kuadratik inversi dengan bisection untuk mendapatkan metode

yang powerfull yang terbukti cukup sukses yang mempunyai jangkauan yang luas pada

permasalahan yang cukup sulit.

Variasi metode ini secara langsung tersedia pada matlab yaitu fzero. Misalnya untuk

dengan toleransi 0.00005

Jawab

function F=f307(x);

F=(exp(x)-cos(x)).^3;

%file utama

x=-4:.0:0.5;

plot(x,f307(x));grid on;

xlabel('Sumbu X');ylabel('Sumbu Y');

root=fzero('f307',1.65, 0.00005);

fprintf('Akar persamaan ini adalah %6.4f \n',root);

Deferensial dan Pengintegralan

Diferensial dan Integral merupakan operasi fundamental dalam kalkulus dan hampir setiap

bidang matematika, sains dan teknik. Menentukan turunan fungsi secara analitik mungkin

menyulitkan meskipun relatif langsung.

Pembalikan dari proses ini akan menentukan integral fungsi, tapi lebih sering sulit jika secara

analitik atau bahkan tidak mungkin.

Dalam Matlab, diferensial untuk fungsi polinom adalah relatif mudah. Misalnya f(x) = x5

+

2x4

+ 5x2

+ 7x + 3 maka ambilah koefisien koefisiennya.

Page 27: 125848955 Diktat Matlab Unikom

27

Contoh:

>> g=[1 2 5 7 3]

g =

1 2 5 7 3 >> h=polyder(g)

h =

4 6 10 7

Bentuk-bentuk deferensial lain juga bisa diperoleh apalag jika menggunakan symbolyc math

toolbox. Tapi tidak setiap matlab dilengkapi dengan toolbox ini. Namun itu tidak masalah,

kita akan coba membuat sendiri penyelesaiannya dengan memanfaatkan deret Taylor.

Diferensial Numerik

function q=diffgen(func,n,x,h);

if ((n=1)|(n==2)|(n==3)|(n==4))

c=zeros(4,7);

c(1,:)=[ 0 1 -8 0 8 -1 0];

c(2,:)=[0 -1 16 -30 16 -1 0];

c(3,:)=[1.5 -12 19.5 0 -19.5 12 -1.5];

c(4,:)=[-2 24 -78 112 -78 24 -2];

y=feval(func,x+ [-3:3]*h);

q=c(n,:)*y' ; q = q/(12*h^n);

else

disp('n harus 1, 2, 3 atau 4 ');break

end

Penggunaan fungsi diatas:

Jika kita mempunya y = cos(x) dan kita akan menghitung turunan kedua dengan x = 1.2

dengan h atau ketelitian 0.01 maka dituliskan:

>> hasil=diffgen('cos',2,1.2,.01)

hasil =

-0.3624

Jika kita ingin menghitung sebuah diferensial disuatu titik maka kita harus mendefinisikan

fungsinya terlebih dahulu.

Integrasi Numerik

Integral biasanya didefinisikan sebagai proses penjumlahan tetapi juga diinterpretasikan

sebagai daerah dibawah kurva y = f(x) dari a ke b

daerah diatas x dihitung positif sementara dibawah x dihitung negatif. Banyak metode

numerik untuk integrasi didasarkan pada impretasi untuk mendapatkan aprokimasi

integralnya. Misalnya fungsi trapz berdasarkan impretasi bangunan trapesium.

Kita akan mencoba menghitung integral dengan berbagai metoda numrik untuk menghitung

integral fungsi

Jawab:

Pertama kita buat dulu fungsi dari persamaan diatas

Page 28: 125848955 Diktat Matlab Unikom

28

function y=humps(x)

y=1./(x-3).^2+.01)+1./((x-9).^2+.04)-6;

1. Mengitung menggunakan trapz >> x=-1:.17:2;

>> y=humps(x);

>> area=trapz(x,y)

area =

-16.6475

2. Menghitung menggunakan quad >> x=-1:.17:2;

>> y=humps(x);

>> area=quad('humps',-1,2)

area =

-17.2104

Permasalahan yang mungkin muncul adalah :

1. Fungsi kontinu pada daerah integral tetapi turunannya diskontinu atau singular

2. Fungsi diskontinue pada daerah integrasi

3. Fungsi mempunyai singularitas pada daerah integrasi

4. Daerah integrasi tak berhingga

TUGAS

1. Dari contoh-contoh program yang sudah anda jalankan, coba berikan penjelasan arti setiap

perintah terhadap output yang dihasilkannya.

2. Tuliskan matlab function d = dsc(c) yang menjadikan array angka c menjadi angka d

yang merupakan array c tanpa angka yang saling berdekatan. Misalkan c = [1 2 2 2 3 1]

maka d = [1 2 3 1].

3. Dalam masalah statistik, biasanya dihitung rata-rata aritmatika terbeban dari array x.

Rata-rata aritmatika terbeban didefiniskan sebagai:

Tuliskan MATLAB function y = wam(x, w) dari definisi di atas. Tambahkan pesan error

jika besar w dan x tidak sama.

4. Tuliskan MATLAB function p = fact(n) yang mengambil integer non negatif dari

n dari fungsi factorial n!=1*2*…*n. Tambahkan pesan error ke code anda jika

parameter input merupakan angka negatif

Page 29: 125848955 Diktat Matlab Unikom

29

MODUL 3

SINYAL DAN SISTEM

1. Sinyal Elementer

a. Sinyal Unit Step

>> t=[-1:0.001:1];

>> ustep=heaviside(t);

>> plot(t,ustep, 'LineWidth',10)

Gambar 1.a.1

Bila ingin dikalikan dengan sinyal lain, misal untuk membentuk sinyal ramp, gunakan

perkalian dot ( .* )

b. Sinyal Delta Dirac

>> udirac=dirac(t);

>> plot(t,udirac, 'LineWidth',2)

>>ydirac=[1 zeros(1,99)]’; %dirac

dengan 100 sampel

>>ystep=ones(1,100)’;

>>y=t’

>>y=(t. ^ 2)’

Gambar 1.b.1

Page 30: 125848955 Diktat Matlab Unikom

30

c. Delta Dirac sebagai Differensial dari Unit Step dan Unit Step sebagai Integral

dari Delta Dirac

>> syms k a t

>> u=k*sym('heaviside(t-a)')

u =

k*heaviside(t-a)

>> d=diff(u)

d =

k*dirac(-t+a)

>> int(d)

ans =

k*heaviside(t-a)

2. Transformasi Laplace

Definisi Tranformasi Laplace

Sifat Transformasi Laplace

Page 31: 125848955 Diktat Matlab Unikom

31

Transformasi Laplace untuk Beberapa Fungsi yang Umum Digunakan

Page 32: 125848955 Diktat Matlab Unikom

32

Penggunaan Laplace

Misal, dalam suatu analisis sistem dengan transformasi Laplace, didapat sinyal

keluaran memiliki memiliki bentuk dalam domain kompleks sebagai berikut.

Untuk mendapatkan nilai di domain waktu, digunakan fraksionalisasi atau teorema

residu kemudian transformasi balik. Biasanya, setelah dipecah menjadi sejumlah suku

pecahan, transformasi balik menjadi mudah karena bentuknya adalah bentuk umum.

Catatan: Pole adalah nilai yang membuat nilai fungsi menjadi tak berhingga Zero

adalah nilai yang membuat nilai fungsi menjadi nol

Page 33: 125848955 Diktat Matlab Unikom

33

Contoh:

Tentukan Fungsi berikut ini di domain waktu.

Dari Tabel, didapat bahwa

Maka

Dengan Matlab, fungsi yang bisa digunakan adalah factor(polynom),

residue(num,den), ilapace(Fs).

Factor

>> syms s

>> factor(s^3 + 12*s^2 + 44*s + 48)

ans =

(s+4)*(s+2)*(s+6)

Fungsi factor memiliki kekurangan ketika harus memfaktorkan suatu polinom bila ada

akar yang berupa bilangan kompleks. Sebagai gantinya, gunakan fungsi

roots(polynom).

Residue

>> Ns=[3 2];

>> Ds=[1 3 2];

>> [r p k]residue(Ns,Ds)

r =

4

-1

p =

-2

-1

k =

[]

Page 34: 125848955 Diktat Matlab Unikom

34

Ilaplace

>> syms s

>> Fs=(3*s+2)/(s^2+3*s+2);

>> ft=ilaplce(Fs)

ft = 4*exp(-2*t)-exp(-t)

3. Transformasi Fourier

Definisi

Sifat Transformasi Fourier

Page 35: 125848955 Diktat Matlab Unikom

35

Bentuk Transformasi Fourier Fungsi yang Sering Digunakan

Transformasi Fourier dengan Matlab

>> syms t v w x;

>> ft=exp(0.5*(-t^2));

>> Fw=fourier(ft)

Fw =

2^(1/2)*pi^(1/2)*exp(-1/2*w^2)

>> pretty(Fw)

1/2 1/2 2

2 pi exp(- 1/2 w )

>> ft=ifourier(Fw)

ft =

exp(-1/2*x^2)

Page 36: 125848955 Diktat Matlab Unikom

36

4. Transformasi Z

Definisi

Sifat Transformasi Z

Page 37: 125848955 Diktat Matlab Unikom

37

Transformasi Z dari Fungsi yang Sering Digunakan

Contoh:

Gunakan metoda fraksionalisasi untuk mencari inverse z-transform dari fungsi berikut

Solusi

Page 38: 125848955 Diktat Matlab Unikom

38

Dari tabel bentuk umum, didapat

Sehingga

Berikut ini adalah pemeriksaan dengan Matlab

>> syms n z;

>> fn=2*(0.5)^n-9*(0.75)^n+8;

>> Fz=ztrans(fn)

Fz =

4*z/(2*z-1)-12*z/(4/3*z-1)+8*z/(z-1)

>> simple(Fz)

ans =

8*z^3/(2*z-1)/(4*z-3)/(z-1)

>> iztrans(Fz)

ans =

2*(1/2)^n-9*(3/4)^n+8

Page 39: 125848955 Diktat Matlab Unikom

39

I. SINYAL SEBAGAI VEKTOR DAN MATRIKS

Vektor yang merupakan 1 kali n atau n kali 1 matriks dapat digunakan sebagai representasi dari

sampel data sinyal.

Orientasi kolom lebih dipilih dibandingkan orientasi baris pada representasi vektor. Misalkan y

adalah kumpulan tiga sinyal yang merupakan fungsi dari x:

>> x=[4 3 7 -9 1];

>>x=x’

>>y=[x 2*x x*pi];

MATLAB mempunyai variasi fungsi untuk mensintesis sinyal. Dimulai dengan vektor yang

merepresentasikan waktu.

Contoh 1:

Misalkan diinginkan untuk mensintesis sinyal dengan 1000 Hz frekuensi sampel, maka,

>>t=0:0.001:1

1001 elemen ini merupakan baris vektor yang merepresentasikan waktu yang berjalan dari nol

sampai satu detik dengan kenaikan 1 milidetik.

Sampel sinyal y terdiri dari dua sinusoidal, satu pada 0.5 Hz dan satu lagi pada 120 Hz dengan

gain amplitude dua kali. Sinyal dapat direpresentasikan sebagai berikut:

>>y=sin(2*pi*50*t) + 2* sin(2*pi*120*t);

Dapat pula dibangun white noise pada sinyal, dan memplot 50 titik pertama dengan

>> yn = y + 0.5*randn(size(t));

>> plot(t(1:50),yn(1:50));

Save Filenya

Berikut ini adalah perintah yang membangkitkan sinyal delta (dirac), step, dan ramp

>>ydirac=[1 zeros(1,99)]’; %dirac dengan 100 sampel

>>ystep=ones(1,100)’;

>>y=t’

>>y=(t. ^ 2)’

II. ANALISIS FILTER DAN IMPLEMENTASI

Toolbox dari MATLAB mempunyai fungsi untuk mendisain filter, baik analog maupun digital,

dan fungsi untuk memfilter data. Filter juga dapat digunakan untuk merepresentasikan dinamik

dari suatu sistem. Dalam hal ini, disain filter merupakan berntuk invers: Diberikan input dan

output, dapat dicari filter yang menghasilkan relasi input output yang mirip.

II.1 Implementasi Filter dalam Time Domain

Toolbox MATLAB memberikan fungsi yang mengimplementasikan operasi filter domain waktu:

yaitu fungsi filter (help filter).

Fungsinya adalah: y=filter(b,a,x)

Dengan x adalah vektor data dan b dan a adalah vektor filter dan y adalah hasil dari filter.

Struktur filter digambarkan sebagai tapped-delay line yang digambarkan dalam persamaan

diferensial:

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)

- a(2)*y(n-1) - ... - a(na+1)*y(n-na)

Page 40: 125848955 Diktat Matlab Unikom

40

Contoh 2:

Misalkan untuk mendapatkan dan mengeplot n-titik respon impuls yang melewati filter digital

Butterworth orde 10:

n=100;

[b,a]=butter(10,0.5);

x=[1 zeros(1,n-1)];

y=filter(b,a,x);

figure(1), plot(y)

Save Filenya

II.2 Implementasi Filter dalam Frekuensi domain

Infinite Impulse Response (IIR) dapat diimplementasikan dalam frekuensi domain dengan

mengalikan Discrete Fourier Transform (DFT) dari sekuen data dengan DFT dari filter (DFT pada

MATLAB dapat dilakukan dengan menggunakan fungsi fft)

n=length(x);

y=ifft ( fft(x) .* fft(b,n) ./ fft(a,n));

figure(2), plot(real(y));

Save Filenya

II.3 RESPON FREKUENSI

Beberapa fungsi yang dapat digunakan adalah

abs fungsi magnitude

angle sudut fasa

freqs response frekuensi Laplace Transform

freqz response frekuensi Transformasi-z

grpdelay group delay

unwrap unwrap phase

Fungsi freqz: [h,w]=freqz(b,a,n) memberikan n-titik respon frekuensi, H(ejw

) dari filter digital

jw -jw -jmw

jw B(e) b(1) + b(2)e + .... + b(m+1)e

H(e) = ---- = ------------------------------------

jw -jw -jnw

A(e) a(1) + a(2)e + .... + a(n+1)e

Magnitude dan phase dari filter dapat diekstrak dari bilangan kompleks response frekuensi,

dengan fasa dalam derajat,

[h,w]=freqz(b,a,n)

m=abs(h)

p=angle(h)

figure(1), semilogy(w,m),

figure(2), plot(w,p*180/pi)

Group delay adalah ukuran delay rata-rata dari filter sebagai fungsi dari frekuensi. Didapatkan dari

turunan pertama respon phase dari filter. Fungsi dari Group delay adalah

[gd,w]=grpdelay(b,a,n)

gd=grpdelay(b,a,128);

[h,w]=freqz(b,a,128);

pd=-unwrap(angle(h))./w;

plot(w,gd,w,pd)

Page 41: 125848955 Diktat Matlab Unikom

41

TUGAS

1. Turunkan koefisien filter untuk rangkaian dibawah ini dan gunakan untuk mencari gambar

respon input step pada rangkaian tersebut. Dengan menggunakan

a. implementasi time-domain dan

b. frekuensi domain.

+

_

1 KΩ

1 nF Vin=unit step

Vout

Page 42: 125848955 Diktat Matlab Unikom

42

MODUL 4

ANALISIS DAN DESAIN FILTER ANALOG

Filter analog berada pada rentang frekuensi kontinu. Diklasifikasikan sebagai low

pass, high pass, band pass, dan stop band. Karakteristik idealnya adalah seperti

gambar berikut:

Contoh:

Respon frekuensi menggunakan MATLAB antara magniotude |G(jw)| versus

frekuensi w (radian) dan sudut fasa versus frekuensi w (radian) dengan RC = 1 dapat

dituliskan:

>>

>>

TUGAS 1

Gambarkan respon magnitude |G(jw)| dan sudut fasa terhadap frekuensi untuk

rangkaian dibawah ini dengan RC = 1:

Page 43: 125848955 Diktat Matlab Unikom

43

Disain LPF Filter Analog

Fungsi transfernya

adalah

disebut dengan

aproksimasi all pole

orde dua pada low pass

filter ideal dengan

cutoff frekuensi di wc,

K adalah gain, dan

koefisien a dan b

didapat dari tabel.

Untuk suatu gain K non-inverting, rangkaian di atas memenuhi fungsi transfer dengan

kondisi:

Sehingga

Filter all pole orde 4 dapat dituliskan

didapatkan dari rangkaian di atas yang dikaskade-kan

Page 44: 125848955 Diktat Matlab Unikom

44

Langkah2 Disain (Butterworth Low Pass Filter)

Untuk disain yang praktis rangkaian orde dua, dilakukan langkah2 berikut

Pilih C1 dan C2 standard,

dimasukkan harga koefisien a dan b dari Tabel 11.13,

Pilih gain K dan cutoff frequency wC

Masukkan ke persamaan diatas untuk mendapatkan R1 sampai R4

Contoh:

Disain Butterworth low-pass filter dengan gain K = 2 dan cutoff frequency fc = 1 kHz

(prototype opamp 11.13)

Pilih C1 = C2 = 0,01μF = 10-8.

Dari Tabel a = 1,41421 = √2 dan b = 1

Masukan harga-harga ke persamaan dengan penulisan dalam program

MATLAB sebagai berikut:

TUGAS 2

Buat respon magnitude dari rangkaian di atas menggunakan harga R1 sampai R4 yang

didapat dari contoh di atas. (f = 1:10:5000)

Disain Butterworth Filter Dengan buttap (Butterworth Analog Prototype)

Disain low pass filter dengan 3 pole Butterworth menggunakan buttap dengan

frekuensi cutoff fC = 2KHz atau wC=2πx 2 x 103.

Page 45: 125848955 Diktat Matlab Unikom

45

Contoh:

Menggunakan perintah MATLAB cheb1ap(N,Rp) (chebichev tipe 1) dengan N

adalah banyaknya pole dan Rp adalah ripple di pass band dan lp2hp (low pass to

high pass) untuk mencari fungsi transfer Chebyshev 3 pole tipe 1. fc = 5 KHz

TUGAS III

Gunakan perintah MATLAB buttap dan lp2bp(b,a,W0,Bw) (lowpass to bandpass)

untuk mencari fungsi transfer Butterworth 3 pole dengan pass band frekuensi di 4

KHz dan Bandwidth = 2 KHz. Clue: Help lp2bp.

Page 46: 125848955 Diktat Matlab Unikom

46

MODUL 5

APLIKASI INTERFACE SPTOOLS MATLAB

DALAM MENDESAIN

IIR DAN FIR DIGITAL FILTER

Aplikasi proses sinyal digital yang tersetting adalah filter. Filter berkaitan langsung

dengan manipulasi spektrum sinyal, Untuk membangun sebuah filter digital

dibutuhkan tiga komponen utama yaitu: adder (penambah), multiplier (pengali)

dan delay (penunda). Penambah mempunyai dua input dan satu output yang

hasilnya menambahkan masukan dari kedua input tersebut. Pengali adalah elemen

penguat dan akan mengalikan sinyal input dengan suatu besaran konstanta tertentu.

Penunda akan menunda satu cuplikan yang masuk.

Pengolahan sinyal digital menggunakan transformasi diskrit, transformasi yang sering

digunakan adalah transformasi z yang merupakan prosedur deret sinyal masukan x(n)

menjadi deret sinyal keluaran y(n). Filter digital bekerja berdasarkan data masukan

diskrit dari cuplikan-cuplikan sinyal kontinu, yang kemudian diubah oleh konverter

analog ke digital menjadi data digital biner, data data digital inilah yang nanti dapat

dimanipulasi kinerja dan spektrum sinyalnya dengan prosesor digital. Hasil dari data

digital ini dikembalikan ke dalam bentuk analog bila diinginkan dengan konverter

digital to analog . Penerapannya filter digital pada pengolahan sinyal dapat digunakan

dalam noise reduction, image processing, antialiasing dan menghilangkan

pseudoimages pada multirate processing, matched filtering, osilator digital .

Gambar 1. Proses pengolahan dalam filter digital, dengan pengubahan

Beberapa keunggulan dari filter digital setelah melalui proses pengolahan sinyal

adalah

• Pengaturan frekuensi cuplikan sehingga daerah kerja yang dapat dipilih sangat lebar

(meliputi frekuensi rendah dan frekuensi tinggi). Termasuk frekuensi sangat rendah

sehingga dapat digunakan untuk aplikasi elektronika biomedis.

• Respon fasa yang benar-benar linear.

• Karena menggunakan programmable processor , respon frekuensi dapat dipilih

secara langsung secara otomatis.

• Beberapa singal masukan dapat disimpan untuk keperluan selanjutnya.

• Berkembangnya teknologi pico memungkinkan penggunaan hardware yang lebih

kecil, komsumsi daya yang kecil, menekan biaya produksi, dan single chip.

Dalam implementasi filter digital kita dapat menggunakan block diagram atau

signal flow graph. Seperti yang nampak dalam gambar di bawah ini

Page 47: 125848955 Diktat Matlab Unikom

47

Gambar 2. Block Diagram dan Signal Flow Graph dari tiga elemen utama filter

digital

5.1 Desain IIR dan FIR

Terdapat dua jenis filter digital yang disebabkan karena adanya perbedaan

penggunaan feedback dalam mendesain suatu filter digital. Yang pertama Jenis IIR

(Infinite Impulse Response) yang menggunakan struktur feedback yang sering juga

disebut dengan recursive structure, sedangkan yang kedua Jenis FIR (Finite Impulse

Response) yang tidak menggunakan feedback yang sering disebut dengan non-

recursive structure.

5.2 FIR dan Signal Flow Graph

Dalam desain IIR, sering sekali digunakan pendekatan transformasi bilinear .

Desain ini dimulai dengan fungsi transfer analog filter dan menyajikannya dalam

pemetaan domain s ke domain z. Dengan menggunakan persamaan differensial dapat

ditunjukkan pemetaan dari bidang s ke bidang

dengan transformasi yang dikenal Tustin’s bilinear transformation

Pemetaan ini hasil dari bentuk umum filter IIR dengan sejmulah pole dan zero

sembarang. Respon sistem dan persamaan differensial dari filter ini akan mengikuti

perumusan sebagai berikut, dengan menggunakan operator shift time dari z maka

filter dari H akan dapat direpresentasikan dengan fungsi

Page 48: 125848955 Diktat Matlab Unikom

48

dalam implementasi sptools Matlab dapat digantikan dengan fungsi filter seperti

filter(B,A,x) yang artinya melakukan implementasi H(z)=B(z)/A(z)dari input signal x.

Vektor B mengandung koefisien dari polynomial B(z) dan vector A mengandung

koefisien dari polynomial A(z)

FIR dan signal Low Graph

Proakis, John G. and Manolakis, Dimitris G. Digital Signal Processing: Principles,

Algorithms, and Applications, 3 Edition. Prentice Hall. Upper River, NL, 1996. p.

677

Biran Adrian , Breiner Moshe; MATLAB for engineers , Adison wesley, Wokingham,

England, 1995. p.575 Ingle, Vinay K. and Proakis, John G. Digital Signal

Processing Using Matlab . PWS Publishing Company, 1997. p.183 3

Proakis, John G. and Manolakis, Dimitris G. Digital Signal Processing: Principles,

Algorithms, and Applications, 3 Edition. Prentice Hall. Upper River, NL, 1996. p.

620

Ingle, Vinay K. and Proakis, John G. Digital Signal Processing Using Matlab . PWS

Publishing Company, 1997. p.197 5

5.3 Desain Low Pass Filter

Desain low pass filter digital didesain dengan menggunakan berbagai prototype tiga

jenis filter digital seperti Butterworth , Chebyshev tipe 1 dan elliptic . Filter

optimum dipilih berdasarkan dari implementasi yang diinginkan termasuk tiga kriteria

yang terutama: kompleksitas, respon besran dan respon fasa.

• Frekuensi Cutoff = 1000Hz

• Frekuensi Sample = 8000Hz

• Ripple passband = 0,5dB

• Stopband attenuasi = 60dB

• Band Transisi = 100Hz

Page 49: 125848955 Diktat Matlab Unikom

49

Matlab Code (Chebyshev): % Lowpass digital filter with chebyshev-I analog prototype

%

% Digital Filter specifications:

wp = 0.125*2*pi; % digital passband frequency in Hz (normalized)

ws = 0.1375*2*pi; % digital stopband frequency in Hz (normalized)

Rs = 0.5; % passband ripple in dB

As = 20; % stopband attenuation in dB

% Analog Prototype Spesifications:

Fs = 1; T = 1/Fs;

OmegaP = (2/T)*tan(wp/2); % prewaRs prototype passband frequency

OmegaS = (2/T)*tan(ws/2); % prewaRs prototype passband frequency

% Analog Chebyshev-1 Prototype Filter Calculation:

[c,d] = cheby1(OmegaP,OmegaS,Rs,As,’stop’);

% Bilinear Transformation:

[b,a] = bilinear(cs,ds,Fs);

%

[db,mag,pha,grd,w] = freqz(b,a);

plot (w*8000/2/pi,db) ;

xlabel( ‘frequency (Hz)‘); ylabel (‘decibels’); title (‘magnitude in dB‘);

Mathlab juga menyajikan tampilan orde filter dan koefisien filter. Dalam contoh ini,

filter Chebyshev dapat ber-orde sembilan . elliptic filter memiliki lima orde dan filter

butterworth tiga puluh dua orde.

Beberapa kesimpulan yang dapat dihasilkan dari desain filter low pass sederhana,

pertama pada umumnya dapat dibuat himpunan batas desain. Desain filter cheby2tic

akan menghasilkan filter tersederhana tergantung dari tingkat kekompleksitas bentuk

(terms of complexity). Filter Butterworth

yang paling umum dan kompleks berada dalam orde ke tigapuluh dua. Dalam bentuk

ripple passband, filter butterworth memberikan respon optimum. Dalam passband,

hampir tidak terdapat ripple hanya sebagai monotonic. elliptic dan chebyshev

keduanya mempunyai lebih banyak ripple dalam passband. Inilah yang menjadi

pilihan dari filter-filter yang digunakan. Dalam hal respon besaran dan kompleksitas,

filter elliptic akan menjadi pilihan yang terutama, akan tetapi ripple elliptic

mempunyai respon fasa yang lebih non linear dibandingkan filter Chebyshev dan

Butterworth. Oleh karenanya ketajaman cutoff dengan kompleksitas rendah harus

jatuh pada filter elliptic. Jika respon fasa yang dibutuhkan linear, maka filter

Chebyshev atau Butterworth akan menjadi pilihan.

Filter IIR didesain dengan menggunakan rutin yang dibuat oleh MH Akroyd's dalam

publikasinya tentang Butterworths digital filter . Filter Butterworth digunakan

secara maksimal dalam periode kedatarannya dalam passband, kondisinya pada

monoton cut-off. Filter Butterworth dalam kondisi ternormalisasi dapat

diimplementasikan sampai dengan derajat ke enam. Chebyschev tipe I memiliki

ripple pada passband , monotonic cut-off dari frekuensi cut-off pada stopband.

Pada implementasi derajat ke enam dengan ripple sebesar 1 dB (maksimum deviasi

dari normal sebesar kurang lebih satu dB bukan satu dB dari besaran amplituda

peak to peak ) Chebychev tipe II memiliki flat maksimal dari passband dan ripple

dalam stopband. Maksimum ripple 40 dB dari stopband dan memiliki transisi 3%

dari frekuensi cut-off.

Page 50: 125848955 Diktat Matlab Unikom

50

5.4 Desain High Pass Filter

Mathlab menyediakan fungsi implementasi untuk konversi low pass ke high pass

dan konversi low pass ke band pass . Dengan menyediakan perangkat orde untuk

filter, passband ripple dan frekuensi cutoff 3 dB ke fungsi cheby1(), sebuah filter

high pass dapat didesain. Orde filter akan ditemukan dengan menggunakan fungsi

chebord() . Untuk prototipe Butterworth, fungsi dari butter()

dan buttord(). Untuk prototipe dari cheby2tic kita menggunakan cheby2() dan

cheby2ord().

Di bawah ini adalah kode program Mathlab untuk desain Chebyshev highpass digital

filter dengan band transisi passband dengan frekuensi 1100hz.

% highpass Chebyshev Digital Filter

ws = [0.125 *2*pi]; % digital stopband frequency in rad/s

wp = [0.1375*2*pi]; % digital passband frequency in rad/s

Rs = 0.5; % passband ripple in dB

As = 20;

[N, wn] = cheb1ord(wp/pi,ws/pi,Rs,As) ;

[b, a] = cheby1 (N, Rs, wn, ‘high’) ;

[db,mag,pha,grd,w] = freqz_m(b,a) ;

plot(w*8000/2/pi,db) ;

axis ( [800 1200 -22 1] );

Band pass filter ditentukan dengan menggunakan dua fungsi. Untuk filter bandpass

frekuensi ditentukan dengan wp dan ws yaitu frekuensi passband dan frekuensi

stopband yang keduanya merupakan dua elemen vektor yang dapat menyebabkan dua

frekuensi passband dan dua frekuensi stopband, Mathlab di bawah ini mendesain filter

bandpass digital cheby2tik

% Bandpass Elliptic Digital Filter

ws = [0 .3*pi 0.75*pi] %Stopband edge frequency

ws = [0 .4* pi 0.6*pi] %Passband edge frequency

Rs = 0.5; %Passband ripple in dB

As = 20; %Stopband attenuation in dB

[N, wn] = cheby2ord (wp/pi,ws/pi,Rs,As} ;

[b, a] = cheby2(N, Rs, As ;wn) ;

[db,mag,pha,grd,w] = freqz m(b,a) ;

plot(w*8000/2/pi,db) ;

axis ( [5000 3500 -22 1] )

xlabel(‘frequency (Hz)‘); ylabel(‘decibels’); title(‘magnitude in db Respons of cheby2tic Filter‘) ;

5.5 Signal Processing Tools

Signal processing tool atau Sptools pada Matlab digunakan sebagai alat visualisasi

untuk desain dan menganalisis filter digital. Sptool merupakan graphical user

interface yang mampu menganalisis dan memanipulasi signal, filter dan spektrum

frekuensi. Desain filter dengan Sptools memperbolehkan pengguna untuk memilih

algoritma desain filter yang digunakan ketia membuat filter. Algoritma desain ini

diantaranya terbagi untuk filter FIR dan filter IIR. Untuk filter FIR terbagi dalam

equiripple, least squares, Kaiser Windows dan untuk fiter IIR adalah butterworth,

chebyshev tipe 1 dan 2, serta elliptic. Pengguna juga diperbolehkan menspesifikasikan

Page 51: 125848955 Diktat Matlab Unikom

51

filter lowpass, bandpass, high pass atau bandstop . Desain dari sptools filter akan

ditampilkan dalam respon besaran dan tampilan orde filter.

Berikut ini adalah contoh besaran respon dari bandpass filter yang didesain dalam

kode program Matlab.

Filter 4 Appendix

Function [b, a] = chb1 {Wp, Ws, Rs, As) ;

% Analog Lowpass Filter Design: Chebyshev-1

%

% [b, a] = chb1 (Wp, Ws, Rs, As) ;

% b = Numerator coefficients of Ha (s)

% a = Denominator coefficients of Ha (s)

% Wp = Passband edge frequency in rad/sec

% Ws = Stopband edge frequency in rad/sec

% Rs = Passband ripple in dB

% As = stopband attenuation in dB

%

if wp < = 0

error (‘Passband edge must be larger than 0 ‘ )

end

if Ws < = Wp

error ( ‘Stopband edge must be larger than Passband edge ‘ )

end

if (Rs < = 0 ) (As < 0)

error ( ‘PB ripple and/or SB attenuation must be larger than 0 ‘ )

end

ep = sqrt (10 (Rs/10)-1) ;

A = 10 (As/20) ;

OmegaC = Wp;

OmegaR = Ws/Wp;

g = sqrt (A*A –1) /ep;

N = ceil (log10 (g+sqrt (g*g–1) ) /log10 (OmegaR+sqrt (omegaR*AomegaR-1) ) ) ;

Fprintf (‘\n*** Chebyshev-1 Filter Order = %2.Of \n’,N) ;

[b, a] = ap chb1(N, Rs, OmegaC) ;

function [b, a] = ap chb1(N, Rs, OmegaC) ;

% Chebyshev-1 Analog Lowpass Filter Prototype

%

% [b, a] = ap chb1(N, Rs, OmegaC) ;

% b = nemerator polynomial coefficients

% a = denominator polynomial coefficients

% N = Order of the cheby2tical filter

% Rs = passband Ripple in dB

% OmegaC = Cutoff frequency in rad/sec

%

[z , p , k] = cheblap (N, Rs) ;

a = real (poly (p) ) ;

aNn = a (N+1) ;

p = p*omegac;

a = real (poly (p) ) ;

aNu = a (N+1) ;

k = k*aNu/aNn;

b0 = k;

B = real (poly (z) ) ;

b = k*B;

Page 52: 125848955 Diktat Matlab Unikom

52

6. Argumen Sptools

Untuk membuat filter butterworth di bawah ini adalah fungsi-fungsi yang disediakan

oleh sptools Matlab untuk memanipulasi desain digital filter Untuk filter butterworth

dimana

H(z)=B(z)/A(z)

[B,A] = butter[N,Wn] Menghitung koefisien dari low pass filter. Wn adalah

frekuensi cutoff dalam frekuensi ternormalisasi.

[B,A] = butter(n,Wn,‟high‟) Menghitung koefisien dari highpass butterworth filter.

Wn adalah frekuensi cutoff dalam frekuensi ternormaliasi

[B,A] = butter(N,Wn) Menghitung koefisein dari bandpass filter. Wn adalah

vector yang berisi dari dua frekuensi cutoff ternormaliasi dari passband dalam urutan

naik

[B,A] = butter(N,Wn,‟stop‟) Menghitung koefisien dari bandstop butterworth

filter, Wn adalah vector yang mengandung dua frekuensi cutoff ternormalisasi dalam

stopband dalam urutan naik.

Untuk desain dari chebyshev tipe 1 kita menggunakan variasi dari cheby1 dengan

fungsi komputasi dari koefisien filter order keN dengan filter H(z)=B(z)/A(z)

[B,A] = cheby1[N,Rp,Wn] Menghitung koefisien dari low pass filter Chebyshev

tipe 1. Rp mewakili ripple passband dan Wn adalah frekuensi cutoff dalam

frekuensi ternormalisasi.

[B,A] = cheby1(N,Rp,Wn,‟high‟) Menghitung koefisien dari highpass chebyshev tipe

1 filter. Rp mewakili ripple passband dan Wn adalah frekuensi cutoff dalam frekuensi

ternormaliasi

[B,A] = cheby1(N,Rp,Wn) Menghitung koefisien dari bandpass ripple, dengan Rp

mewakili passband ripple dan Wn adalah vector yang berisi dari dua frekuensi cutoff

ternormaliasi dari passband dalam urutan naik

[B,A] = cheby1(N,Rp,Wn,‟stop‟) Menghitung koefisien dari bandstop chebyshev

tipe filter, dimana Rp mewakili dari passband ripple. Wn adalah vektor yang

mengandung dua frekuensi cutoff ternormalisasi dalam stopband dalam urutan naik.

Untuk desain dari chebyshev tipe II kita menggunakan variasi dari cheby2 dengan

fungsi komputasi dari koefisien filter order keN dengan filter H(z)=B(z)/A(z)

[B,A] = cheby2[N,Rs,Wn] Menghitung koefisien dari low pass filter Chebyshev

tipe 2. Rs mewakili stopband ripple dan Wn adalah frekuensi cutoff dalam

frekuensi ternormalisasi.

[B,A] = cheby2(N,Rs,Wn,‟high‟) Menghitung koefisien dari highpass chebyshev tipe

2 filter. Rs mewakili ripple stopband dan Wn adalah frekuensi cutoff dalam frekuensi

ternormaliasi

[B,A] = cheby2(N,Rs,Wn) Menghitung koefisien dari bandpass dengan Ws adalah

stopband ripple dan Wn adalah vector yang berisi dari dua frekuensi cutoff

ternormaliasi dari passband dalam urutan naik

[B,A] = cheby2(N,Rs,Wn,‟stop‟) Menghitung koefisien dari bandstop chebyshev

tipe filter, dimana Rs mewakili dari stopband ripple. Wn adalah vektor yang

mengandung dua frekuensi cutoff ternormalisasi dalam stopband dalam urutan naik.

Page 53: 125848955 Diktat Matlab Unikom

53

Untuk desain dari chebyshev tipe II kita menggunakan variasi dari cheby2 dengan

fungsi komputasi dari koefisien filter order keN dengan filter H(z)=B(z)/A(z)

[B,A] = ellip[N,Rp, Rs,Wn] Menghitung koefisien dari low pass filter Chebyshev

tipe 2. Rp mewakili ripple passband, Rs mewakili stopband ripple dan Wn adalah

frekuensi cutoff dalam frekuensi ternormalisasi.

[B,A] = ellip(N,Rp,Rs,Wn,‟high‟) Menghitung koefisien dari highpass chebyshev tipe

2 filter. Rp mewakili ripple passband, Rs mewakili ripple stopband dan Wn adalah

frekuensi cutoff dalam frekuensi ternormaliasi

[B,A] = ellip(N,Rp,Rs,Wn) Menghitung koefisien dari bandpass dengan Rp

mewakili ripple passband dengan Ws adalah stopband ripple dan Wn adalah vector

yang berisi dari dua frekuensi cutoff ternormaliasi dari passband dalam urutan naik

[B,A] = ellip(N,Rp,Rs,Wn,‟stop‟) Menghitung koefisien dari bandstop chebyshev

tipe filter, dimana Rp mewakili ripple passband, Rs mewakili dari spassband ripple.

Wn adalah vektor yang mengandung dua frekuensi cutoff ternormalisasi dalam

stopband dalam urutan naik.

Page 54: 125848955 Diktat Matlab Unikom

54

MODUL 6

ANALISIS DAN DESAIN FILTER DIGITAL

Filter digital adalah proses komputasi (algoritma) yang mengubah satu sekuen angka

x[n] yang merepresentasikan input ke sekuen y[n] yang merepresentasikan output.

Yang dimaksud dengan komputasi disini adalah memperformansikan fungsi integrasi,

diferensiasi, dan estimasi.

Filter dijital diklasifikasikan dalam bentuk durasi response impuls dan dalam bentuk

realisasi.

Durasi Response Impuls

1. Filter dijital Infinite Impuls Response (IIR) mempunyai impuls response h[n]

dengan jumlah sampel tak hingga

2. Filter dijital Finite Impuls Response (FIR) mempunyai impuls response h[n]

dengan jumlah sampel berhingga

Realisasi

1. Realisasi Filter Dijital Rekursif dimana output nya bergantung pada input dan

harga output sebelumnya.

2. Realisasi Filter Dijital Non-rekursif dimana output bergantung pada harga

input sekarang dan lampau.

Page 55: 125848955 Diktat Matlab Unikom

55

Transformasi Bilinear ; Ts: Periode Sampling

Contoh 1: (Disain Filter Digital)

Hitung fungsi transfer G(z) dari digital filter low pass dengan 3dB frekuensi cutoff

pada 20 Hz dan atenuasi paling kecil 10 dB untuk frekuensi di atas 40 Hz. Sampling

frekuensinya adalah 200 Hz.

Solusi 1:

Kita akan menggunakan transformasi bilinear. Secara acak kita memilih orde dua

Butterworth low pas filter, yaitu

%Buat pada mfiles

[z,p,k]=buttap(2) %memberikan zero poles untuk filter

%butterworth

[b,a]=zp2tf(z,p,k) %transformasi zeropoles ke domain s

%run program ini

Dari hasil tersebut diketahui bahwa fungsi transfer filter dengan frekuensi

ternormalisasinya adalah

Kemudian kita harus mentransformasikan ke frekuensi cutoff yang sebenarnya yaitu

20 Hz. Kita namakan sebagai Ga(s). Pertama kita gunakan hubungan frekuensi analog

dengan frekuensi digital yaitu:

Dengan analog cutoff nya 3dB pada frekuensi wac, dan frekuensi atenuasi waa,

didapatkan

dan

Untuk mencari Ga(s) kita gantikan s dengan s/0.325 sehingga

Page 56: 125848955 Diktat Matlab Unikom

56

Penulisan MATLAB untuk ekspresi ini adalah:

%Buat pada mfiles baru

Syms z;

simple(0.1056/(((z-1)/(z+1))^2+0.4596*(z-

1)/(z+1)+0.1056))

%lihat hasilnya dicommand windows

%kemudian

expand(264*(z+1)^2)

Sehingga fungsi transfernya adalah

Dengan menggunakan syntax freqz pada MATLAB maka kita bisa mendapatkan

magnitude dari G(z) tapi kita harus mendefinisikannya dalam power negatif.

Pembagian tiap bentuk dengan 391z2

didapatkan:

MATLAB code dibawah ini akan memberikan plot magnitude G(z) terhadap

frekuensi:

%Buat pada mfiles baru

bz=[0.0675 0.1349 0.0675]; az=[1 .1.1429 0.4127];

[Gz, wT]=freqz(bz,az,20,200);

semilogx(wT,abs(Gz)), axis([0.1 1000 0 1]), hold on;

title('Digital Low-Pass Filter'),

xlabel('Frequency in Hz'), ylabel('Magnitude'), grid

%Gambar yang anda dapatkan adalah Gambar Digital low pass

filter pada contoh 1

Contoh 2:

Fungsi transfer dibawah ini mendefinisikan beberapa tipe filter digital. Gunakan freqz

MATLAB untuk memplot magnitude versus radian frekuensi.

Page 57: 125848955 Diktat Matlab Unikom

57

Solusi:

MATLAB code untuk menghitung dan mengeplot fungsi transfer di atas adalah:

% Buat di m files baru

% N=512 % Default

b1=[2.8982 8.6946 8.6946 2.8982]*10^(.3); a1=[1 .2.3741

1.9294 .0.5321];...

[G1z,w1T]=freqz(b1,a1);

%

b2=[0.5276 .1.5828 1.5828 .0.5276]; a2=[1 .1.7600 1.1829

.0.2781];...

[G2z,w2T]=freqz(b2,a2);

%

b3=[6.8482 0 -13.6964 0 6.8482]*10^(.4); a3=[1 3.2033

4.5244 3.1390 0.9603];...

[G3z,w3T]=freqz(b3,a3);

%

b4=[0.9270 .1.2079 0.9270]; a4=[1 .1.2079 0.8541];...

[G4z,w4T]=freqz(b4,a4);

clf; % clear current figure

%

subplot(221), semilogx(w1T,abs(G1z)), axis([0.1 1 0 1]),

title('Filter for G1(z)')

xlabel(''),ylabel('Magnitude'),grid;

%

subplot(222), semilogx(w2T,abs(G2z)), axis([0.1 10 0 1]),

title('Filter for G2(z)')

xlabel(''),ylabel('Magnitude'),grid;

%

subplot(223), semilogx(w3T,abs(G3z)), axis([1 10 0 1]),

title('Filter for G3(z)')

xlabel(''),ylabel('Magnitude'),grid;

%

Page 58: 125848955 Diktat Matlab Unikom

58

subplot(224), semilogx(w4T,abs(G4z)), axis([0.1 10 0 1]),

title('Filter for G4(z)')

xlabel(''),ylabel('Magnitude'),grid;

%Lihat hasilnya..

Contoh 3:

Rectifier Setengah Gelombang dapat direpresentasikan dalam bentuk trigonometrik:

Dalam contoh ini kita akan memfilter hanya 2 bentuk awal (atau menghilangkan

bentuk cosinus). Untuk menyederhanakan bentuk ini, misalkan A = 3π dan kita

potong dengan menghilangkan dari bentuk ketiga ke atas, sehingga fungsinya

menjadi:

Masalahnya menjadi bagaimana mengurangi filter low pass digital dan menggunakan

perintah filter untuk menghilangkan bentuk cosine di atas.

Solusi:

Kita akan menggunakan 6 pole digital low pass filter Butterworth karena kita harus

mempunyai transisi yang tajam antara 1 dan 2 rad / detik. Dan juga, komponen

frekuensi tertinggi adalah 2 rad/s, kita harus menspesifikasikan frekuensi sampling ws

= 4 rad/s untuk menghindari aliasing. Sehingga frekuensi sampling haruslah fs =

ws/2π = 2/π dan periode sampling menjadi Ts = 1/fs = π/2. T = 0.5 adalah harga yang

cukup kecil; Cutoff frekuensi kita pilih wC = 1.5 rad/s untuk mengatenuasi bentuk

cosine.

MATLAB code di bawah ini adalah meliputi langkah-langkah:

1. Menghitung numerator dan denominator dari fungsi transfer dengan frekuensi

cutoff ternormalisasi

2. Perhitungan koefisein untuk frekuensi yang diinginkan

3. Menggunakan fungsi bilinear yang memetakan fungsi transfer analog ke

fungsi transfer digita dan memplot respon frekuensi dari filter digital.

4. Menghitung filter digital transfer function untuk menghitung efek warping.

5. Menggunakan fungsi filter untuk menghilangkan bentuk cosine

%Buat pada m files baru

%Langkah 1

[z,p,k]=buttap(6);

[b,a]=zp2tf(z,p,k);

% Langkah 2

wc=1.5;

[b1,a1]=lp2lp(b,a,wc);

%

% Langkah 3

T=0.5; % Define sampling period

[Nz,Dz]=bilinear(b1,a1,1/T);

w=0:2*pi/300:pi;

Page 59: 125848955 Diktat Matlab Unikom

59

Gz=freqz(Nz,Dz,w);

clf

%

semilogx(w,abs(Gz)); grid; hold on

xlabel('Radian Frequency w in rads/sec'),

ylabel('Magnitude of G(z)'),

title('Digital Filter Response in Normalized Frequency')

%

fprintf('Press any key to continue \n');

pause;

%

% Langkah 4

p=6; T=0.5;

wc=1.5;

wd=wc*T/pi;

[Nzp,Dzp]=butter(p,wd);

fprintf('Summary: \n\n');

fprintf('WITHOUT PREWARPING: \n\n');

fprintf('The num N(z) coeff in desc order of z are:

\n\n');

fprintf('%8.4f \t',[Nz]);

fprintf('\n\n');

fprintf('The den D(z) coeff in desc order of z are:

\n\n');

fprintf('%8.4f \t',[Dz]);

fprintf('\n\n');

fprintf('WITH PREWARPING: \n\n');

%

fprintf('The num N(z) coeff in desc order of z are:

\n\n');

fprintf('%8.4f \t',[Nzp]);

fprintf('\n\n');

fprintf('The den D(z) coeff in desc order of z are:

\n\n');

fprintf('%8.4f \t',[Dzp]);

fprintf('\n\n');

Setelah didapatkan harga tersebut maka diteruskan dengan langkah 5.

% buat di m file yang sama dengan di atas

% Langkah 5

%

Nzp=[0.0008 0.0050 0.0125 0.0167 0.0125 0.0050 0.0008];

Dzp=[1.0000 -3.1138 4.4528 -3.5957 1.7075 -0.4479

0.0504];

n=0:150;

T=0.5;

gt=3+1.5*sin(n*T)-cos(2*n*T);

Page 60: 125848955 Diktat Matlab Unikom

60

yt=filter(Nzp,Dzp,gt);

%

t=0:0.1:12;

gta=3+1.5*sin(t)-cos(2*t);

subplot(211), plot(t,gta), axis([0,12, 0, 6]); hold on

xlabel('Continuous Time t');

ylabel('Function g(t)');

%

subplot(212), plot(n*T,yt), axis([0,12, 0, 6]); hold on

xlabel('Continuous Time t');

ylabel('Filtered Output y(t)');

%

subplot(211), stem(n*T,gt), axis([0,12, 0, 6]); hold on

xlabel('Discrete Time nT');

ylabel('Discrete Function g(n*T)');

%

subplot(212), stem(n*T,yt), axis([0,12, 0, 6]); hold on

xlabel('Discrete Time nT');

ylabel('Filtered Output y(n*T)');

%Ouput Analog dan Dijital dapat dilihat di hasil Gambar

Page 61: 125848955 Diktat Matlab Unikom

61

MODUL 7

JARINGAN SYARAF TIRUAN (PERCEPTRON)

MATLAB menyediakan toolbox untuk menyelesaikan masalah jaringan syaraf tiruan

(JST). Spesifikasi perceptron jaringan pada MATLAB adalah sebagai berikut:

Masukan point dan target berbentuk bebas

Treshold yang dipakai adalah nol

Fungsi aktivasi (hardlim) memiliki output biner

Bobot diubah berdasarkan error yang terbentuk dari selisih antara target yang

diinginkan dan keluaran jaringan.

Pembentukan Jaringan

Misalkan bobot jaringan ke target y1 adalah [-1 0 2], bobot ke target y2 adalah [0 1

0] dan bobot bias adalah [1 2]. Statement yang digunakan untuk membangun jaringan

adalah

net.IW{1,1}=[-1 0 2;0 1 0]

net.b{1}=[1;2]

Untuk membentuk perceptron untuk mengenali fungsi logika ”AND” dengan 2

variabel x1 dan x2, digunakan statement net=newp(PR,S,TF,LF) dengan

PR=matriks ordo R x 2 menyatakan nilai maksimum dan minimum tiap unit masukan

S=jumlah neuron dari target

TF=fungsi aktivasi biner

LF=fungsi pelatihan. (default: learnp)

Sehingga:

%lanjutkan

net=newp([0 1 ; 0 1], 1)

dengan [0 1] menyatakan variabel x1 dan kolom yang kedua merupakan variabel x2

Pembentukan Vektor Masukan dan Target

Setelah membentuk perceptron, berikutnya didefinisikan pola masukan dan target

yang akan dikenali. Masing-masing masukan dan keluaran berupa vektor kolom.

Perhatikan bahwa jumlah unit tiap pola masukan serta range nilainya harus sesuai

dengan spesifikasi perceptron yang dibuat.

1

y1

y2

x1

x2

x3

b1

w11

w13

w21

w22

w23

b2

Page 62: 125848955 Diktat Matlab Unikom

62

Pembentukan perceptron dengan masukan dan targetnya untuk mengenali pola fungsi

logika ”AND” dengan bobot awal w = [-1 1] dan bias=[1] dilakukan prosedur di atas

dan berikut:

%Mulai baru

net=newp([0 1;0 1],1);

net.IW{1,1}=[-1 1]

net.b{1}=[1]

p = [ [1 ; 1] [1;0] [0;1] [0;0]];

t = [1 0 0 0];

Menghitung Keluaran Perceptron

Setelah pola masukan diberikan, kita dapat menghitung keluaran jaringan. Perintah

sim dalam MATLAB dipakai untuk menghitung keluaran Perceptron. Formatnya

adalah: [Y,Pf,Af,E,perf]=sim(net,P,Pi,Ai,T), dengan parameter masukan

Net : nama jaringan dalam jaringan newp

P : vektor masukan jaringan

Pi : Kondisi delay masukan (default : nol)

Ai : Kondisi delay layar (default : nol)

T : vektor target jaringan (default : nol)

Dan parameter hasil

Y : keluaran jaringan

Pf : Kondisi akhir delay masukan

Af : Kondisi akhir delay layar

E : Error jaringan (T – Y)

Perf. : Unjuk kerja jaringan (performance)

Untuk menghitung keluaran jaringan, dapat digunakan statemen sederhana:

y=sim(net,p).

Misalkan ingin menghitung keluaran perceptron contoh terakhir:

%lanjutkan

[a,Pf,Af,e,perf]=sim(net,p,[],[],t)

didapatkan hasil yang menunjukan performansinya adalah 0,75 yang berarti hanya

pola pertama saja yang dikenali dengan benar.

Modifikasi bobot dan bias

Setelah menghitung keluaran jaringan, langkah berikutnya adalah mengubah bobot

berdasarkan selisih antara keluaran jaringan dan target yang diinginkan. Untuk

mengubah bobot digunakan perintah learnp yang formatnya:

dW=learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) (ketik help learnp untuk keterangan

lebih lanjut)

Page 63: 125848955 Diktat Matlab Unikom

63

Misalkan perhitungan bobot setelah perintah sim pada contoh di atas dijalankan

berturut-turut pada pola [1;1], [1;0],[0;1],[0;0].

%mulai baru

p = [ [1 ; 1] [1;0] [0;1] [0;0]];

t = [1 0 0 0];

net=newp([0 1;0 1],1);

bobot=[-1,1];

net.IW{1,1}=bobot;

bias=1;

net.b{1}=bias;

p1=p(:,1); p2=p(:,2); p3=p(:,3); p4=p(:,4);

t1=t(1); t2=t(2); t3=t(3); t4=t(4);

%perubahan bobot untuk pola p1

disp(’pola p1 :’)

a1=sim(net,p1)

e1=t1-a1

dW=learnp(bobot,p1,[],[],[],[],e1,[],[],[],[],[])

bobot=bobot+dW

Perintah learnp akan menyimpan besarnya perubahan bobot pada variabel dW. Bobot

baru diperoleh dengan menambahkan dW ke vektor bobot. Karena keluaran jaringan

= target, maka tidak dilakukan perubahan bobot sehingga bobot baru = bobot lama.

Perubahan bobot untuk pola p2, p3 dan p4 dilakukan dengan program serupa

%lanjutkan

disp(’pola p2 :’)

a2=sim(net,p2)

e2=t2-a2

dW=learnp(bobot,p2,[],[],[],[],e2,[],[],[],[],[])

bobot=bobot+dW

disp(’pola p3 :’)

a3=sim(net,p3)

e3=t3-a3

dW=learnp(bobot,p3,[],[],[],[],e3,[],[],[],[],[])

bobot=bobot+dW

disp(’pola p4 :’)

a4=sim(net,p4)

e4=t4-a4

dW=learnp(bobot,p4,[],[],[],[],e4,[],[],[],[],[])

bobot=bobot+dW

Pada pola 2 dan 3, e = t – a = -1 Sehingga dW = -p. Perubahan ini ditambahkan ke

vektor bobot. Pada pola 4, e= 0 sehingga tidak dilakukan perubahan bobot.

Page 64: 125848955 Diktat Matlab Unikom

64

Pelatihan Perceptron

Perceptron akan melakukan perubahan bobot terus menerus untuk setiap pola yang

diberikan hingga diperoleh bobot yang akan digunakan untuk mengenali pola secara

benar. Untuk mengecek apakah bobot sudah dapat mengenali pola maka dapat

digunakan perintah:

>> a = sim (net,p)

>> e = t – a

Hasil keluaranya adalah [ 1 1 1 1] sedangkan targetnya adalah [1 0 0 0]. Terdapat

kesalahan e = [0 -1 -1 -1], ini memerlukan pelatihan berikutnya (epoch ke dua). Untuk

menyingkat keseluruhan proses berikutnya (iterasi) MATLAB menyediakan perintah

train yang formatnya adalah

[net,tr,Y,E,Pf,Af] = train(NET,P,T,Pi,Ai,VV,TV) (deskripsi dapat dilihat

menggunakan help train)

Contoh: misalkan diinginkan bobot pengenalan pola untuk contoh yang tadi.

p = [ [1 ; 1] [1;0] [0;1] [0;0]];

t = [1 0 0 0];

net=newp([0 1;0 1],1);

net.IW{1,1}=[-1,1];

net.b{1}=[1];

net=train(net,p,t);

%untuk mengetahui keadaan bobot optimal:

disp(net.IW{1,1})

disp(net.b{1})

Jadi w1 = 1, w2 = 2 dan b = -2

Untuk mengehetahui perubahan bobot dan bias untuk setiap epoch, iterasi harus

dihentikan sementara per epoch (dan ditampilkan hasilnya). Untuk itu digunakan

perintah:

function perceptron %training untuk fungsi ”AND”

clc

net=newp([0 1; 01],1);

net.IW{1,1}=[-1,1];

net.b{1}=[1];

p = [ [1 ; 1] [1;0] [0;1] [0;0]];

t = [1 0 0 0];

e=9999

while e > 0

net.trainParam.epochs = 1

%pause training untuk tiap epoch

net=train(net,p,t);

bobot=net.IW{1,1}

bias=net.b{1}

Page 65: 125848955 Diktat Matlab Unikom

65

a = sim(net,p)

e = sum (t – a)

end

TUGAS

Buatlah program untuk mengenali fungsi logika XOR. Apakah perceptron mampu

mengenalinya?

Pustaka

J.J. Siang, M.Sc., ”Jaringan Syaraf Tiruan dan Pemrogramannya Menggunakan

MATLAB”, Penerbit Andi, Yogyakarta, 2005.

Page 66: 125848955 Diktat Matlab Unikom

66

MODUL 8

NEURAL NETWORK (BACK PROPAGATION)

Backpropagation dibentuk dengan membuat aturan pelatihan Widrow Hoff dengan

menambahkan layar tersembunyi. Kata backpropagation merujuk pada cara

bagaimana gradien perubahan bobot dihitung.

Langkah pertama yang harus dilakukan untuk memprogram backpropagation dengan

MATLAB adalah membuat inisialisasi jaringan. Perintah untuk membentuk jaringan

adalah newff. Yang formatnya adalah sebagai berikut:

net = newff(PR,[S1 S2 ... SN],{TF1 TF2 … TFN},BTF,BLF,PF)

dengan

net = jaringan backpropagation yang terdiri dari n layer

PR = matriks ordo R x 2 yang berisi nilai minimum dan maksimum R buah elemen

masukannya.

Si (i=1,2,...,n) = Fungsi aktivasi yang dipakai pada layar ke-i (i=1,2,...,n). Default =

tansig (sigmoid bipolar)

BTF = Fungsi pelatihan jaringan. Defaultnya = traingdx

BLF = fungsi perubahan bobot/bias. Default=learngdm

PF = fungsi perhitungan error (Mean Square Error MSE)

Beberapa fungsi aktivasi yang dipakai dalam pelatihan backpropagation adalah

tansig (sigmoid bipolar). 2

( ) 11 net

f nete

. Fungsi ini adalah default yang

dipakai. Fungsi sigmoid bipolar memliki range [-1,1].

logsig (sigmoid biner) 1

( )1 net

f nete

. Fungsi sigmoid biner memiliki

bentuk serupa dengan sigmoid bipolar hanya range nya adalah [0,1]

purelin (fungsi identitas) f(net)=net

Inisialisasi Backpropagation

Inisialisasi backpropagation untuk 2 masukan, sebuah layar tersembunyi terdiri dari 3

unit dan sebuah keluaran (sering disebut 2-3-1) dengan data yang dipakai pelatihan

sebagai berikut

Tabel 1

x1 (variabel 1) x2 (variabel 2) t (target)

-1

-1

2

2

0

5

0

5

-1

-1

1

1

Fungsi aktivasi dari unit masukan ke layar tersembunyi adalah sigmoid bipolar dan

dari layar tersembunyi ke keluaran adalah identitas.

p = [-1 -1 2 2 ; 0 5 0 5]

t = [-1 -1 1 1]

net=newff([-1 2; 0 5], [3,1],{’tansig’,’purelin’});

Page 67: 125848955 Diktat Matlab Unikom

67

Inisialisasi Bobot

Setiap kali membentuk jaringan backpropagation dapat diberikan inisialisasi bobot

tertentu dengan memberikan nilai pada net.IW, net.LW, dan net.b

net.IW{j,i} digunakan sebagai variabel untuk menyimpan bobot dari unit masukan

layar ke i ke unit tersembunyi (atau unit keluaran)layar j. Karena dalam

Backpropagation unit masukan hanya terhubung dengan layar tersembunyi paling

bawah, maka bobotnya disimpan dalam net.IW{1,1}.

Sebaliknya net.LW{k,j} dipakai untuk menyimpan bobot dari unit di layar

tersembunyi ke-j ke unit di layar tersembunyi ke-k. Sebagai contoh, net.LW{2,1}

adalah menyimpan bobot dari layar tersembunyi paling bawah (layar tersembunyi ke

1) ke layar tersembunyi di atasnya (layar tersembunyi ke 2)

Contoh pembuatan jaringan backpropagation 2-4-3-1 (semua masukan adalah

bilangan antara -1 dan 2) dengan semua fungsi aktivasi sigmoid bipolar. Beri bobot

dan bias seperti pada Tabel 2 – 4

Tabel 2

Dari Unit Masukan

Layar

Tersembunyi 1

X1 X2 Bias

Z1 -1.3 0.7 0.3

Z2 0.5 0 -0.1

Z3 1.3 -0.4 -0.9

Z4 -0.1 1.2 0.5

Tabel 3

Dari Layar Tersembunyi 1

Layar

Tersembunyi 2

z1 z2 z3 z4 Bias

V1 0.4 0.3 -1 -0.3 0.5

V2 0.6 0 -0.6 -1.2 -1.3

V3 0.4 -0.3 0.2 0.9 -0.3

Tabel 3

Dari layar Tersembunyi 1

Keluaran z1 z2 z3 Bias

Y1 0.4 0.9 -0.1 -1

Arsitektur pembentukan jaringan adalah

net = newff ([-1 2; -1 2], [4,3,1]);

pada perintah ini bobot disusun secara acak. Untuk mengatur bobot seperti pada Tabel

2–4 dilakukan:

net.IW{1,1}=[-1.3 0.7; 0.5 0; 1.3 -0.4; -0.1 1.2];

net.b{1}=[0.3; - 0.1; - 0.9; 0.5];

net.LW{2,1}=[0.4 0.3 -1 -0.3;0.6 0 -0.6 -1.2;0.4 -0.3 0.2

0.9];

net.b{2}=[0.5;-1.3;-0.3];

net.LW{3,2}=[0.4 0.9 -0.1];

Page 68: 125848955 Diktat Matlab Unikom

68

net.b{3}=[-1];

Hasil bobot tersebut dapat dicek masing-masing dengan memanggil

>>net.IW{1,1}

>>net.b{1}

>>net.LW{2,1}

>>net.b{2}

>>net.LW{3,2}

>>net.b{3}

Simulasi Jaringan

Perintah sim dapat digunakan untuk menghitung output dari jaringan. Misalkan pada

contoh di atas kita masukan input x1=0.5 dan x2=1.3 Pola masukan dengan

menggunakan contoh di atas diperoleh:

>>p=[0.5;1.3];

>>y=sim(net,p);

untuk mengetauhi besarnya error parameter masukan harus ditambah dengan target

yang ingin dicapai. Misalkan target nya t = 1, maka diperoleh keluaran dan error:

>>t=[1];

>>[y,Pf,Af,e,perf]=sim(net,p,[],[],t)

Pelatihan Backpropagation

Untuk menjalankan pelatihan maka perintah train dapat digunakan. Pelatihan ini

untuk meminimumkna kuadrat kesalahan rata-rata (MSE). Metode yang paling

sederhana adalah gradient descent. Bobot dan bias diubah pada arah dimana unjuk

kerja fungsi menurun paling cepat yaitu dalam arah negatif gradiennya.

Wk+1 = Wk – αk*gk

Contoh misalkan diketahui pasangan vektor seperti pada Tabel 1 Buat jaringan

backprpagation dan latihlah dengan metode penurunan tercepat. Gunakan fungsi

aktivasi sigmoid bipolar pada layar tersembunyi dan fungsi identitas pada layar

keluarannya.

p = [-1 -1 2 2 ; 0 5 0 5]

t = [-1 -1 1 1]

net=newff(minmax(p),

[3,1],{’tansig’,’purelin’},’traingd’);

*cat: lihat help minmax

Dengan menggunakan perintah sim besarnya error mula-mula dapat ditentukan

>>[y,Pf,Af,e,perf]=sim(net,p,[],[],t)

Berikutnya untuk melatihnya digunakan perintah train

>>net=train(net,p,t)

Page 69: 125848955 Diktat Matlab Unikom

69

Training dihentikan pada epoch ke 100 (default) meskipun unjuk kerja yang

diinginkan (mse=0) belum tercapai. Pca epoch ke 100 ini mse adalah 0,0065. Lihat

juga grafiknya.

Bobot, bias dan hasil pelatihannya dapat dilihat dengan perintah:

>>net.IW{1,1}

>>net.b{1}

>>net.LW{2,1}

>>net.b{2}

>>[y,Pf,Af,e,perf]=sim(net,p,[],[],t)

lihat hasilnya apakah mendekati target?

Dari contoh di atas hamper tidak mungkin kita mendapatkan harga mse=0 (apalagi

jika data pelatihannya banyak). Untuk itu orang cukup puas jika mse-nya cukup kecil

(misalkan 0.0001). Jika kita perbesar laju pemahaman menjadi 0.1 dan merubah mse

menjadi 0.0001, dilakukan perintah

p = [-1 -1 2 2 ; 0 5 0 5]

t = [-1 -1 1 1]

net=newff(minmax(p),

[3,1],{’tansig’,’purelin’},’traingd’);

net.trainParam.lr=0.1;

net.trainParam.goal=0.0001;

net=train(net,p,t)

Coba jika laju pemahamannya 0.9

Apakah iterasi konvergen? Apakah performance goal nya ketemu?

Contoh aplikasi

Diketahui data bulanan penjualan suatu produk makanan kaleng selama 2 tahun

terakhir seperti pada tabel 4. Buatlah prediksi penjualan makanan untuk bulan depan.

Dengan toleransi sampai 10-5

.

Tabel 4.

Tahun Penjualan Tiap Bulan

1 2 3 4 5 6 7 8 9 10 11 12

2003 2045 1696 1341 1181 1613 2242 6161 10437 9590 5291 3081 2147

2004 1767 1466 1090 1070 1355 5324 7167 13780 10629 7725 3284 2400

Jika ingin menggunakan fungsi aktivasi sigmoid biner, data harus ditransformasikan

terlebih dahulu karena range keluaran fungsi sigmoid adalah [0,1]. Data bisa

ditransformasikan ke interval yang lebih kecil misal pada interval [0.1, 0.9]. Ini

mengingat fungsi sigmoid merupakan fungsi asimtotik yang nilainya tidak pernah

mencapai 0 ataupun 1.

Jika a adalah data minimum dan b adalah data maksimum, transformasi linier yang

digunakan untuk mentransformasikan data ke interval [0.1, 0.9] adalah :

0.8( )' 0.1

x ax

b a

(1)

Sehingga Tabel 4 ditransformasikan menjadi

Page 70: 125848955 Diktat Matlab Unikom

70

Tabel 5

Tahun Penjualan Tiap Bulan

1 2 3 4 5 6 7 8 9 10 11 12

2003 0.1614 0.1394 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678

2004 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189 0.2394 0.1837

Pola yang dipakai merupakan data selama 12 bulan dan target adalah data penjualan

pada bulan ke 13. Jadi ada 12 pola data dalam sebuah epochnya seperti pada Tabel 6.

Jumlah layar tersembunyi bisa dicoba-coba mulai dengan layar tersembunyi dengan 3

unit.

Tabel 6 (hasil dari rumus 1

Pola Data Masukan Target

Pola 1 0.1614 0.1394 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439

Pola 2 0.1394 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249

Pola 3 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013

Pola 4 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000

Pola 5 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179

Pola 6 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678

Pola 7 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838

Pola 8 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000

Pola 9 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017

Pola 10 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189

Pola 11 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189 0.2394

Pola 12 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189 0.2394 0.1837

(Buat saja di Excel biar gampang)

Masukan harga p dengan mengkopi paste data masukan pelatihan p = [ %copy paste data tabel 6

]

dan t= [ %copy paste data tabel 6

]’

net=newff(minmax(p),

[2,1],{’logsig’,’logsig’},’traingdx’);

net.trainParam.goal=1e-5;

net.trainParam.epochs=500;

net.trainParam.show=500;

net=train(net,p,t)%didapatkan bobot terbaik

Page 71: 125848955 Diktat Matlab Unikom

71

Modul 9

Contoh Program Aplikasi Modelling

dengan Matlab

Traveling Salesman

Permasalahan: Kita ingin mengetahui jalan yang terpendek yang harus dilalui oleh seorang salesman, teori dasarnya adalah pada

teori graph dalam mata kuliah matematika diskrit. Jawaban

Listing travel.m function travel(action);

% Demo program TRAVEL Traveling salesman

% demo ini merupakan animasi yang disebut

% "Traveling Salesman" .

% Masalahnya adalah mencari jalan terpendek

% yang harus dilalui.

% Algoritma demo ini sangatlah sederhana

% Dan sangat cepat penyelesaiannya

% Menggunakan menu pop up kota untuk membedakan masing

masing animasi

% Klick "Start"

% dan "Stop" buttons untuk menyelesaikan animasi

% Kota yang dipilih akan dikunjungi secara random.

play= 1;

stop=-1;

if nargin<1,

action='initialize';

end;

switch action

case 'initialize',

oldFigNumber=watchon;

figNumber=figure( ...

'Name','Travel: The Traveling Salesman Problem', ...

'NumberTitle','off', ...

'Visible','off', ...

'DoubleBuffer','on', ...

'Color', [0 0 0], ...

'BackingStore','off');

axes( ...

'Units','normalized', ...

'Position',[0.05 0.05 0.75 0.90], ...

'Visible','off', ...

'NextPlot','add');

text(0,0,'Press the "Start" button to see the Traveling

Salesman demo', ...

'HorizontalAlignment','center');

axis([-1 1 -1 1]);

Page 72: 125848955 Diktat Matlab Unikom

72

%===================================

% Information for all buttons

labelColor=[0.8 0.8 0.8];

yInitPos=0.90;

xPos=0.85;

btnWid=0.10;

btnHt=0.10;

% Spacing between the button and the next command's label

spacing=0.05;

%====================================

% The CONSOLE frame

frmBorder=0.02;

yPos=0.05-frmBorder;

frmPos=[xPos-frmBorder yPos btnWid+2*frmBorder

0.9+2*frmBorder];

h=uicontrol( ...

'Style','frame', ...

'Units','normalized', ...

'Position',frmPos, ...

'BackgroundColor',[0.50 0.50 0.50]);

%====================================

% The START button

btnNumber=1;

yPos=0.90-(btnNumber-1)*(btnHt+spacing);

labelStr='Start';

cmdStr='start';

callbackStr='travel(''start'');';

% Generic button information

btnPos=[xPos yPos-spacing btnWid btnHt];

startHndl=uicontrol( ...

'Style','pushbutton', ...

'Units','normalized', ...

'Position',btnPos, ...

'String',labelStr, ...

'Interruptible','on', ...

'Callback',callbackStr);

%====================================

% The CITIES popup button

btnNumber=2;

yPos=0.90-(btnNumber-1)*(btnHt+spacing);

textStr='Cities';

popupStr=reshape(' 15 20 25 30 35 40 45 50 ',4,8)';

% Generic button information

btnPos1=[xPos yPos-spacing+btnHt/2 btnWid btnHt/2];

btnPos2=[xPos yPos-spacing btnWid btnHt/2];

popupHndl=uicontrol( ...

'Style','text', ...

'Units','normalized', ...

'Position',btnPos1, ...

'String',textStr);

btnPos=[xPos yPos-spacing btnWid btnHt/2];

Page 73: 125848955 Diktat Matlab Unikom

73

popupHndl=uicontrol( ...

'Style','popup', ...

'Value',4, ...t

'Units','normalized', ...

'Position',btnPos2, ...

'String',popupStr);

%====================================

% The STOP button

btnNumber=3;

yPos=0.90-(btnNumber-1)*(btnHt+spacing);

labelStr='Stop';

% Setting userdata to -1 (=stop) will stop the demo.

callbackStr='set(gca,''Userdata'',-1)';

% Generic button information

btnPos=[xPos yPos-spacing btnWid btnHt];

stopHndl=uicontrol( ...

'Style','pushbutton', ...

'Units','normalized', ...

'Position',btnPos, ...

'Enable','off', ...

'String',labelStr, ...

'Callback',callbackStr);

%====================================

% The INFO button

labelStr='Info';

callbackStr='travel(''info'')';

infoHndl=uicontrol( ...

'Style','push', ...

'Units','normalized', ...

'Position',[xPos 0.20 btnWid 0.10], ...

'String',labelStr, ...

'Callback',callbackStr);

%====================================

% The CLOSE button

labelStr='Close';

callbackStr='close(gcf)';

closeHndl=uicontrol( ...

'Style','push', ...

'Units','normalized', ...

'Position',[xPos 0.05 btnWid 0.10], ...

'String',labelStr, ...

'Callback',callbackStr);

% Uncover the figure

hndlList=[startHndl popupHndl stopHndl infoHndl

closeHndl];

set(figNumber, ...

'Visible','on', ...

'UserData',hndlList);

watchoff(oldFigNumber);

figure(figNumber);

case 'start',

Page 74: 125848955 Diktat Matlab Unikom

74

WNumber=watchon;

axHndl=gca;

figNumber=gcf;

hndlList=get(figNumber,'Userdata');

startHndl=hndlList(1);

popupHndl=hndlList(2);

stopHndl=hndlList(3);

infoHndl=hndlList(4);

closeHndl=hndlList(5);

set([startHndl closeHndl infoHndl],'Enable','off');

set(stopHndl,'Enable','on');

set(axHndl,'Userdata',play);

set(popupHndl, 'Enable', 'off');

% ====== Start of Demo

% Travel problem

% This is the main program for the Traveling Salesman

Problem.

% This function makes use of the following other

functions:

% inside

% Lay down a picture of the United States for graphic

appeal.

load('usborder.mat','x','y','xx','yy');

% The file usborder.mat contains a map of the US in the

variables

% x and y, and a geometrically simplified version of the

same map

% in the variables xx and yy.

cla;

plot(x,y,'Color','cyan');

axis off;

axis([-0.1 1.5 -0.2 1.2]);

set(axHndl,'Drawmode','Fast');

hold on;

drawnow;

nptsStr=get(popupHndl,'String');

nptsVal=get(popupHndl,'Value');

npts=str2double(nptsStr(nptsVal,:));

set(popupHndl, 'Enable', 'off');

% ...else generate the random cities to visit

X=[];

Y=[];

% Form the US border in imaginary coords for the INSIDE

routine

w=xx+i*yy;

n=0;

while n<npts,

a=rand*1.4+i*rand;

if inside(a,w),

X=[X; real(a)];

Y=[Y; imag(a)];

Page 75: 125848955 Diktat Matlab Unikom

75

n=n+1;

end;

end;

xy=[X Y];

% Calculate the distance matrix for all of the cities

distmatrix = zeros(npts);

for count1=1:npts,

for count2=1:count1,

x1 = xy(count1,1);

y1 = xy(count1,2);

x2 = xy(count2,1);

y2 = xy(count2,2);

distmatrix(count1,count2)=sqrt((x1-x2)^2+(y1-y2)^2);

distmatrix(count2,count1)=distmatrix(count1,count2);

end;

end;

% Generate an initial random path between those cities

p=randperm(npts);

newxy=xy(p,:);

newxy=[newxy; newxy(1,:)];

xdata=newxy(:,1);

ydata=newxy(:,2);

watchoff(WNumber);

plot(xdata,ydata,'r.','Markersize',24);

plothandle=plot(xdata,ydata,'yellow','LineWidth',2);

axis off;

drawnow;

len=LocalPathLength(p,distmatrix);

lenhist=len;

while get(axHndl,'Userdata')==play,

drawnow;

drawFlag=0;

% Try a point for point swap

% ========================

swpt1=floor(npts*rand)+1;

swpt2=floor(npts*rand)+1;

swptlo=min(swpt1,swpt2);

swpthi=max(swpt1,swpt2);

order=1:npts;

order(swptlo:swpthi)=order(swpthi:-1:swptlo);

pnew = p(order);

lennew=LocalPathLength(pnew,distmatrix);

if lennew<len,

p=pnew;

len=lennew;

drawFlag=1;

end;

% ========================

% Try a single point insertion

% ========================

swpt1=floor(npts*rand)+1;

Page 76: 125848955 Diktat Matlab Unikom

76

swpt2=floor((npts-1)*rand)+1;

order=1:npts;

order(swpt1)=[];

order=[order(1:swpt2) swpt1 order((swpt2+1):(npts-1))];

pnew = p(order);

lennew=LocalPathLength(pnew,distmatrix);

if lennew<len,

p=pnew;

len=lennew;

drawFlag=1;

end

if drawFlag,

newxy=xy(p,:);

newxy=[newxy; newxy(1,:)];

xdata=newxy(:,1);

ydata=newxy(:,2);

set(plothandle,'XData',xdata,'YData',ydata);

drawnow;

end;

% ========================

end;

% ====== End of Demo

set([startHndl closeHndl infoHndl],'Enable','on');

set(stopHndl,'Enable','off');

set(popupHndl, 'Enable', 'on');

case 'info',

helpwin(mfilename)

end; % if strcmp(action, ...

function total=LocalPathLength(p,distmatrix);

npts = size(p,2);

total=sum(distmatrix([(p-1)*npts + p([end 1:(end-1)])]));

Page 77: 125848955 Diktat Matlab Unikom

77

Contoh OutPut

Trafeling Salesman dengan 25 Kota dihasilkan :

Trafeling Salesman dengan 50 Kota dihasilkan :

Page 78: 125848955 Diktat Matlab Unikom

78

DAFTAR PUSTAKA

1. Messner, William and Dawn Tilbury. Control Tutorials for MatLab and Simulink.

A Web Based Approach. Addisson Wesley, Inc. 1999.

2. Ogata, Katsuhiko. Modern Control Engineering. 3rd ed. Prentice Hall

International. 1997

3. http://www.mathworks.com

4. Ogata, Katsuhiko. Solving Control Engineering Problems with MatLab.

Englewood Cliffs, New Jersey : Prentice Hall Inc. 1994

5. _______. MatLab High Performance Numeric Computation and Visualization

Software. The Mathworks, Inc. 1992