Judul Buku
Bab 3
FUNGSI M-FILE
FUNGSI M-FILE
35
1. Nama fungsi dan nama file harus identik. Contohnya flipud disimpan dalam file yang bernama flipud.m 2. Pertama kali MATLAB mengeksekusi suatu fungsi M-file, MATLAB membuka file fungsi tersebut dan mengkompilasi perintah-perintah di dalamnya menjadi suatu representasi internal dalam memoriyang mempercepat eksekusi untuk semua pemanggilan berikutnya. Jika fungsi juga melibatkan pemanggilan ke fungsi M-file yang lain, fungsi M-file yang dipanggil itu juga akan dikompilasi ke dalam memori. 3. Baris komentar sampai dengan baris bukan komentar yang pertama adalah teks help yang ditampilkan. Jika anda meminta help, misalnya >>help flipud yang menampilkan 9 baris komentar pertama dari contoh di atas. Baris komentar yang paling atas disebut baris H1 adalah baris yang dicari oleh perintah lookfor. 4. Setiap fungsi memiliki ruang kerjanya sendiri yang berbeda dengan ruang kerja MATLAB. Satu-satunya hubungan antara ruang kerja MATLAB dengan variabel-variabel dalam fungsi adalah variabel-variabel input dan output fungsi. Jika suatu fungsi mengubah nilai dalam bentuk suatu variabel input, perubahan itu hanya tampak dalam fungsi dan tidak mempengaruhi ruang kerja MATLAB. 5. Jumlah dari argument input dan output yang digunakan jika suatu fungsi dipanggil hanya ada dalam fungsi tersebut. 6. Fungsi dapat berbagi variabel dengan fungsi lain, ruang kerja MATLAB dan pemanggilan rekursi untuk dirinya sendiri jika variabelnya dideklarasikan sebagai variabel global. 7. Fungsi M-file berhenti dieksekusi dan kembali ke prompt jika telah mencapai akhir dari M-file atau jika menemui perintah return. Perintah return merupakan cara sederhana untuk menghentikan fungsi sebelum mencapai akhir file. 8. Fungsi M-file dapat memuat lebih dari sebuah fungsi.
36
Judul Buku
Untuk mengesekusi file script di atas maka Command Window ketikan nama file yang telah disimpan sebelumnya misal firstgraph. Dengan syarat bahwa sebelumnya directori pathnya sudah ditujukan ke tempat file yang disimpan Dari contoh di atas Maka di layar akan muncul.:
FUNGSI M-FILE
37
contoh 2 berikut ini diberikan perintah-perintah untuk menyelesaikan masalah pencarian nilai blok dalam tomografi.
% Script blok_tomo.m % untuk mencari nilai blok tomografi x=110;y=10;z=175; nilai bloknya nx=65;ny=35; % Banyak kotak kearah x dan y x0=90;y0=-15;z0=0; % Koordinat awal i=fix((x-x0)/dx)+1; j=fix((y-y0)/dy)+1; k=fix((z-z0)/dz)+1; no_blok=(k-1)*nx*ny + (j-1)*nx+i disp(['no blok = ',num2str(no_blok)]) % koordinat titik yang akan dicari
Untuk mengeksekusi file ini terlebih dahulu anda simpan dengan memilih File Save as , lalu beri nama blok_tomo.m
38
Judul Buku
. Setelah itu pilih Debug Run . Atau dengan cara mengetikkan nama M-file di command Window MATLAB :
blok_tomo no blok = 8471
Jika perintah Matlab tidak diakhiri dengan titik koma , hasil dari perintah itu serta nama variabelnya akan ditampilkan kembali dalam command window . Supaya tampilan lebih bagus , maka untuk menampilkan nama variabel digunakan perintah disp. Perintah echo on membuat perintah-perintah yang dibuat di M-file akan ditampilkan kambali di command window. Perintah input memungkinkan untuk meminta input dari pemakai saat M-file dijalankan. Berikutnya secara umum m-file didefinisikan menggunakan command function. Sintaks standar untuk command function adalah : function[output1,output2,]= NamaFunction(input1,input2,..) disini output1, output2,adalah barisan nama output yang akan dimunculkan dilayar command window MATLAB jika NamaFunction dipanggil dengan input argumen adalah input1,input2, Input tersebut dipanggil dan dikirim by value yaitu perubahan nilai input di dalam function tidak akan ditampilkan diluar (perubahannya hanya lokal. Karenanya jika ingin melakukan assignment fungsi by name, nama output yang ingin dikirim keluar fungsi diletakkan di sebelah kiri (yang dinamakan output1, output2,) Input dan output di atas adalah optional argumen, artinya dimungkinkan membuat suatu function tanpa input argumen. Jika diberikan tanpa output argumen maka yang ditampilkan adalah eksekusi dari statement/ekspresi terakhir. Sebagai contoh ingin dihitung rata-rata dari beberapa data. Sebagai input adalah suatu data dan output vektor xbar, maka dapat dibentuk M-file nya sebagai berikut :
FUNGSI M-FILE
39
dalam program di atas terlihat adanya penggunaan flow for. Bahasan detail tentang control flow :looping for akan di bahas pada bab selanjutnya.
40
Judul Buku
dari menu tersebut arahkan current directory ke direktori tempat dimana disimpan script yang ingin dieksekusi dengan cara mengetikkan atau browsing directory ke tempat penyimpanan script yang akan dieksekusi. Jika filenya disimpan di E:\Word maka browse path ke E:\Word. Dari contoh di atas misalkan ingin dihitung rata-rata dari data 1, 2, 3, dan 4, maka functionnya dapat dieksekusi dengan mengetikkan:
x=[1 2 3 4] x = 1 2 3 4
Untuk memberi keterangan mengenai maksud dan tujuan M-File yang kita buat agar orang lain faham dengan M-file tersebut maka perlu adanya help/keterangan, dan untuk membuat help/keterangan pada M-file dapat dilakukan dengan menggunakan command % dari MATLAB. Jika tanda % tersebut diketikkan maka command yang beserta dengannya tidak akan dibaca oleh MATLAB. Sebagai contoh misalkan untuk file average di atas dapat dibuat keterangannya dengan mengetikkan di bawah kalimat:
FUNGSI M-FILE
41
Function [xbar]=average(x);
Selain itu fungsi tersebut juga dapat dijalankan untuk tipe array. Misalkan seperti contoh di bawah ini :
A = [1 2;3 4]
42
Judul Buku
A = 1 3 2 4
dan
B = ones(2) B = 1 1 1 1
maka
C = f(A, B) C = 1.4142 2.2361 3.1623 4.1231
Dalam pembahasan sebelumnya anda telah mempelajari tentang bagamaimana membuat suatu fungsi file. Beberapa fungsi mengambil input argumen dari fungsi lainnya, yang berupa string. Untuk menjalankan fungsi khusus tersebut yang namanya disebutkan oleh string maka digunakan command feval seperti yang ditunjukkan di bawah ini : feval('functname', input parameters of function functname) Sebagai contoh adalah menghitung least common multiple dari dua bilangan bulat. MATLAB mempunyai fungsi built-in lcm. Dan untuk menghitung greatest common divisor MATLAB juga mempunyai fungsi built-in gcd. Maka persamaan yang memenuhi untuk gabungan keduanya adalah : ab = lcm(a, b)gcd(a, b) Untuk menggambarkan penggunaan command feval, dapat dilihat pada contoh m file Mylcm.m berikut ini :
FUNGSI M-FILE
43
function c = mylcm(a, b) % The least common multiple c of two integers a and b. if feval('isint',a) & feval('isint',b) c = a.*b./gcd(a,b); else error('Input arguments must be integral numbers') end
Command feval digunakan dua kali dalam baris kedua. Hal ini digunakan untuk mengecek apakah kedua inputnya integer atau bukan dan operatot logika yang digunkan adalah &. Jika kondisi ini terpenuhi maka least common multiple dikerjakan menggunkan rumus yang disebutkan sebelumnya, sebaliknya akan muncul pesan error. command error, adalah argument dalam bentuk string. Kondisi if else end yang digunakan akan dibahas lebih detail pada bab berukutnya. Function yang dieksekusi dua kali dari function mylcm adalah isint , yaitu :
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
Function baru yang digunakan disini adalah the absolute value function (abs) dan the round function (round).realmin adalah bilangan real positif terkecil di komputer anda.
44
Judul Buku
Contoh selanjutnya adalah untuk Trapezoidal Rule yang sering digunakan untuk integrasi numerik dari suatu fungsi yang terdeferensial.pada interval tertentu.
function y = corrtrap(fname, fpname, a, b) % Corrected trapezoidal rule y. % fname - the m-file used to evaluate the integrand, % fpname derivative the m-file used to evaluate the first
% 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));
Masukan parameters a and b bisa dalam bentuk arrays dengan dimensi yang sama. Untuk contoh di atas di ambil integral fungsi sinus dengan interval seperti yang ditunjukkan di bawah ini dalam bentuk array a dan b, yaitu :
a = [0 0.1];
FUNGSI M-FILE
45
Berikut ini beberapa contoh sederhana di bawah yang bisa dicobakan untuk m-file.
1. Untuk menghitung akar persamaan dari suatu fungsi kuadrat. Dengan persamaan umumnya ax2+bx+c=0 Scriptnya dapat dituliskan sebagai berikut :
function [x1,x2]=rootquad(a,b,c) d=b*b-4*a*c; x1=(-b+sqrt(d))/(2*a); x1=(-b-sqrt(d))/(2*a);
2. Misalkan untuk mencari nilai dari harga tertentu dari suatu fungsi yang telah didefinisikan. Misalkan fungsi yang didefinisikan tersebut adalah :
2x x x + cos , maka script untuk program m 2.4 2.4 2.4 filenya dapat dituliskan sebagai berikut :
3
3. Menghitung jari-jari dan keliling dari suatu dari lingkaran jika diketahui luasnya.
function [r,c] = radius(A); % RADIUS finds the radius and circumference of % a circle if the area A is given.
46
Judul Buku
Note : MATLAB bersifat case sensitif sehingga variabel atau fungsi NamaFungsi berbeda dengan namafungsi