Mebuat fungsi dengan menggunakan Matlab
Outline :
- Fungsi dengan parameter
- Fungsi dengan return value
- Fungsi rekursif
- Fungsi Nested
Matlab merupakan software yang digunakan untuk perhitungan komputasi numerik yang tingkat akurasinya sangat baik. Biasanya software ini digunakan dalam perhitungan yang membutuhkan tingkat presisi yang sangat tinggi seperti bidang computer, mesin, dan lain-lain.
1. Langkah Awal:
Bukalah matlab seperti tampilan berikut ini:

2. Langkah berikutnya :
Buatlah file baru dengan cara file -> new -> M-File. Berikut adalah contoh tampilannya :

Setelah itu, Anda dapat mengimplementasikan fungsi yang akan saya bahas berikut ini :
I. Fungsi dengan parameter
Membuat fungsi dimatlab ditandai dengan keyword function dan diakhiri dengan keyword end. Pada dasarnya, konsep pembuatan fungsi di matlab hampir sama dengan fungsi pada bahasa pemrograman structure ataupun method pada bahasa pemrogramaan OOP (Object Oriented Concept).
Berikut adalah contoh fungsi untuk menghitung data rata-rata dari matriks berukuran 1xn menggunakan matlab
| function average(C)
%jumlah kolom/panjang satu baris dari matriks C panjang = length(C); %mendeklarasikan variable sum dengan nilai default 0 jumlah = 0; %looping dari i = 1 sampai panjang dari satu baris dalam matriks C for i = 1: panjang %menjumlah setiap element pada baris dalam matriks C jumlah = jumlah + C(1,i); end %menghitung nilai rata-rata matriks rata = jumlah/panjang; %menampilkan hasil rata-rata ke layar disp(rata) end |
Setelah membuat file tesebut save dengan nama average.m. Kemudian tekan F5 atau pilih menu Debug à Run pada editor matlab. Setelah itu, jika anda sebelumnya belum membuat path ke folder tempat anda menyimpan file .m maka matlab secara otomatis akan menanyakan kepada anda seperti berikut :

Setelah muncul jendela window seperti diatas maka klik OK pada pilihan pertama. Kemudian coba jalankan fungsi yang telah anda buat dengan meletakan parameter matriks 1xn ke dalam fungsi average tersebut. Berikut adalah contohnya :
| >> Input = [1 2 3 4 5 6 7 8 9 10];
>> Input Input = 1 2 3 4 5 6 7 8 9 10 >> average(Input) 5.5000 >> |
II. Fungsi dengan return value
Untuk fungsi yang memiliki return value, saya akan memberikan contoh yang merupakan modifikasi dari fungsi yang telah saya buat pada bagian pertama. Fungsi meghitung rata akan saya ubah sehingga dapat mereturn suaut nilai yaitu rata-rata yang dihasilkan dari perhitungan.
Berikut adalah contoh programnya :
| function [hasil] = average(C)
%jumlah kolom/panjang satu baris dari matriks C panjang = length(C); %mendeklarasikan variable sum dengan nilai default 0 jumlah = 0; %looping dari i = 1 sampai panjang dari satu baris dalam matriks C for i = 1: panjang %menjumlah setiap element pada baris dalam matriks C jumlah = jumlah + C(1,i); end %menghitung nilai rata-rata matriks rata = jumlah/panjang; hasil = rata; end |
Perhatikan keyword [hasil], dalam matlab return value disimpan dalam bentuk matriks yang didefinisikan oleh ‘[‘ dan ‘]’. Untuk return value lebih dari 1 buah maka bentuknya adalah sebagai berikut
function [A, B, C, ……] = fungsi()
Kembali ke contoh program, hasil yang saya telah definisikan sebagai hasil keluaran atau return value akan menampung nilai rata-rata yang diperoleh variable rata pada baris “hasil = rata”
Pemanggilan dalam matlabnya adalah sebagai berikut :
| >> [hasil ] = average(Input)
hasil = 5.5000 >> hasil hasil = 5.5000 >> |
III. Fungsi rekursif
Fungsi rekursif adalah suatu fungsi yang akan memanggil dirinya sendiri. Saya kira anda pasti telah mengetahui mengenai hal ini. Sekarang saya akan mencoba untuk menyelesaikan relasi rekurensi
f(j, k+1) = f(j, k) – f(j+1, k)
dengan base case yang saya tentukan yaitu k = 10 atau j = 10. base case didapat dengan menggunakan general solution :
f(j, k) = sin(1.0 + (j-k)*pi/3);
Berikut ini adalah soure code dari program tersebut :
| function Hasil = rekursif(j, k)
if k == 10 || j == 10 Hasil = f(j, k); else A = rekursif(j,(k+1)); B = rekursif((j+1), k); Hasil = A + B; end function data = f(j, k) data = sin(1.0 + (j-k)*pi/3); end end |
Perhatikan bahwa fungsi tersebut memanggil dirinya sendiri. Dan dalam contoh program ini terdapat fungsi yang didefinisikan secara nested function yaitu fungsi f dalam fungsi rekursif.
Untuk menjalankan programnya di matlab : Hasil = rekursif(0, 0);
good…tolong gan kalo dua variabel output contohnya begimane…ane coba kok output tetap saja satu
cepet yah di respon
ini contoh buat yang dua ouput,
Matlab File :
function [A, B] = fungsiCoba
A = eye(4);
B = rand(4,4);
end
Cara memanggilnya :
[Var1, Var2] = fungsiCoba
~selamat mencoba
gan tolong bantu ane,,
kok aku udah bener tapi gag bisa jalan ya..
yang kayak contoh di atas noh..
emangnya matlabnya versi berapa ?
mungkin coba tambahin “()” seperti berikut :
matlab file (fungsiCoba.m) –> kasih nama filenya harus sama dengan nama fungsi
function [A, B] = fungsiCoba()
A = eye(4);
B = rand(4,4);
end
——————————————–
di matlab filenya coba dulu tekan F5, nanti matlabnya akan bertanya mengenai path dari file, trus pilih Change Matlab Current Directory.
trus, di matlabnya coba panggil :
[A, B] = fungsiCoba()
~semoga berhasil
berbicara tentang MATLAB, buku yg dibicarakan diatas, ada stok saat ini. silahkan liat2 lainnya juga.
bupka’s online menyediakan buku terpakai (used books) berkualitas dan asli original dengan harga miring,banyak buku teknik. silahkan kunjungi
http://bupka.wordpress.com
mau tanya nih…
gmn cara nyimpan hasil data perhitungan di matlab sehingga dianggap sebagai data base…
plisss dijawab ya
mas, mu tanya misal :
function [keyPoints,descriptors] = sift(image,expandOrigIM)
global verbose;
if(verbose == 1) fprintf(‘mulai\n’); end
sigma = sqrt(2);
g = getFilter(sigma);
if(expandOrigIM == ‘Y’)
[X Y] = meshgrid( 1:0.5:size(image,2), 1:0.5:size(image,1) );
image = interp2( image, X, Y, ‘*linear’ );
end
nah functionnya Sift ya?trs parameternya apa ya?
mohon dijawab ya mas,makasihh..
sudah dijawab via email.
pertanyaan sudah sy posting langsung ke email mas,
sy kurang familiar dengan program matlab
shg sy sertakan M-file yang telah sy buat
M-file tsb belum berjalan dengan baik ketika d panggil
trimakasih
mas q mw nx.. anonymous function, primary and subfunctions, private functions, nested function, function overloading, dan global variables itu apa? trus bedanya masing2 apa? dan contoh programnya dalam matlab masing2 fungsi tersebut seperti apa?
tlg djwb y…
mkc…
Saya buat sebuah function. Bagaimana menjadikan Hasil function menjadi sebuah inputan: ex
function des2bin(input)
desimal=input;
switch desimal
case -15
[1 1 1 1 1] %-15
case -14
[1 1 1 1 0] %-14
case -13
[1 1 1 0 1] %-13
case -12
[1 1 1 0 0] %-12
case -11
[1 1 0 1 1] %-11
case -10
[1 1 0 1 0] %-10
case -9
[1 1 0 0 1] %-9
case -8
[1 1 0 0 0] %-8
case -7
[1 0 1 1 1] %-7
case -6
[1 0 1 1 0] %-6
case -5
[1 0 1 0 1] %-5
case -4
[1 0 1 0 0] %-4
case -3
[1 0 0 1 1] %-5
case -2
[1 0 0 1 0] %-2
case -1
[1 0 0 0 1] %-1
case 0
[0 0 0 0 0] %0
case 1
[0 0 0 0 1] %1
case 2
[0 0 0 1 0] %2
case 3
[0 0 0 1 1] %3
case 4
[0 0 1 0 0] %4
case 5
[0 0 1 0 1] %5
case 6
[0 0 1 1 0] %6
case 7
[0 0 1 1 1] %7
case 8
[0 1 0 0 0] %8
case 9
[0 1 0 0 1] %9
case 10
[0 1 0 1 0] %10
case 11
[0 1 0 1 1] %11
case 12
[0 1 1 0 0] %12
case 13
[0 1 1 0 1] %13
case 14
[0 1 1 1 0] %14
case 15
[0 1 1 1 1] %15
otherwise
disp(‘hanya bilangan bulat negatif/positif’)
end
end
M-file yang di jalankan
input1=-1;
input2=1;
A=des2bin(input1) % error
B=des2bin(input2) % error
Bagaimana Cara menjadika hasil function “des2bin” menjadi inputan bagi variabel A dan B?????
Mohon bantuannya…
terima kasih…
^_^
ass. mohon bantuannya, gmn cara memanggil hasil function jadi inputan bwt perhitungan berikutnya?aku nyoba berkali kali tp undefine functoin or variable trus. tengkyu.
mas mau tanya kalo fungsi program dengan rumus
nilai sudut (alfa)tangen = 2 tinggi (h)/ diameter (d)
bagaimana bentuk fungsinya
mohon bantuannya
trims
rumusnya sudah ada kan
jadi sebetulnya tinggal dibuat fungsinya dengan 2 buah parameter :
function tangen = sudut(tinggi, diameter)
tangen = arc(2*tinggi / diameter)
end
*program diatas belum saya cek di matlab, jadi silakan di perbaiki jika ada error, tapi idenya seperti itu
CMIWW
.mw tx ne mas,
apa sja yg trmasuk dlm 11 pemrograman dasar matlab, sdkit d jelasin
.d krim k email aQ aja ya,
.please
.b’4 tenciu
gan kok yang ini gak bisa dijalanin, masih ada errornya. tolong pencerahannya gan
function [outputimage]=Recognition(T,m1, Eigenfaces, ProjectedImages, imageno);
MeanInputImage=[];
[fname pname]=uigetfile(‘*.jpg’,'Select the input image for recognition’);
InputImage=imread(fname);
InputImage=rgb2gray(InputImage);
InputImage=imresize(InputImage,[200 180],’bilinear’);%resizing of input image. This is a part of preprocessing techniques of images
[m n]=size(InputImage);
imshow(InputImage);
Imagevector=reshape(InputImage’,m*n,1);%to get elements along rows as we take InputImage’
MeanInputImage=double(Imagevector)-m1;
ProjectInputImage=Eigenfaces’*MeanInputImage;% here we get the weights of the input image with respect to our eigenfaces
% next we need to euclidean distance of our input image and compare it
% with our face space and check whether it matches the answer…we need
% to take the threshold value by trial and error methods
Euclideandistance=[];
for i=1:T
temp=ProjectedImages(:,i)-ProjectInputImage;
Euclideandistance=[Euclideandistance temp];
end
% the above statements will get you a matrix of Euclidean distance and you
% need to normalize it and then find the minimum Euclidean distance
tem=[];
for i=1:size(Euclideandistance,2)
k=Euclideandistance(:,i);
tem(i)=sqrt(sum(k.^2));
end
% We now set some threshold values to know whether the image is face or not
% and if it is a face then if it is known face or not
% The threshold values taken are done by trial and error methods
[MinEuclid, index]=min(tem);
if(MinEuclid<0.8e008)
if(MinEuclid<0.35e008)
outputimage=(strcat(int2str(index),'.jpg'));
figure,imshow(outputimage);
switch index % we are entering the name of the persons in the code itself
% There is no provision of entering the name in real time
case 1
disp('Jonathan Swift');
disp('Age=22');
case 2
disp('Eliyahu Goldratt');
disp('Age=25');
case 3
disp('Anpage');
disp('Age=35');
case 4
disp('Rizwana');
disp('Age=30');
case 5
disp('Rihana');
disp('Age=48');
case 6
disp('Seema');
disp('Age=19');
case 7
disp('Kasana');
disp('Age=27');
case 8
disp('Hanifa');
disp('Age=33');
case 9
disp('Alefiya');
disp('Age=22');
case 10
disp('Mamta');
disp('Age=50');
case 11
disp('Mayawati');
disp('Age=39');
case 12
disp('Elizabeth');
disp('Age=87');
case 13
disp('Cecelia Ahern');
disp('Age=78');
case 14
disp('Shaista Khatun');
disp('Age=56');
case 15
disp('Rahisa Khatun');
disp('Age=45');
case 16
disp('Ruksana');
disp('Age=64');
case 17
disp('Parizad Zorabian');
disp('Age=38');
case 18
disp('Heena kundanani');
disp('Age=20');
case 19
disp('Setu Savani');
disp('Age=21');
case 20
disp('Mohd Zubair Saifi');
disp('Age=20');
otherwise
disp('Image in database but name unknown')
end
else
disp('No matches found');
disp('You are not allowed to enter this system');
outputimage=0;
end
else
disp('Image is not even a face');
outputimage=0;
end
save test2.mat % this is used to save the variables of the file and thus can be used to set Eigenvalues
end