script and function files

48
MODULE 02 Script & Function File Prof. Salengke, Ph. Agricultural Engineering, Hasanuddin Univers

Upload: sangalank

Post on 24-Dec-2015

35 views

Category:

Documents


1 download

DESCRIPTION

mata kuliah teknologi pertanian unhas

TRANSCRIPT

MODULE 02

Script & Function File

Prof. Salengke, Ph. D.Agricultural Engineering, Hasanuddin University

Script File – The m file

Script file adalah sederetan perintah MATLAB dan merupakan program MATLAB.

File (program) tersebut dapat dibuat, diedit, dan disimpan dengan menggunakan text editor.

Ketika program tersebut dieksekusi, MATLAB mengeksekusi perintah-perintah MATLAB dalam program tersebut berdasarkan urutan penuisannya.

Mudah digunakan – dapat dieksekusi berulang kali tanpa harus mengetik ulang perintah-perintah dalam program seperti yang dilakukan pada saat bekerja dalam Command Window.

Aturan Penamaan File

Nama file (program) harus dimulai dengan huruf dan dapat dikombinasikan dengan angka dan tanda garis bawah. Jumlah karakter dalam nama file dapat mencapai 31 karakter.

Jangan menggunakan nama variabel atau fungsi yang telah didefinisikan secara internal sebagai nama file.

Mengeksekusi Script (m) File

Pada command window, ketik nama file tanpa ekstensi (.m) setelah tanda command prompt.

Contoh: Untuk mengeksekusi program yang telah disimpan dengan nama Coba_Coba.m; maka pada command prompt pada Command Window ketik:

>> Coba_Coba

Variabel Dalam MATLAB

Variabel yang dibuat dalam MATLAB merupakan variabel global (variabel yang dibuat pada satu bagian dari MATLAB dapat dipanggil dan digunakan pada bagian MATLAB lainnya.

Variabel yang dibuat pada Command Window dapat digunakan oleh script file.

Variabel yang didefinisikan dalam script file dapat digunakan pada Command Window

Input Untuk Script file

Variabel didefinisikan secara internal dalam script file. Apabila kita ingin mengeksekusi script file dengan nilai baru untuk satu atau lebih variabel, maka kita harus mengedit file tersebut dengan memasukkan nilai yang baru untuk variabel yang diubah nilainya. Setelh itu, file tersebut disimpan kemudian dieksekusi.

Variabel didefinisikan pada Command Window kemudian script file yang akan menggunakan variabel tersebut dieksekusi.

Input Untuk Script file

Variabel didefinisikan dalam Script file tanpa nilai spesifik. Ketika file tersebut dieksekusi, pengguna diminta untuk memasukkan nilai untuk setiap variabel.Hal ini dilakukan dengan menggunakan statemen input dalam script file.

x = input(‘please enter a value for x’)

Output Dari Script File

Output yang dihasilkan ditayangkan pada Command Window.

Output akan ditayangkan secara otomatis apabila perintah (statemen) tidak diakhiri dengan tanda titik-koma (;).

Output dapat secara sengaja ditayangkan dengan menggunakan perintah disp

Perintah Display (disp)

disp(A) Menayangkan isi (nilai) dari variabel A

disp(’text’) Menayangkan text (string) yang terdapat dalam tanda kutip

Contoh Penggunaan perintah disp dalam Script file

% Contoh input dan output Script file

Ujian1 = input(‘Ketik nilai Ujian ke-1‘);

Ujian2 = input(‘Ketik nilai Ujian ke-2‘);

Ujian3 = input(‘Ketik nilai Ujian ke-3‘);

Nilai_rata_rata = (Ujian1+ Ujian2+ Ujian3)/3;

disp(‘Nilai Rata-rata hasil ujian: ‘)

disp(Nilai_rata_rata)

Script file Untuk Membuat Output dalam bentuk Tabel (Script)% Program ini Memperlihatkan cara membuat dan menayangkan

% Output dalam bentuk tabel

% Tabel memperlihatkan jumlah penduduk menurut tahun

Tahun = [1984 1986 1988, 1990, 1992, 1994, 1996]; % Vector untuk Tahun

Pop = [127 130 136 145 158 178 211]; % Vector untuk jumlah penduduk

% Mensubstitusi vektor tahun kedalam kolom 1 dan vektor populasi ke kolom 2

table_Tahun_Pop(:,1) = Tahun’;

table_Tahun_Pop(:,2) = Pop’;

disp (‘ TAHUN POPULASI’)

disp(‘ (Juta)’)

disp(‘ ‘)

disp(table_Tahun_Pop)

Latihan: Tulis sebuah program Matlab (script file) untuk

menghitung jumlah uang (B) dalam sebuah rekening tabungan setiap akhir tahun selama 10 tahun. Jumlah awal (A) = 1.000.000 rupiah dan tingkat suku bunga (r) = 6.5% per tahun. Tayangkan hasilnya dalam bentuk tabel. Rumus untuk menghitung nilai B adalah sebagai berikut:

Nilai n pada persamaan diatas adalah 10.nrAB )1(

Penyelesaian (Script)

format bank

Tahun=[1:10]; % membuat vector untuk bilangan tahun

B = 1000000*(1+0.065) .^ Tahun; % membuat vector nilai B

table_Tahun_NilaiTab(:,1)=Tahun’;

table_Tahun_NilaiTab(:,2)=B’;

disp(‘ Tahun Nilai Tabungan’)

disp(‘ (Rp)’)

disp(‘ ‘)

disp(table_Tahun_NilaiTab)

Perintah fprintf Digunakan untuk menulis data output yang

terformat ke sebuah file atau ke Command Window.

Apabila beberapa perintah fprintf digunakan secara berurut maka teks akan ditayangkan secara bersambung pada baris yang sama.

Untuk memulai mencetak pada baris baru, gunakan perintah \n

Contoh 1

fprintf(‘Analisa Teknik Merupakan’)

fprintf(‘Mata Kuliah Yang Menyenangkan’)

fprintf(‘I Love it.’)

Contoh 2

fprintf(‘Analisa Teknik Merupakan \n’)

fprintf(‘Mata Kuliah Yang Menyenangkan. \n’)

fprintf(‘I Love it.’)

Perintah fprintf

Dapat juga digunakan untuk menayangkan teks dan nilai dari variabel.

Angka dapat ditempatkan diantara teks. Beberapa nilai dapat ditempatkan dalam

teks dengan menuliskan kode format untuk setiap nilai dan menuliskan daftar setiap variabel yang dipisahkan dengan tanda koma.

ContohUjian1=input(‘Masukan nilai Ujian Pertama‘);Ujian2=input(‘Masukkan nilai Ujian Kedua‘);Ujian3=input(‘Masukkan nilai Ujian Ketiga‘);Nilai_Rerata=(Ujian1+Ujian2+Ujian3)/3;fprintf(‘Nilai Ujian Rata-rata = %g’, Nilai_Rerata)

CATATAN: Kode format untuk penayangan angka:CATATAN: Kode format untuk penayangan angka:

%e%e scientific format dengan notasi e scientific format dengan notasi e %E%E scientific format dengan notasi Escientific format dengan notasi E%f%f decimal formatdecimal format%g%g bentuk lain dari %e atau %fbentuk lain dari %e atau %f

MATLAB Function File File fungsi (Function file) merupakan sebuah

program Matlab yang dapat digunakan untuk perhitungan yang sering dilakukan; misalnya menghitung nilai dari sebuah fungsi pada berbagai nilai variabel bebasnya, atau melaksanakan sederet perintah dengan nilai variabel yang berbeda.

File fungsi dapat juga digunakan sebagai sebuah subprogram dalam program yang lebih besar.

File Fungsi (Function File) File fungsi digunakan seperti halnya penggunaan

fungsi internal (built-in functions). File fungsi dapat digunakan pada command window,

dalam script file, atau dalam file fungsi yang lain. Umumnya, data ditransfer ke file fungsi melalui variabel

input dn hasil perhitungan ditransfer kembali melalui variabel output.

Semua perhitungan dan variabel yang digunakan dalam fungsi bersifat lokal sehingga tidak dikenali dan tidak dapat digunakan oleh bagian lain dari MATLAB.

File fungsi serupa dengan subroutine dalam FORTRAN dan BASIC, procedures dalam PASCAL, dan functions dalam C++.

Membuat File Fungsi File fungsi dibuat dengan menggunakan m-file editor dalam

MATLAB atau dengan menggunakan Notepad pada Windows. Baris pertama pada file fungsi harus berupa baris definisi yang

ditandai dengan perintah fungsion. Apabila baris pertama bukan perintah fungsion maka MATLAB menganggapnya sebagai script file.

Baris definisi fungsi menetapkan bahwa file tersebut merupakan sebuah file fungsi serta mendefinisikan nama dari fungsi dan daftar variabel input serta variabel output.

Kata function pada baris definisi fungsi harus diketik dengan huruf kecil.

Pada saat file disimpan, nama file harus sama dengan nama fungsi.

Jangan menggunakan nama fungsi yang telah ada secara internal dalam Matlab (built-in function) sebagai nama file fungsi.

Untuk mengecek nama fungsi yang telah digunakan secara internal oleh Matlab, ketik help name pada Command Window.

Contoh Baris Definisi Fungsi

Function definition line File name

function[A]=RectArea(a,b) RectArea.mfunction A = RectArea(a,b) RectArea.mfunction[V,S]=SphereVolArea(r) SphereVolArea.mfunction[d,h]=projectile(v,theta) projectile.mfunction=CirclePlot(r) CirclePlot.mfunction CirclePlot(r) CirclePlot.m

CATATAN: Tanda kurung besar [ ] tidak dibutuhkan apabila fungsi tersebut hanya memiliki satu variabel output.

Apabila fungsi tidak memiliki variabel output maka tanda kurung besar dan tanda sama dengan (=) tidak dibutuhkan.

Format File Fungsi

function[xout, yout]=namafungsi(xin,yin)

%

% blok untuk komentar

%

A=

B=

xin=

yi= badan fungsi

.

.

xout= Variabel output harus diberi nilai

yout=

Membuat File Fungsi Nama variabel input dan output yang ditetapkan pada

baris definisi fungsi (baris pertama) dan pada badan fungsi bersifat lokal sehingga nama lain dapat digunakan dalam pemanggilan fungsi (function call). Nilai spesifik atau rumus matematik dapat digunakan sebagai variabel input.

Variabel diberi nilai berdasarkan posisinya pada daftar variabel output atau input pada baris definisi fungsi.

Tanda titik-koma dalam file fungsi mengakibatkan output tidak ditayangkan pada Command Window. Apabila tanda titik-koma tidak digunakan, output akan ditayangkan pada Command Window.

Baris definisi Fungsi Contoh variabel saat

fungsi digunakan

function[A]=RectArea(a,b) S=RectArea(g,r)

T=RectArea(8,25)

Pada contoh pertama, g dan r harus diberi nilai sebelum digunakan sebagai variabel input. Ketika fungsi tersebut dieksekusi, nilai variabel a akan menggunakan nilai variabel g sedang nilai variabel b akan menggunakan nilai variabel r. Nilai dari A akan digunakan untuk S.

Pada contoh kedua, variabel a akan diberi nilai 8 dan variabel b akan diberi nilai 25.

Perintah 2-D plot

plot(x,y) dimana x merupakan sebuah vector (1-dimensional array), dan y juga sebuah vector. Kedua vektor tersebut harus memiliki jumlah elemen yang sama.

Perintah plot(x,y) membuat sebuah kurva dengan nilai x sebagai absis dan nilai y sebagai ordinat.

Kurva tersebut terbuat dari segmen-segmen garis yang menghubungkan titik-titik yang ditentukan oleh koordinat x dan y.

Membuat Vektor x dan y

Apabila data diberikan, data-data tersebut diinput sebagai elemen dalam vektor x dan y.

Apabila nilai dari y dihitung dari sebuah fungsi x, maka vektor x harus dibuat terlebih dahulu kemudian nilai-nilai untuk y dihitung dari fungsi x tersebut. Jarak elemen pada vktor x harus kecil agar kurva yang dihasilkan dapat memperlihatkan detail dari fungsi.

Membuat Plot Dari Data Data Populasi

Data dapat diplot pada Command Window atau dengan membuat membuat dan mengeksekusi script file.

TahunTahun 19841984 19861986 19881988 19901990 19921992 19941994 19961996

PopulasiPopulasi 127127 130130 136136 145145 158158 178178 211211

Pada command window:

>>Tahun=[1984 1986 1988 1990 1992 1994 1996];>>Pop =[127 130 136 145 158 178 211];>>plot(Tahun,Pop)

Membuat Plot Dari fungsi

)5sin(3 6.0 xy x for 0≤for 0≤xx≤5≤5

% A script file for creating a plot of the function 3^(-0.6x)*sin(5x)

x=[0:0.01:5];y=3 .^(-0.6*x) .*sin(5*x);plot(x,y)

Program (Script file) untuk memplot fungsi:

CATATAN: Seandainya vector x dibuat dengan spasi yang jarang (misalnya x=[0:0.5:5], plot yang dihasilkan tidak akan akurat.

Memformat Plot Plot dapat diformat dengan cara:

Menambah judul plot.

Menambah label untuk sumbu x dan y.

Mengubah jenis, ketebalan, dan warna garis kurva.

Mengubah kisaran nilai sumbu x dan y.

Menambahkan legend.

Menambah blok teks.

Menambah grid.

Perintah plot dapat meliputi pilihan yang menetapkan warna, jenis, dan bentuk marker dari garis kurva.

plot(x,y,’color_linestyle_marker’)

plot(x,y,’r_-_v’)

Color codeColor code Line codeLine code Marker codeMarker code

y yellowy yellow

m magentam magenta

c cyanc cyan

r redr red

g greeng green

b blueb blue

w whitew white

k blackk black

- - SolidSolid

: : dotteddotted

-. -. dashdotdashdot

-- -- dasheddashed

. point . point

o circleo circle

x x-markx x-mark

+ plus+ plus

* Star* Star

s squares square

d diamondd diamond

v trianglev triangle

Contoh Perintah Plot

plot(x,y,’r’) plot y vs. x dengan garis warna merah

plot(x,y,--’) plot y vs. x dengan garis putus-putus warna hitam (default)

plot(x,y,’g:’) plot y vs. x dengan garis titk-titik warna hijau

plot(x,y,’b*-.) plot y vs. x dengan garis putus dan titik berselang-seling dengan warna biru dan marker bintang

Perintah Format Plot

title(‘text’) menambah text sebagai judul pada bagian atas plot. xlable(‘text’) menambah text sebagai label sumbu x. ylable(‘text’) menambah text sebagai label sumbu y. axis(xmin xmax ymin ymax) menetapkan batas min dan max sumbu x

dan y. legend(‘text 1’,’text 2’,’text 3’) membuat legend dengan menggunakan

text untuk melabel kurva dalam plot. Lokasi legend ditentukan oleh mouse.

text(x,y,’text’) menempatkan text pada koordinat x,y. gtext(‘text’) Menempakan text pada plot. Ketika perintah tersebut

dieksekusi, figure window akan muncul dan lokasi teks di click dengan mouse.

Contoh script file Untuk Format plot% Script file for formatted plot of population growth

year=[1984 1986 1988 1990 1992 1994 1996]; % create a vector for year

pop =[127 130 136 145 158 178 211]; % create a vector for population data

plot(year,pop,’g—s’) % plotting pop vs. year with a dashed green line and square markers

xlabel(‘Year’) % create label for x-axis

ylabel(‘Population (Millions)’) % create label for y-axis

title(‘Population Growth from 1984 to 1996’) % Add title for the plot

axis([1982 1998 100 250]) % setting limits of the axes

text(1984,220,’Data from Reference [3]’) % Insert the text at coordinate x=1984 and y=220

Memformat Plot Pada Figure Window

Figure Window dapat digunakan untuk memformat plt secara interaktif.

Pada Figure Window, click menu Edit dan pilih Figure Properties.

Click pada Label untuk menambah judul plot dan label untuk sumbu x, y, dan z.

Pilih Line untuk mengubah Line properties. Plot properties dapat juga diedit dengan

menggunakan menu Insert pada Figure Window. Gunakan arrow (Edit Plot) dan click pada beberapa

titik pada gambar (garis kurva, sumbu, dll.) untuk mengubah penampakan gambar.

Plot Skala Logarithmic

loglog(x,y) membuat plot y vs. x dengan skala logaritma pada kedua sumbu.

semilogx(x,y) membuat plot y vs. x dengan skala logaritma pada sumbu x dan skala linier pada sumbu y.

semilogy(x,y) membuat plot y vs. x dengan skala logaritma pada sumbu y dan skala linier pada sumbu x.

Catatan Penting

Nilai negatif dan nol tidak dapat diplot pada skala logaritme.

Label nilai pada skala logaritme merupakan nilai aktual dan bukan merupakan nilai logaritme dari nilai yang diplot.

Jarak skala pada sumbu logaritma tidak seragam.

Contoh Script file untuk memplot nilai fungsi :

pada interval 0 ≤ x ≤ 2

Program (script) file dapat ditulis sbb:

)1(8 xy

% Script file untuk memplot persamaan y=8^(1-x) dimana 0 ≤ x ≤ 2% Buat vektor untuk x dan y.

x=[0:0.01:2];y=8 .^(1-x);

% Buat 4 plot pada satu halaman subplot(2,2,1)plot(x,y,’r’)subplot(2,2,2)semilogx(x,y,’b’)subplot(2,2,3)semilogy(x,y,’g’)subplot(2,2,4)loglog(x,y,’c’)

Memplot Grafik Spesialbar(x,y)

stairs(x,y)

stem(x,y)

polar(theta,r)

Data Pertumbuhan Penduduk:

TahunTahun 19841984 19861986 19881988 19901990 19921992 19941994 19961996

PopulasiPopulasi 127127 130130 136136 145145 158158 178178 211211

Tahun=[1984 1986 1988 1990 1992 1994 1996];Pop=[127 130 136 145 158 178 211];subplot(3,1,1)bar(Tahun,Pop,'r')subplot(3,1,2)stairs(Tahun,Pop,'b')subplot(3,1,3)stem(Tahun,Pop,'k')

The m file

Contoh Polar plot

Gambarkan polar plot untuk fungsi:

Pada Command Window:

>>theta=linspace(0,6*pi,150);

>>r=theta .^1.2;

>>polar(theta,r)

2.1r

Perintah fplot

Perintah fplot memplot nilai dari sebuah fungsi.fplot(‘ketik persamaan disini’,[xmin xmax])

fplot(‘ketik persamaan disini’,[xmin xmax ymin ymax],’r’)

Perintah fplot yang pertama memplot nilai dari fungsi pada interval nilai x yang ditentukan oleh argumen [xmin xmax].

Perintah fplot yang kedua memplot nilai fungsi pada interval nilai x dan y yang diberikan. Kurva digambarkan dengan menggunakan garis berwarna merah.

Contoh:

Plot nilai fungsi:

Program (m file) untuk memplot nilai fungsi tersebut dengan menggunakan perintah fplot.

fplot(‘cos(8*x+2)/exp(-0.8*x)’,[0 5])

fplot(‘cos(8*x+2)/exp(-0.8*x)’,[0 5 -60 50],’r’)

)8.0exp(

)28cos(

x

xy

Memplot lebih dari satu kurva pada satu plot

Gunakan perintah plotplot(x1,y1,x2,y2,x3,y3)

Memplot x1 vs. y1, x2 vs. y2, dan x3 vs. y3 pada plot yang sama. Secara default, Matlab membuat kurva dengan warna garis yang berbeda.

Kurva dapat dikustomisasi sbb:

plot(x1,y1,’r*’,x2,y2,’gd--’,x3,y3,’yv:’)

Contoh:

Sebuah benda dengan massa m=0.5 kg jatuh bebas dari ketinggian 500 meter. Data experiment untuk ketinggian (h) vs. waktu (t)) adalah sebagai berikut:

Bandingkan hasil eksperimen tersebut dengan hasil perhitungan dari model matematik di bawah.

tt 00 11 22 33 44 55 66 77 88 99 1010

hh 500500 495495 490490 470470 430430 390390 340340 290290 220220 145145 6060

2** tgmhh o

The script file to solve the problem:

t_exp=[0:10];h_exp=[500 495 490 470 430 390 340 290 220 145 60];t_mod=[0:0.1:10];mass =0.5;g =9.8;h_0 =500;h_mod=h_0 – mass*g*t_mod .^2;plot(t_exp,h_exp,’rd-’,t_mod,h_mod,’--’)xlabel(‘Time (s)’)ylabel(‘Height (m)’)title(‘Height as a function of time’)legend(‘Experiment’,’Model’)axis([0 11 0 600])text(1,100,’Comparison between Experiment and Model’)

Memplot lebih dari satu kurva dalam satu plot

Gunakan perintah hold on dan hold off. Metode ini sangat berguna apabila semua informasi (vector) yang dibutuhkan untuk memplot data tidak tersedia pada waktu yang sama.

Perintah hold on mempertahankan plot dan semua karakteristik sumbu x dan y tetap terbuka sehingga perintah plot berikutnya dapat ditambahkan.

Perintah hold off menutup plot.

Example: A Script file using hold on and hold off commands

% An m file using hold on and hold off commands.x=linspace(0,4*pi,200);y1=3*sin(x);plot(x,y1,’r’)hold ony2=2*abs(cos(x));plot(x,y2,’b’)y3=cos(0.5*x);plot(x,y3,’g’)axis([0 14 -4 4])legend(‘3sin(x)’,’2abs(cos(x))’,’cos(0.5X)’)hold off

Multiple Plot pada satu halaman

Menggunakan perintah subplot(m,n,p) Perintah subplot(3,2,p) membuat 6 plot yang disusun dalam bentuk 3 baris dan 2 kolom sehingga nilai dari p adalah 1 sampai 6.

subplot(3,2,1) subplot(3,2,2)

subplot(3,2,3)

subplot(3,2,5)

subplot(3,2,4)

subplot(3,2,6)

M file multipel plot pada satu halaman% m file using subplot commandx1=linspace(1,20,100);y1=sin(x1);subplot(2,3,1)plot(x1,y1)axis([0 20 -2 2])text(2,1.5,’Plot of sin(x)’)y2=sin(x1).^2;subplot(2,3,2)plot(x1,y2)axis([0 20 -2 2])text(2,1.5,’Plot of sin^2(x)’)y3=sin(x1.^3);subplot(2,3,3)plot(x1,y3)axis([0 20 -2 2])text(2,1.5,’Plot of sin^3(x)’)

subplot(2,3,4)fplot(‘abs(sin(x))’,[0 20 -2 2])text(2,1.5,’Plot of abs(sin(x))’)subplot(2,3,5)fplot(‘sin(x/2)’,[0 20 -2 2])text(2,1.5,’Plot of sin(x/2)’)Subplot(2,3,6)fplot(‘sin(x.^1.4)’,[0 20 -2 2])text(2,1.5,’Plot of sin(x^1.4)’)