Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id
Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link
kalian bisa lanjut baca lagi di http://softscients.com/2020/03/29/buku-pemrograman-matlab-mengenal-dan-setup-global-function/
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- Pengertian function
- Membuat Function
- Anonymous Function
- Overloading Function menjadikan function yang kalian buat menjadi dinamis argument inputnya
- Security Kode Function agar kalian bisa share binary code tanpa takut diliat source codenya
- Membuat Toolbox mempermudah kalian membuat project
Jangan lupa ya Follow dan Subcribe ya dasar-dasar pemrograman matlab
Terima kasih
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
- Terdiri dari argumen input dan output
- 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);
Kalian bisa lihat sudah disimpan dengan nama luassegitiga.m
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 berikutclc;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
- Nama function dan script harus lowercase
- 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 berikuty = @(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)
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

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.
Membuat Toolbox
Pada Bab Pendahuluan https://www.softscients.web.id/2019/12/dasar-dasar-pemrograman-matlab.html 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 (link https://www.softscients.web.id/2019/12/dasar-dasar-pemrograman-matlab.html) 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
No comments:
Post a Comment