script and function files
DESCRIPTION
mata kuliah teknologi pertanian unhasTRANSCRIPT
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)’)