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:

halaman awal matlab

2. Langkah berikutnya :

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

open file

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 :

path matlab

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);

About these ads
    • cimot
    • March 25th, 2010

    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

    • eca
    • April 17th, 2010

    gan tolong bantu ane,,
    kok aku udah bener tapi gag bisa jalan ya..

    yang kayak contoh di atas noh..

  1. 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

  2. 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

    • meila
    • May 22nd, 2010

    mau tanya nih…
    gmn cara nyimpan hasil data perhitungan di matlab sehingga dianggap sebagai data base…
    plisss dijawab ya

    • mayang
    • August 20th, 2010

    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. :)

        • aang
        • September 23rd, 2013

        minta penjelasannya juga dong , terima kasih :) buat tugas nih

    • titah
    • November 15th, 2010

    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

    • dephie
    • May 11th, 2011

    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…

    • ocheindra
    • December 8th, 2011

    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…
    ^_^

    • dian
    • April 25th, 2012

    ass. mohon bantuannya, gmn cara memanggil hasil function jadi inputan bwt perhitungan berikutnya?aku nyoba berkali kali tp undefine functoin or variable trus. tengkyu.

    • gito pramana
    • November 1st, 2012

    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

    • Amel
    • November 7th, 2012

    .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

  3. 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

  4. bagi tutotial nya yang lengakap dong kok ada fuzzy matlab jg?

  5. Sy pakai MATLAB versi 2013 koq buat function sama sekali ngga bisa ya? Apa ada cara tertentu krn beda dgn punya nya admin blog.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: