Friday, December 27, 2019

Buku Pemrograman Matlab - 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 
  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)
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
  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);

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

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.


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


Wednesday, December 25, 2019

Soal Test CPNS - Kemampuan Penalaran Bag 1

KEMAMPUAN PENALARAN

Pada test ini akan dilihat kemampuan penalaran dari soal cerita (tipsnya adalah carilah sebuah korelasi), pada test Soal Test CPNS - Kemampuan Penalaran terdiri dari 20 soal mulai dari kausalitas, komparasi, sampai urutan.


1. Ada petani yang rajin ke sawah. Kebanyakan petani memiliki sawah sendiri.
a. Petani memiliki sawah sendiri harus rajin ke sawah.
b. Ada petani yang rajin ke sawah dan memiliki sawah sendiri.
c. Petani yang rajin ke sawah adalah yang memiliki sawah sendiri.
d. Petani yang memiliki sawah sendiri tidak rajin ke sawah.

Tuesday, December 24, 2019

Soal Test CPNS - Bahasa Indonesia Bag 1


Agak sedikit melenceng dari tujuan blog ini, tapi ya sudahlah daripada kosong tidak ada postingan, makanya penulis buat sesi test cpns/test umum, ya lumayanlah buat nambah-nambah pengetahuan kalian kalau mau test masuk kerja. Contoh test CPNS/kisi-kisi soal CPNS terdiri dari banyak topik yaitu bahasa, matematika, pengetahuan umum. Untuk mempermudah pencarian, kalian bisa klik label kisi-kisi test CPNS.


Bicara mengenai Test Soal Bahasa Indonesia pada test CPNS/kisi-kisi soal CPNS menjadi menarik karena berbeda dengan soal yang bersifat pasti (eksak seperti matematika), tidak dipungkiri pada test Bahasa karena ada faktor Subjektif oleh karena hal tersebut sering-seringlah menjawab soal-soal bahasa indonesia agar lebih paham. Sementara ini masih sedikit kumpulan test CPNS, ntar penulis update lagi. Kisi-kisi soal test CPNS bahasa indonesia terbagi menjadi 4 bagian yaitu
  1. Kosa kata
  2. Sinonim
  3. Antonim
  4. Analogi

Sunday, December 22, 2019

Buku Pemrograman Matlab

Buku Pemrograman Matlab

Buku Pemrograman Matlab ini dibuat untuk memudahkan para pembaca dalam belajar Matlab karena penggunaan yang sangat luas untuk beragam keperluan terutama kalangan riset yang membutuhkan bahasa pemrograman yang bersifat functional. Postingan  / Buku Dasar-Dasar Pemrograman Matlab ini dibuat secara dengan gaya bahasa yang mudah kalian pahami serta diberikan penjelasan kode yang cukup.

Sinopsis Buku Dasar-Dasar Pemrograman Matlab

Sejak penulis menggunakan Matlab 2009 sampai sekarang sudah mencapai R2019a sudah banyak perubahan terlihat dari ukuran installer nya 6 GB, ukuran yang sangat besar sekali. Ada banyak tools sejenis seperti Scilab, Octave, ataupun Python. Keunggulan Matlab yaitu lingkungan yang terintegrasi serta kelengkapan library/pustaka built in yang ada didalamnya sehingga sangat populer bagi kamu yang sedang belajar bahasa pemrograman terutama visualisasi yang kompleks.

Hanya saja kalau kamu yang bekerja pada software production sangat tidak disarankan untuk digunakan karena bukan tujuan dari Matlab itu sendiri seperti untuk membuat aplikasi terus kamu jual ke konsumen melainkan bahasa pemrograman yang bersifat teknis yaitu lebih kepada kemudahan dalam mengembangkan algoritma/metode.

Tapi kalau mau diedarkan dalam bentuk binary file bisa koq (closed source) bahkan dalam bentuk executable pun juga bisa, penasaran bukan? Subcribe saja blog ini agar kalian mendapat postingan  terbaru serta share ke teman-teman kalian yang lain.


Toolbox Matlab

Saat ini Matlab telah banyak berkembang  dan  dilengkapi dengan toolbox. Toolbox adalah sebuah set function (bisa ratusan function didalamnya)  yang dikhususkan berdasarkan topik-topik tertentu sesuai standar riset dan industri
  1. Statistics and Machine Learning Toolbox™ (Statistics and Machine Learning Toolbox)
  2. Curve Fitting Toolbox™ (Curve Fitting Toolbox)
  3. Control System Toolbox™ (Control System Toolbox)
  4. Signal Processing Toolbox™ (Signal Processing Toolbox)
  5. Mapping Toolbox™ (Mapping Toolbox)
  6. System Identification Toolbox™ (System Identification Toolbox)
  7. Deep Learning Toolbox™ (Deep Learning Toolbox)
  8. DSP System Toolbox™ (DSP System Toolbox)
  9. Datafeed Toolbox™ (Datafeed Toolbox)
  10. Financial Toolbox™ (Financial Toolbox)
  11. Image Processing Toolbox™ (Image Processing Toolbox)
  12. Text Analytics Toolbox™ (Text Analytics Toolbox)
  13. Predictive Maintenance Toolbox™
Bagi para pengguna matlab sudah sangat terkadomodasi dengan adanya ke 13 toolbox diatas, kalau untuk blog ini hanya fokus pada Image Processing, Signal Processing, Statistics and Machine Learning Toolbox, dan Deep Learning. Kalau kalian ingin tahu demo masing-masing toolbox diatas bisa ketikan perintah demo di command window (ntar dibahas dibawah ini apa itu command window). Demo sudah sangat lengkap koq yaitu
  1. Statistics and Machine Learning Toolbox: Visualize Distribution of Channel Data with a Box Plot, Find Mean of Data Ignoring NaN Values, Fit a Linear Regression Model, Plot a Histogram with a Distribution Fit.
  2. Curve Fitting Toolbox: Visualize Linear Fit to Scattered ThingSpeak Data, Visualize Wind Speed as a Function of Ambient Temperature and Pressure.
  3. Control System Toolbox: Compute Linear Response Characteristics
  4. Signal Processing Toolbox: Remove and Visualize Outliers in Your Data, Remove Outliers in Your Data, Visualize Peaks in Your Data, Visualize Abrupt Changes in Signals
  5. Mapping Toolbox: Visualize Path Traversed in Vector Maps, Visualize Path Traversed in NASA Maps.
  6. Datafeed Toolbox: Retrieve Current Financial Data Using Datafeed Toolbox.
  7. Financial Toolbox: Visualize Simple Moving Average of Your Data, Create a Candle Plot with Customized Date Axis: Plot the MACD Indicator.
  8. DSP System Toolbox: Remove High-Frequency Noise in Measured Data, Generate Chirp Signal.
  9. System Identification Toolbox: Fit an Autoregression Model to the Tidal Depth Data, Visualize and Compare Measured and Predicted Tidal Depths, Forecast Tidal Depths Using ThingSpeak Data.
  10. Deep Learning Toolbox: Create and Train a Feedforward Neural Network, Plot Error Histogram for a Neural Network.
  11. Image Processing Toolbox: Detect and Measure Circular Objects in an Image
  12. Text Analytics Toolbox: Visualize Word Frequency in a Word Cloud 
Bahkan bila dirasa kurang cukup kalian bisa koq buat sendiri toolbox untuk menunjang profesi mu, misalkan kalian seorang trader saham, sangat mungkin sekali membuat toolbox forecasting saham yang berisi sekumpulan function siap pakai yang bisa kamu tulis sendiri khusus untuk trading saham.
Oiya dalam postingan ini, penulis menggunakan spesifikasi Matlab yaitu R2018a 64 bit dengan Windows 10 Home 64 bit 

Buku Pemrograman Matlab

Untuk membedakan dengan tag yang sudah ada yaitu Matlab, maka akan digunakan tag ebook pemrograman Matlab sehingga kamu bisa fokus mempelajari Matlab dengan baik melalui blog ini. Kalau pun kamu belum menemukan solusinya, bisa koq untuk kontak di http://www.softscients.web.id/p/konsultasi.html.

Secara umum tujuan dari postingan ini dibuat yaitu
  1. Semudah mungkin untuk dipelajari untuk kalian pemula ataupun yang sudah paham mengenai bahasa pemrograman berdasarkan pengalaman penulis yang telah lama menggunakan Matlab.
  2. Alur dibuat secara ber urutan sehingga pembaca tidak bingung.
  3. Memuat informasi penting seperti gambar dan tabel. 
  4. Update secara berkala dan dilengkapi studi kasus yang sederhana

Daftar Isi

Berikut daftar isi yang kamu dapatkan di blog ini
  1. Setup Tampilan-Work Directory-VariabelArray
  2. Operator Perbandingan, Syarat Kondisi, dan Looping
  3. Data Container Struct dan Cell 
  4. Function
  5. Ekspor dan Impor Data
  6. Ploting Grafik
  7. GUI  
  8. Random Generator 
  9. Simple Quadratic Programming 
  10. Quadratic Programming 
  11. Linear Progamming
  12. Normalisasi Data
  13. Confussion Matrix 
  14. KFold Validation
  15. Penerapan KFold di Matlab 
  16. Replication Matrix
  17. Control Random Generator
  18. Formating Text Output Fprintf
  19. Menambahkan Header pada Array  
  20. Koneksi Matlab dengan Webcam
  21. Komunikasi Serial via Port
  22. Play video File di Matlab
  23. Read String Number in Excel 
  24. Koneksi Matlab dengan Sqlite