Global Function

By | January 15, 2021
Print Friendly, PDF & Email
1,735 Views

Sinopsis Dasar-Dasar Pemrograman Matlab – Function

Sebelumnya kalian telah belajar dasar-dasar pemrograman matlab yaitu Array, nah pada bagian ini kalian akan belajar mengenai function pada Matlab yang sangat berguna yaitu

  1. Pengertian function
  2. Membuat Function
  3. Anonymous Function
  4. Overloading Function menjadikan function yang kalian buat menjadi dinamis argument inputnya
  5. Security Kode Function agar kalian bisa share binary code tanpa takut diliat source codenya
  6. Membuat Toolbox mempermudah kalian membuat project

Dengan mempelajari  Dasar-Dasar Pemrograman Matlab Function, kalian akan lebih mudah dalam mengimplementasikan algoritma dalam bahasa pemrograman serta mengurangi/reduce kode yang sering dipanggil berulang-ulang, layaknya sebuah persamaan matematika yang menggunakan function y(x)

Pengertian Function

Pengertian function merupakan sekumpulan code yang menerima input dan output argument  yang bertugas untuk operasi tertentu. Function sudah sering kita gunakan lho seperti perintah clc, clear, whos, close adalah perintah/function bawaan Matlab. Sebuah function mempunyai tipe berikut

  1. Terdiri dari argumen input dan output
  2. Tidak mempunyai argumen input dan output

Model umum dari sebuah function yaitu

function [argument_output] = namafunction(argument_input)
%deklarasi prosedur

Penamaan function sebaiknya menggunakan huruf kecil semua dan disimpan dengan akhiran .m serta tidak mengandung spasi, contoh berikut sebuah perhitungan luas segitiga dengan rumusnya

    \[luassegitiga = {{alas*tinggi} \over 2}\]

function [luas] = luassegitiga(a,t)
%menghitung luas segitiga
luas = 0.5*(a*t);

untuk cara pemanggilan function, kalian harus pastikan berada di work directory yang sama dengan lokasi function disimpan.

luassegitiga(10,8)

Satu hal yang harus kalian tahu yaitu perlu hati-hati dalam membuat nama function agar tidak terjadi bentrok dengan function built in nya Matlab, cara buat ceknya yaitu help namafunction, bila ada pesan error maka dipastikan tidak ada nama function tersebut.

Sebenarnya ada beberapa function di matlab yang bersifat terbuka lho alias kalian bisa mengintip source code nya yaitu dengan perintah edit namafunction, coba saja perintah berikut kalian coba di command window

edit kmeans

 

Function kmeans adalah algoritma k-means clustering, tapi karena function tersebut dibuat oleh pihak matlab agak rumit bagi orang awam untuk memahami kode-kodenya karena kode tersebut sudah dioptimasi serta melibatkan banyak argument.

Membuat function dalam sebuah script

Kalian juga bisa membuat function yang bersifat local dalam sebuah script adapun untuk cara penempatan kode function diletakan dipaling bawah setelah script, contohnya seperti berikut

clc;clear all;close all;
%cara memanggil function dalam sebuah script
alas = 9;
tinggi = 90;
luas_segitiga = luassegitiga(alas,tinggi)
 
function [luas] = luassegitiga(a,t)
    %menghitung luas segitiga
    luas = 0.5*(a*t);
end

Kalian simpan dengan nama contoh_function.m dan jangan lupa untuk run F5 akan menghasilkan berikut:

Jadi alangkah baiknya kalau kalian membuat nama function  dan script mengikuti aturan berikut

  1. Nama function dan script harus lowercase
  2. Nama function tidak boleh dipisah sedangkan script bisa dipisah dengan underscore: hitungkuadrat.m (fungsi) sedangkan contoh_panggil_function.m (script)

Anonymous Function

Anonymous function atau function tanpa nama, biasa digunakan untuk mempermudah pemanggilan  function tanpa disave dalam sebuah file ataupun function tersebut sebagai input argument pada function yang lain. Biasanya anonymous function digunakan untuk algoritma pada kasus metaheuristik dengan banyak function. Anonymous function hanya terdiri dari satu baris saja alias inline function seperti berikut

y = @(a) a*2; %adalah fungsi kuadrat
z = y(9); %menghasilkan angka 18

Variabel y diatas disebut handle function, kalian bisa cek whos.

Jadi kalian jangan bingung ya kalau ada tanda @ yang merupakan place holder nya anonymous function. Kasus yang lainnya yaitu membuat persamaan kuadrat

    \[y(x)=x^2+4x+10\]

Maka cara membuat anonymous function yaitu

kuadrat = @(x) x.^2+4.*x+10; %adalah fungsi persamaan kuadrat
x = -10:0.1:10;
y = kuadrat(x);

Bahkan kalian bisa memanggil function sebagai argument lho, misalkan kalian ingin memanggil function mean() dengan sebutan average agar sama seperti di excel menggunakan place holder @

average = @mean;
x = [1,4,9]
average (x)

Overloading function

Yaitu dengan nama function yang sama tetapi dapat menerima input argument berbeda.  Tujuan dibuatnya overloading yaitu memudahkan penggunaan method dengan fungsi yang hampir sama. Sebenarnya kalian sudah sering pakai koq, contoh paling mudah penggunaan function mean.

clc;clear all;close all;
disp('Array a:')
a = [1,3,8;10,20,35]
disp('Rerata ALL')
mean(a(:))
disp('Rerata Per Kolom')
mean(a,1)
disp('Rerata Per Baris')
mean(a,2)

hasil

Array a:
a =
     1     3     8
    10    20    35
Rerata ALL
ans =
   12.8333
Rerata Per Kolom
ans =
    5.5000   11.5000   21.5000
Rerata Per Baris
ans =
    4.0000
   21.6667

Function mean tersebut diatas menggunakan 1 dan 2 argument yang menghasilkan output yang berbeda, hanya dengan satu nama function, bisa menerima banyak argument input itulah kegunaan teknik overloading function sehingga tidak perlu membuat banyak nama function yang berbeda-beda.  Contoh sederhana untuk membuat function operasi tambah menerima banyak input (simpan dengan nama file tambah.m)

function [hasil] = tambah(varargin)
%contoh overloading function
hasil = 0;
for i = 1:nargin
      hasil = varargin{i} + hasil;
end

Contoh pemakaian dan hasil nya

Kalian juga bisa menggunakan cara berikut untuk menerapkan overloading function, kalian simpan saja dengan nama overloadingfunction.m

function overloadingfunction(argument1,argument2,argument3)
%contoh overloading function
if nargin ==1
    disp(argument1)
end
 
if nargin == 2
    disp(argument1)
    disp(argument2)
end
 
if nargin == 3
    disp(argument1)
    disp(argument2)
    disp(argument3)
end

Teknik overloading menggunakan keyword varargin dan nargin. Varargin singkatan dari Variable length input argument list sehingga dengan keyword tersebut bisa menerima jumlah input secara dinamis, sedangkan untuk nargin singkatan dari Number of function input arguments untuk mengetahui jumlah argument input yang digunakan. Oiya kalian bisa menggunakan teknik berikut untuk mempermudah setup sebuah function lho. Berikut ini diberikan contoh menggunakan ploting bar (ntar dibahas mengenai ploting), jangan lupa simpan dengan nama plotingdata.m

function plotingdata(data,varargin)
%contoh overloading function
%
if nargin==1
    plot(data)
end
if nargin == 2
    error('Error jumlah argument');
end
if nargin==3
    if length(varargin) == 2
        if strcmp(varargin{1},'type')
            if strcmp(varargin{2},'bar')
                bar(data);
            end
            if strcmp(varargin{2},'line')
                plot(data);
            end
        end           
    end        
end

Contoh pemakaian function diatas

clc;clear all;close all;
x =  [1 2 1 4 5 6 1 4];
figure,plotingdata(x,'type','line');
figure,plotingdata(x,'type','bar');

Security Kode di Matlab

Salah satu keunggulan Matlab daripada Scilab, Octave, dan Python yaitu adanya binary file dengan extension *.p (singkatan dari psuecode script) yaitu untuk mengubah kode file *.m menjadi versi binary sehingga kamu sharing kode tanpa perlu takut source code terbaca dengan mudah oleh klien karena sampai saat ini belum ada yang buat aplikasi reverse engineering *.p di Matlab. Cara penggunaannya pun sangat mudah sekali.

pcode  file.m

Atau untuk semua file *.m dalam satu folder

pcode *.m

Ketika perintah tersebut dijalankan akan terdapat *.p yang kamu bisa share ke klien sehingga source code akan relatif aman tanpa perlu kuatir terbukanya informasi mengenai cara kerja aplikasi yang anda buat kalau pun di reverse engineering akan terasa sulit untuk dibaca dan dipahami. Misalkan kalian akan mengubah semua *.m yang ada di direktori ‘daftar function’, maka langkah pertama adalah menuju work direktori ‘daftar function’

Kode diatas menggunakan perintah pwd untuk memastikan lokasi current direktori yaitu di direktori ‘daftar function’, kemudian menggunakan perintah pcode *.m untuk mengkonversi semua *.m menjadi *.p maka untuk mengecek hasilnya menggunakan perintah ls, terlihat ada nama *.p sama persis dengan *.m-nya. Maka code *.p inilah yang kalian bisa distribusikan kepada orang lain tanpa takut source code terbuka karena *.p tidak bisa diubah lagi ke *.m. Berikut ketika  menggunakan *.p ditempat folder yang baru kemudian memanggil function persegipanjang

Penggunaan function *.p sama seperti dengan *.m, jika kita ingin melihat sourc code *.p maka bisa menggunakan texteditor seperti notepad/notepad++ akan tampil seperti berikut yang sulit untuk dipahami karena sudah diubah kedalam kode hexadecimal.

Teknik diatas bisa anda gunakan untuk melindungi source code anda sehingga kita bisa mendistribusikan *.p sebagai versi demo kepada pihak yang lain dan tanpa takut *.p tersebut di reverse engineering.

Global Function – Toolbox

Pada Bab Pendahuluan telah dijelaskan mengenai Toolbox Matlab,  Kalau kalian ingin tahu lokasi toolbox bisa dicek koq dengan mudah yaitu Set Path

Disitulah letak semua function-function yang terbungkus rapi dalam sebuah toolbox yang berisi ribuan function yang bersifat global tanpa dipengaruhi oleh work directory kalian sehingga bisa dipanggil secara global. Misalkan kalau kalian punya banyak function bisa coba Add Folder atau ketikan perintah addpath()

Caranya sebagai berikut:

1. Buatlah folder dengan susunan seperti ini,  yang dibuat terpisah menjadi 3 folder yaitu daftar-pustaka, dataset, resource

2. Buatlah function tambah.m yang disimpan di folder daftar-pustaka/tambah.m

function [hasil] = tambah(varargin)
%contoh overloading function
hasil = 0;
for i = 1:nargin
      hasil = varargin{i} + hasil;
end

3.    Buatlah script buat memanggil function main_app.m

clc;clear all;close all; %bersihkan semua
addpath('daftar-pustaka')
%panggil function 
tambah(8,60)

Coba kalian run, ketika tampil pesan berikut pilih Change Folder

Maka script main_app.m akan memanggil function yang ada di daftar-pustaka/tambah.m

Kalian bisa cek juga menggunakan perintah path pada Command Window

Secara tidak langsung kalian sudah membuat toolbox sendiri lho! Karena function tambah() yang kalian buat bisa dipanggil disemua work directory. Nah pada sesi ini kalian sudah belajar mengeni dasar-dasar pemrograman matlab untuk function yang merupakan basic dari Matlab itu sendiri, dimana sekumpulan function-function akan dibuat sebuah toolbox

Leave a Reply