Anda di halaman 1dari 30

Modul Pengenalan Komputasi Matlab

Tim Materi Pengenalan Komputasi 2020/2021

2020-10-16

1
Catatan

1. Modul ini dirancang untuk dapat menjadi pegangan pemrograman Pengenalan Komputasi,
sehingga banyak hal yang dipotong karena keluar dari konteks Pengenalan Komputasi.
2. Anda dapat membuka modul ini saat latihan praktikum.
3. Anda sangat disarankan untuk mencoba menjalankan semua program modul ini di kom-
puter Anda, supaya Anda dapat mengetahui keluaran dari program yang ada.
4. Anda sangat disarankan untuk bereksperimen dari program-program yang ada di modul ini
supaya Anda mendapat gambaran lebih jelas mengenai apa yang program Anda lakukan.
5. Anda sangat disarankan membaca tutorial dari tempat lain dan mengeksplor sendiri bahasa
yang Anda gunakan.

2
Contents
1 Modul 1 4
1.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Input dan Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Tipe Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1 Operator Aritmatika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Operator Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.3 Operator Relasional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.4 Operator Logika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Percabangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Modul 2 8
2.1 Pengulangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1 While Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.2 For Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Perulangan bersarang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Modul 3 10
3.1 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1 Deklarasi Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.2 Array dan Variabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4 Modul 4 12
4.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Prosedur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3 Matriks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Modul 5 15
5.1 Analisa Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1.1 Membuat Tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1.2 Membaca dan Menulis Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1.3 Mengakses Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1.4 Mengambil Ekstremum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1.5 Mengurutkan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1.6 Tabel Frekuensi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.7 Menentukan Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.8 Statistik Sederhana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.1.9 Koefisien Korelasi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.1.10 Data Unstacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2 Visualisasi Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2.1 Bar Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2.2 Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2.3 Pie Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2.4 Stacked Bar Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2.5 Line Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.6 Area Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.7 Scatter and Bubble Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3
1 Modul 1

1.1 Pendahuluan

Pada modul ini, kita menggunakan Matlab yang kompatibel dengan versi lebih dari 9.1. IDE
Matlab berbayar, sehingga Anda disarankan belajar dari bahasa Octave (bahasa pemrograman
yang kompatibel dengan Matlab, namun gratis). Anda dapat mencoba Octave secara online
di https://octave-online.net/. Akan tetapi, pihak ITB menyediakan akses gratis MAT-
LAB kepada mahasiswa ITB yang dapat diklaim di https://www.mathworks.com/academia/tah-
portal/institut-teknologi-bandung-31489205.html.

Beberapa karakteristik dari bahasa ini:

• Matlab case-sensitive, artinya perbedaan huruf besar dan huruf kecil menyebabkan perbe-
daan makna.
• Matlab tidak memerhatikan indentasi dan pergantian baris. Namun, sangat disarankan
menggunakan indentasi yang baik karena akan sangat membantu debugging dan meningkatkan
readibility
• Variabel di matlab bersifat implisit dan dinamis. Artinya, sebuah variabel tidak perlu
dideskripsikan tipe datanya. Namun di modul ini kita tetap mempelajari tipe data yang
ada.

1.2 Input dan Output

Dalam Matlab, program untuk menulis "Hello, World!" ke layar adalah seperti berikut:

fprintf (’Hello , World !\n’); % (1)

fprintf (’Ini program ’); % (2)


fprintf (’ pertama saya\n’); % (3)

% Ini adalah sebuah komentar .

% Semua yg ada setelah tanda persen ( % )


% akan diabaikan oleh compiler .

%{
Selain itu , semua yang ada di antara persen diikuti kurung kurawal buka
dan persen diikuti kurung kurawal tutup juga akan diabaikan
%}

Bagian yang ditandai nomor 1 bertugas menuliskan ’Hello, World!’ ke layar. Sintaks ’\n’ akan
memindahkan baris setelah selesai menulis ke layar. Berarti, output program di atas adalah
’Hello, World!’ diikuti dengan ’Ini program pertama saya’ di baris selanjutnya.

1
Selain itu, perhatikan juga tiap statement diakhiri titik-koma (;).

Untuk melakukan input, kita membutuhkan penampung untuk menyimpan data yang diin-
putkan. Sebagai contoh, di bawah ini adalah program yang menerima input bilangan dan
menuliskan ulang bilangan yang dimasukkan.
1 Matlab tidak mengharuskan adanya titik-koma, titik-koma hanya digunakan untuk menyembunyikan output https:

//www.mathworks.com/help/matlab/matlab_prog/matlab-operators-and-special-characters.html

4
S = input(’Masukkan kata apapun : ’, ’s’); % 1
fprintf (’Anda memasukkan kata %s\n’, S); % 2

N = input(’Masukkan sebuah angka: ’); % 3


fprintf (’Anda memasukkan kata %s dan angka %d\n’, S, N + 5); % 4

Pada bagian nomor (1) dan (3), program membaca input dari user dan dimasukkan ke variabel
S dan N. Perhatikan juga, untuk membaca sebuah string (kumpulan karakter), gunakan ’s’ di
parameter kedua input. Selain int, string, Matlab dapat menerima tipe data float (bilangan real),
dan masih banyak lagi.

1.3 Tipe Data

Ada beberapa macam tipe data, namun dalam Pengenalan Komputasi kita hanya akan banyak
menggunakan tipe data berikut:

bool Boolean True atau False


int Bilangan bulat seluruh bilangan bulat
float Bilangan real seluruh bilangan real
string Teks kumpulan karakter

Contoh penggunaan:

B = true; % Boolean
I = 12345; % Bilangan bulat
R = 2.331973; % Bilangan real
S = ’def ’; % Teks

1.4 Operator

1.4.1 Operator Aritmatika

Operator Deskripsi Contoh


+ Penjumlahan 2 + 3 bernilai 5
- Pengurangan 1 - 8 bernilai -7
* Perkalian 5 * 6 bernilai 30
/ Pembagian 13 / 5 bernilai 2.6
mod Sisa Bagi / Modulo mod(13, 5) bernilai 3

1.4.2 Operator Assignment

Operator Deskripsi Contoh


= Assignment N = 5
+= Penjumlahan N += 5, N akan ditambah 5
-= Pengurangan N -= 5, N akan dikurang 5
*= Perkalian N *= 5, N akan dikali 5
/= Pembagian N /= 5, N akan dibagi 5

5
1.4.3 Operator Relasional

Operator Deskripsi Contoh True Contoh False


== Sama dengan 2 == 2 2 == 3
˜= Tidak sama dengan 3 != 2 3 != 3
< Kurang dari 2 < 3 2 < 2
> Lebih dari 3 > 2 2 > 3
<= Kurang dari sama dengan 2 <= 2 3 <= 1
>= Lebih dari sama dengan 6 >= 5 2 >= 4

1.4.4 Operator Logika

Operator Deskripsi Contoh True Contoh False


&& Dan (1 < 2)&& (3 == 3) (1 == 2)&& (3 == 3)
|| Atau (1 < 2)|| (4 == 3) (3 < 2)|| (2 == 3)
! Negasi ! (3 < 2) ! (1 < 2)

1.5 Percabangan

Dalam pemrograman, terdapat percabangan. Dengan demikian, program kita dapat berperilaku
tergantung input user. Misal kita buat program yang memeriksa apakah sebuah bilangan positif:

N = input(’Masukkan nilai N: ’);

if (N > 0)
fprintf (’%d adalah bilangan positif ’, N)
end

Lalu, jika kita ingin menuliskan kebalikannya:

...
if (N > 0)
fprintf (’%d bilangan positif ’, N)
else % N <= 0
fprintf (’%d bilangan bukan positif ’, N)
end
...

Namun, kita tahu kadang bilangan bisa nol atau negatif, jadi perlu kita tambahkan:

...
if (N > 0)
fprintf (’%d bilangan positif ’, N)
elseif (N < 0)
fprintf (’%d bilangan negatif ’, N)
else % N == 0
fprintf (’%d bilangan nol ’, N)
end
...

Perhatikan juga kalau kita bisa membuat else ini berulang sampai yang kita mau. Selain itu, kita

6
juga bisa meletakkan if di dalam if.

...
if (N >= 0)
if (N > 0)
fprintf (’%d bilangan positif ’, N)
else % N == 0
fprintf (’%d bilangan nol ’, N)
endif
else % N < 0
fprintf (’%d bilangan negatif ’, N)
end
...

7
2 Modul 2

2.1 Pengulangan

Pada pemrograman, sering kali dibutuhkan pemrosesan berulang-ulang untuk mencapai suatu
hasil tertentu. Apabila pengulangan ini dilakukan secara manual ukuran file program akan
menjadi terlalu besar. Contoh sederhana adalah jika kita ingin menuliskan “Hello World” di
layar sebanyak 1000 kali, maka akan dibutuhkan paling tidak 1000 baris perintah. Menggunakan
sintaks pengulangan, persoalan tersebut dapat diselesaikan hanya menggunakan beberapa baris
program.

for i = 1:1000:
fprintf (" Hello world\n");

2.1.1 While Loop

Salah satu sintaks yang looping / pengulangan yang sering digunakan adalah sintaks While-Do.
Program akan mengecek sebuah kondisi yang diberikan terlebih dahulu sebelum menjalankan
statement yang ada di dalamnya.

Berikut adalah program yang menerima a dan b dan menuliskan a, a + 1, a + 2, . . . , b − 1, b.

a = input(’’);
b = input(’’);
i = a;
while i <= b
fprintf (’%d\n’, i);
i += 1;
end

2.1.2 For Loop

Bentuk looping yang kedua adalah bentuk For. Bentuk ini umumnya digunakan untuk pengu-
langan yang sudah diketahui jumlahnya.

Berikut adalah program yang menerima a dan b dan menuliskan a, a + 1, a + 2, . . . , b − 1, b.

a = input(’’);
b = input(’’);
for i = a:b
fprintf (’%d\n’, i)

Range dapat memiliki 2 atau 3 parameter. Untuk detailnya, perhatikan kode berikut:

2 : 5 % 2, 3, 4, 5
7 : -1 : 2 % 7, 6, 5, 4, 3, 2
3 : 0.5 : 5 % 3, 3.5, 4, 4.5, 5

8
2.2 Perulangan bersarang

Perhatikan pula, perulangan dapat dilakukan di dalam perulangan. Sebagai contoh, berikut
adalah program untuk membuat pola persegi.

n = input(’’);
for i = 1:n
for j = 1:n
fprintf (’*’);
end
fprintf (’\n’);
end

9
3 Modul 3

3.1 Array

Array adalah variabel dengan satu buah nama, tetapi mengandung banyak nilai. Akses nilai-
nilainya dilakukan dengan indeks.

Perhatikanlah contoh berikut!


Indeks 1 2 3 4 5 6 7 8 9 10
A 10 5 7 11 19 23 35 37 12 1

• A(10)= 1
• A(1) = 10
• A(7) = 35

Pada contoh diatas, kita memiliki sebuah variabel yang bernama A. Variabel A tersebut memiliki
10 buah nilai, dimana nilai-nilai tersebut dapat diakses dengan indeks. Untuk mengakses indeks
ke – x, gunakanlah A(x). Dan nilai A(x) itu bisa kita anggap sebagai variabel yang berdiri sendiri.
Konsep inilah yang kita sebut dengan array. Perhatikan pula bahwa indeks dimulai dari 1, berbeda
dengan beberapa bahasa lain yang memulai indeks dari 0.

Tambahan: Untuk menerima masukan array of string, gunakan

A(1) ={ input(’Masukkan nama: ’,’s’)}

3.1.1 Deklarasi Array

Karena array juga merupakan sebuah variabel, maka array juga memerlukan deklarasi seperti
variabel lainnya.

Contoh deklarasi array:

• x = zeros(1, n); membuat array berukuran n dengan isi 0.


• x = ones(1, 100); membuat array berukuran 100 dengan isi 1.

Di Matlab, array pada dasarnya adalah matriks dengan ukuran 1 pada barisnya. Untuk contoh
tersebut array A yang terdefinisi adalah A(1), A(2), . . . , A(10). Mengakses nilai indeks di luar
batasan tersebut akan menyebabkan array membesar untuk memenuhi indeks yang diminta.

3.1.2 Array dan Variabel

Suatu array dapat kita anggap sebagai variabel, sehingga segala jenis operasi pada variabel juga
berlaku pada array. Sebagai contoh, kita memiliki suatu array

tabel = zeros(1, 10);

10
Maka array tabel tersebut akan terdefinisi untuk indeks 1 sampai dengan indeks 10. Maka kita
bisa melakukan instruksi.

tabel(2)= input(’’);

Jika diberikan 5 buah bilangan , dan kita perlu menyimpan bilangan tersebut pada tabel, kita bisa
melakukan:

tabel (1) = input(’Masukkan nilai ke -1: ’);


tabel (2) = input(’Masukkan nilai ke -2: ’);
tabel (3) = input(’Masukkan nilai ke -3: ’);
tabel (4) = input(’Masukkan nilai ke -4: ’);
tabel (5) = input(’Masukkan nilai ke -5: ’);

Namun, cara menginput tersebut kurang efisien. Akan lebih efisien jika kita menginput menggu-
nakan perulangan (looping).

tabel = zeros (1, 5);


for i = 1:5
fprintf (’Masukkan nilai ke -%d: ’, i);
tabel(i) = input(’’);
end

11
4 Modul 4

4.1 Fungsi

Apa itu fungsi? Fungsi adalah suatu bagian dari program yang mampu mengerjakan tugas atau
operasi tertentu di luar program utama. Fungsi akan mengembalikan nilai sesuai algoritma yang
diberikan.

Sebagai contoh, fungsi untuk menghitung kuadrat adalah sebagai berikut:

function x2 = kuadrat (x)


x2 = x*x;
end

Fungsi di atas bernama kuadrat dan mengembalikan nilai kuadrat. Fungsi itu juga menerima satu
parameter bernama x. Variabel keluaran harus dituliskan sebelum nama fungsi, diikuti dengan
sama dengan. Variabel inilah yang akan dikembalikan setelah fungsi dipanggil.

Sebagai contoh, berikut program lengkap yang menerima input dan mengeluarkan kuadrat dari
bilangan input.

function main ()
n = input(’Masukkan n: ’);
n2 = kuadrat (n);
fprintf (’%d’, n2);
end

function x2 = kuadrat (x)


x2 = x*x;
end

Program tersebut harus disimpan dengan nama file main.m supaya matlab mengenali fungsi main
sebagai program utama.

Perhatikan pada contoh di atas, variabel di program utama bernama n. Namun di fungsi, variabel
berubah nama menjadi x. Meskipun x berubah, nilai n di program utama tidak akan berubah.

Sebuah fungsi juga dapat menerima lebih dari satu parameter. Selain itu, fungsi juga dapat
melakukan hal-hal layaknya program biasa, namun tidak dapat mengubah variabel di program
utama. Sebagai contoh, berikut adalah fungsi yang menghitung nilai ab .

function c = pangkat (a, b)


c = 1;
for i = 1:b
c = c * a;
end
end

Catatan: Anda tidak disarankan menaruh array sebagai parameter fungsi, karena ada hal khusus
yang belum diajarkan di Pengenalan Komputasi.

12
4.2 Prosedur

Prosedur sebenarnya sama seperti fungsi, namun tidak ada kembalian. Sebagai contoh, berikut
adalah program untuk menuliskan menu:

fprintf (’Menu :\n’);


fprintf (’1. Burger \n’);
fprintf (’2. Ayam Geprek \n’);
fprintf (’3. Mie Instan \n’);
pilihan_makanan = input(’Masukkan pilihan : ’);

fprintf (’Menu :\n’);


fprintf (’1. Jus Alpukat \n’);
fprintf (’2. Thai Tea\n’);
fprintf (’3. Teh Tarik\n’);
pilihan_minuman = input(’Masukkan pilihan : ’);

fprintf (’Menu :\n’);


fprintf (’1. Kentang \n’);
fprintf (’2. Krupuk \n’);
fprintf (’3. Abon\n’);
pilihan_tambahan = input(’Masukkan pilihan : ’);

Seperti yang tertulis di atas, menuliskan menu perlu berkali-kali. Kita dapat meringkasnya
menjadi:

function main ()
tulis_menu (’Burger ’, ’Ayam Geprek ’, ’Mie Instan ’);
pilihan_makanan = input(’Masukkan pilihan : ’);

tulis_menu (’Jus Alpukat ’, ’Thai Tea ’, ’Teh Tarik ’);


pilihan_minuman = input(’Masukkan pilihan : ’);

tulis_menu (’Kentang ’, ’Krupuk ’, ’Abon ’);


pilihan_tambahan = input(’Masukkan pilihan : ’);
end

function tulis_menu (pil1 , pil2 , pil3)


fprintf (’Menu :\n’);
fprintf (’1. %s\n’, pil1);
fprintf (’2. %s\n’, pil2);
fprintf (’3. %s\n’, pil3);
end

4.3 Matriks

Matriks pada dasarnya adalah array 2 dimensi. Matriks dapat dideklarasikan dengan:

A = zeros (10 ,20);

Pada kode di atas, artinya kita membuat matriks dengan nama variabel A, dengan tipe elemen
integer dan nilai awal 0, dan berukuran 10 baris × 20 kolom. Sama seperti array, untuk mengakses
elemen baris ke-i dan kolom ke-j, kita perlu mengakses A(i)(j).

13
Sebagai contoh, berikut kode untuk membaca matriks dan menuliskannya kembali.

n = input(’’);
m = input(’’);

A = zeros(n, m);

for i = 1:n
for j = 1:m
fprintf (’masukkan elemen baris %d kolom %d: ’, i, j);
A(i,j) = input(’’);
end
end

for i = 1:n
for j = 1:m
fprintf (’%d ’, A(i,j));
end
fprintf (’\n’);
end

Berikut contoh program untuk membaca matriks A berukuran n × m, membaca matriks B beruku-
ran m × l, dan menuliskan hasil perkalian matriks A kali B berukuran n × l.

n = input(’’);
m = input(’’);
l = input(’’);

A = zeros(n, m);
B = zeros(m, l);
C = zeros(n, l);

for i = 1:n
for j = 1:m
fprintf (’masukkan elemen B baris %d kolom %d’, i, j);
A(i, j) = input(’’);
end
end

for i = 1:m
for j = 1:l
fprintf (’masukkan elemen B baris %d kolom %d’, i, j);
B(i, j) = input(’’);
end
end

for i = 1:n
for j = 1:l
C(i, j) = 0;
for k = 1:m
C(i, j) += A(i, k) * B(k, j);
end
fprintf (’%d ’, C(i, j));
end
fprintf (’\n’);
end

14
5 Modul 5

5.1 Analisa Data

Pada modul ini, kita akan menggunakan data yang bisa didownload di https://drive.google.
com/drive/folders/1o2Zg_Lc911dsW0Iw37uWgYqM0-dR8Jro?usp=sharing.

5.1.1 Membuat Tabel

% membuat tabel dengan kolom "name" dan "age"


name = {’ani ’;’budi ’;’caca ’;’dea ’;’egi ’};
age = [10;20;30;40;50];
T = table(name ,age);

5.1.2 Membaca dan Menulis Data

Untuk membaca data csv / excel, kita dapat menggunakan method readtable. Untuk menulis
data, baik ke csv maupun excel, perhatikan contoh berikut:

% Membaca file csv tingkatinflasi20082013 .csv


% di folder yang sama dengan tempat
% kode matlab ini disimpan
M = readtable (’tingkatinflasi20082013 .csv ’);

% Membaca file excel di D:/


M = readtable (’D:/ data.xlsx ’);
% Membaca file excel di D:/, dengan nama sheet " Sheet1 "
M = readtable (’D:/ data.xlsx ’, ’Sheet ’, ’Sheet1 ’);

% Menulis file csv di folder yang sama


writetable (M, ’data_out .csv ’);

% Menulis file excel di folder yang sama


writetable (M, ’data_out .xlsx ’);

% Menulis file excel di folder yang sama ,


% dengan nama sheet " Sheet1 "
writetable (M, ’data_out .xlsx ’, ’Sheet ’, ’Sheet1 ’);

Catatan: Anda disarankan menggunakan format ”D:/path/ke/file.xlsx” dibanding penggunaan


folder yang sama.

5.1.3 Mengakses Data

Perhatikan contoh berikut:

M = readtable (’tingkatinflasi20082013 .csv ’);

% mengambil data ke -5
M(5:5 ,:)

15
% mengambil data ke -5 hingga ke -7,
% kolom ke 1 hingga 3
M(5:7 ,1:3)

% mengambil data ke -17 hingga akhir


M(17: end ,:)

% mengambil 5 data pertama


M(0:5 , :)

% menghitung berapa banyak data yang ada


height (M)

Selain itu, kita bisa mengakses data berdasar kriteria. Perhatikan contoh berikut:

M = readtable (’tingkatinflasi20082013 .csv ’);

% mengambil data tahun 2012


cond1 = M.Tahun == 2012;
M( cond1 ,:)

% mengambil data Kota Bandung sebelum tahun 2012


cond2 = M.Tahun < 2012 & isequal (M.Cakupan ,’Bandung ’);
M( cond2 ,:)

% mengambil data dengan tingkat inflasi di atas 10


% atau di bawah 3
cond3 = M. Tingkat_Inflasi > 10 | M. Tingkat_Inflasi < 3;
M( cond3 ,:)

5.1.4 Mengambil Ekstremum

Ekstremum adalah data yang ekstrem: paling tinggi atau paling rendah

M = readtable (’tingkatinflasi20082013 .csv ’)

% mengambil data dengan inflasi maksimum


[valmax , idxmax ] = max(M. Tingkat_Inflasi );
cond1 = M. Tingkat_Inflasi == valmax ;
M(cond1 ,:)

% mengambil data dengan inflasi maksimum


[valmin , idxmin ] = min(M. Tingkat_Inflasi );
cond2 = M. Tingkat_Inflasi == valmin ;
M(cond2 ,:)

5.1.5 Mengurutkan Data

Data dapat diurutkan secara tidak menurun (ascending) tidak menaik (descending).

M = readtable (’tingkatinflasi20082013 .csv ’)

16
% mengurutkan data berdasar tingkat inflasi (kolom 3, ascending )
S = sortrows (M, 3, ’ascend ’)

% Mengurutkan data berdasar tahun ascending ,


% lalu tingkat inflasi descending
S = sortrows (M, [1 3], {’ascend ’ ’descend ’})

5.1.6 Tabel Frekuensi

Kita dapat membuat tabel frekuensi. Tabel frekuensi berdasar kolom X artinya kita mendaftar
semua kemungkinan nilai di kolom X secara unik, lalu menghitung berapa kali nilai itu muncul.

M = readtable (’tingkatinflasi20082013 .csv ’)

% mendaftar kemunculan tiap tahun (kolom 1) pada data


tabulate (M{: ,1})

5.1.7 Menentukan Range

M = readtable (’tingkatinflasi20082013 .csv ’)

% Mengambil nilai maksimum dan minimum tingkat inflasi


[valmax , idxmax ] = max(M. Tingkat_Inflasi );
[valmin , idxmin ] = min(M. Tingkat_Inflasi );

fprintf (’tingkat inflasi maksimum adalah %.4f’, valmax );


fprintf (’tingkat inflasi minimum adalah %.4f’, valmin );

5.1.8 Statistik Sederhana

M = readtable (’tingkatinflasi20082013 .csv ’)

summary (M)

Kita dapat juga mengambil statistik tertentu:

M = readtable (’tingkatinflasi20082013 .csv ’)

% rata -rata dari tingkat inflasi (kolom 3)


rata_inflasi = mean(M{: ,3})

% standar deviasi dari tingkat inflasi (kolom 3)


stdcol4 = std(M{: ,3})

17
5.1.9 Koefisien Korelasi

Dua kolom pada data yang sama bisa memiliki korelasi. Tingkat korelasi ini kita sebut sebagai
koefisien korelasi. Cara memaknai koefisien korelasi adalah sebagai berikut:

• Semakin mendekati 0, semakin dua kolom tidak berkorelasi.


• Semakin mendekati 1, semakin dua kolom berbanding lurus.
• Semakin mendekati -1, semakin dua kolom berbanding terbalik.

Berikt ini adalah contoh bila kita ingin melihat korelasi tahun dengan tingkat inflasi:

M = readtable (’tingkatinflasi20082013 .csv ’)

% koefisien korelasi antara tahun


% dan tingkat inflasi
A = M{: ,1};
B = M{: ,3};
corrcoef (A,B)

5.1.10 Data Unstacking

Unstacking adalah proses untuk membagi data berdasarkan entri yang unik. Sebagai contoh,
membagi variabel cakupan menjadi variabel terpisah:

unique (M. Cakupan )


% {’Kota Bandung ’ }
% {’Nasional ’ }
% {’Prov. Jawa Barat ’}

Dari contoh di atas, ada 3 cakupan, yang dapat dipisahkan. Hasil dari format yang sudah di
unstack:

M_cak = unstack (M,’Tingkat_Inflasi ’,’Cakupan ’)


% Tahun KotaBandung Nasional Prov_JawaBarat
% 2008 10.23 11.06 11.11
% 2009 2.11 2.78 2.02
% 2010 4.53 6.96 6.62
% 2011 2.75 3.79 3.1
% 2012 4.02 4.3 3.86
% 2013 7.97 8.38 9.15

Setiap baris di tabel di atas mengandung nilai inflasi masing-masing cakupan untuk setiap tahun-
nya. Data unik dari tahun menjadi baris dan data unik tiap cakupan menjadi kolom.

Namun, pada kasus ini data untuk tiap tahun dan cakupan memang hanya ada 1 data. Jika data
untuk kombinasi kolom memiliki lebih dari satu data:

Tdata = readtable (’data.csv ’)

% Rata -rata banyaknya hewan peliharaan tiap gender tiap negara bagian .

18
% Mengekstrak gender (col3), state (col4), dan num of pets (col 6)
% ke tabel lain , dan mengurutkan berdasarkan gender (kolom pertama dari tabel
yang baru).
Tmean = Tdata (: ,[3 4 6]);
Tmean = sortrows (Tmean)
% gender state num_pets
% ’F’ ’DC ’ 1
% ’F’ ’TX ’ 2
% ’M’ ’CA ’ 0
% ’M’ ’CA ’ 2
% ’M’ ’CA ’ 5
% ’M’ ’DC ’ 5
% ’M’ ’TX ’ 3
Tmean = unstack (Tmean ,’num_pets ’,’state ’, ’AggregationFunction ’,@mean)
% gender CA DC TX
% ’F’ NaN 1 2
% ’M’ 2.3333 5 3

Fungsi agregasi mean diaplikasikan pada baris-baris yang ada di grup yang sama. Pada kasus
ini, laki-laki dari California (CA) dengan 7 hewan peliharaan dari 3 orang, sehingga rata-ratanya
2.3333.

Fungsi agregasi default adalah sum, bila tidak dispesifikasikan pada fungsi:

Tdata = readtable (’data.csv ’)

% Total banyaknya hewan peliharaan tiap gender tiap negara bagian .


% Mengekstrak gender (col3), state (col4), dan num of pets (col 6)
% ke tabel lain , dan mengurutkan berdasarkan gender (kolom pertama dari tabel
yang baru).
Tsum = sortrows (Tdata (: ,[3 4 6]));
Tsum = sortrows (Tmean)
Tsum = unstack (Tmean ,’num_pets ’,’state ’)
% gender CA DC TX
% ’F’ NaN 1 2
% ’M’ 7 5 3

19
5.2 Visualisasi Data

Pada modul ini, kita akan menggunakan data yang bisa didownload di https://drive.google.
com/drive/folders/1o2Zg_Lc911dsW0Iw37uWgYqM0-dR8Jro?usp=sharing. Load data dapat di-
lakukan dengan

Tdata = readtable (’data.csv ’)


Tanimal = readtable (’animal .csv ’)
Tmedali = readtable (’medali .csv ’)

5.2.1 Bar Chart

% Banyaknya anak ( num_children ) dan banyaknya piaraan ( num_pets ) dalam


% 1 grafik vertical bar chart
bar( categorical (Tdata.name) ,[Tdata. num_children ,Tdata . num_pets ])

barh( categorical (Tdata.name),Tdata.age ,’FaceColor ’,’red ’)

20
% Vertical bar chart untuk menampilkan umur dari setiap orang
figure (1)
bar( Tdata.age); % membuat bar chart berdasar kolom yang dipilih
set(gca ,’xticklabel ’,Tdata.name) % memilih label x berdasar nama
grid on % turn on grid
xlabel (’Nama ’); ylabel (’Age (umur)’); % label tiap sumbu
title (’Age of an individual person ’) % judul chart

21
Bar chart dapat memiliki beberapa data direpresentasikan dengan warna yang berbeda-beda.
Pada contoh ini, kita membandingkan banyaknya anak Tdata.num_children dan banyaknya hewan
peliharaan Tdata.num_pets dalam satu bar chart.

% Banyaknya anak ( num_children ) dan hewan peliharaan ( num_pets )


% dalam satu bar chart
figure (2)
bar ([ Tdata. num_children ,Tdata. num_pets ]) % Don ’t forget the square bracket
set(gca ,’xticklabel ’,Tdata.name); grid on
xlabel (’Nama ’); ylabel (’Umur ’);
legend ({’children ’,’pets ’},’Location ’,’bestoutside ’)
title (’Banyaknya anak dan peliharaan tiap orang ’)

Sintaks untuk orizontal bar chart sangat mirip dengan bar chart biasa, namun ’xticklabel’
diganti ’yticklabel’ untuk labeling.

figure (3)
barh( Tdata.age);
set(gca ,’yticklabel ’,Tdata.name); grid on
xlabel (’Umur ’); ylabel (’Nama ’);
title (’Umur orang ’)

22
5.2.2 Histogram

% Histogram orang berdasarkan kelompok umur: 0 -20; 21 -40; 41 -60; 61 -80; 81 -100
figure (4)
histogram (Tdata.age ,0:20:100) ; grid on
xlabel (’Umur ’); ylabel (’Frekuensi ’)
title (’Histogram orang berdasarkan kelompok umur dari 0 hingga 100 dengan step
20 ’)

23
Parameter dari fungsi histogram adalah (kolom_data, range_kelompok)

5.2.3 Pie Chart

% Komposisi banyaknya orang berdasarkan negara


% Creating Pie Chart
figure (5)
pie( categorical (Tdata.state))
title (’Komposisi banyaknya orang berdasarkan negara ’)

24
5.2.4 Stacked Bar Chart

Mirip dengan bar chart namun stacked. Pada contoh ini, kita membuat tabel frekuensi antara dua
kolom berbeda di data, yakni gender (urutan pertama) dan state (urutan kedua).

% Contingency table , seperti pada tabel unstack


tbl = sortrows (Tdata (: ,[3 4]))
tbl. tally = ones( height (tbl) ,1) % menambah kolom "tally" berisi 1
% gender state tally
% ’F’ ’DC ’ 1
% ’F’ ’TX ’ 1
% ’M’ ’CA ’ 1
% ’M’ ’CA ’ 1
% ’M’ ’CA ’ 1
% ’M’ ’DC ’ 1
tbl = unstack (tbl ,’tally ’,’state ’)
% gender CA DC TX
% ’F’ NaN 1 1
% ’M’ 3 1 1

Dari hasil di atas, baris dengan tabel frekuensi tbl sesuai dengan gender, dengan baris 1 adalah
data untuk perempuan (F) dan baris 2 adalah data untuk laki-laki (M). Kolom dari tabel frekuensi
merepresentasikan state, dengan kolom 1 berisi data untuk California (CA), kolom 2 untuk DC,
dan kolom 3 untuk Texas (TX). Aggregation function sum digunakan, dan menjumlahkan kolom
”tally” sehingga hasiilnya adalah frekuensi tabel.

Pada kode di bawah, kurung kurawal digunakan untuk mengubah tabel menjadi double untuk
digambar.

% Stacked bar chart dengan frekuensi data per gender per state
figure (6)
bar(tbl {: ,2: end},’stacked ’); grid on
set(gca ,’xticklabel ’,tbl. gender )
legend ( unique (Tdata.state), ’Location ’, ’bestoutside ’)
xlabel (’gender ’); ylabel (’frekuensi ’)
title (’Frekuensi data per gender per state ’)

25
% Banyaknya anak ( num_children ) dan banyaknya piaraan ( num_pets )
% dalam 1 grafik stacked bar chart
figure (7)
bar ([ Tdata. num_children ,Tdata. num_pets ],’stacked ’)
set(gca ,’xticklabel ’,Tdata.name); grid on
xlabel (’nama ’); ylabel (’umur ’);
title (’Banyaknya anak dan hewan peliharaan per orang ’)
legend ({’children ’,’pets ’},’Location ’,’bestoutside ’)

5.2.5 Line Chart

% Pertumbuhan populasi beruang (Bears) dari tahun ke tahun dalam line chart
figure (8)
plot( Tanimal .Year , Tanimal .Bears);
grid on; xlabel (’tahun ’); ylabel (’populasi ’)
title (’Pertumbuhan populasi beruang dari tahun ke tahun ’)

26
% Pertumbuhan populasi beruang (Bears), lumba -lumba ( Dolphins ), dan
% ikan paus ( Whales ) dari tahun ke tahun dalam 1 line chart
figure (9)
plot( Tanimal .Year , [ Tanimal .Bears Tanimal . Dolphins Tanimal . Whales ]);
grid on; xlabel (’tahun ’); ylabel (’Populasi ’)
legend ({’Bears ’,’Dolphins ’,’Whales ’},’Location ’,’bestoutside ’)
title (’Pertumbuhan populasi berang , lumba -lumba , dan paus ’)

27
5.2.6 Area Chart

Area chart memiliki konsep yang sangat mirip dengan line chart.

% Pertumbuhan populasi lumba -lumba ( Dolphins ) dari tahun ke tahun


% dalam area chart
figure (10)
area( Tanimal .Year , Tanimal . Dolphins )
grid on; xlabel (’tahun ’); ylabel (’populasi ’)
title (’Pertumbuhan populasi lumba -lumba ’)

% Pertumbuhan populasi lumba -lumba ( Dolphins ), ikan paus ( Whales ),


% dan beruang (Bears), dari tahun ke tahun dalam stacked area chart
figure (11)
area( Tanimal .Year , [ Tanimal .Bears Tanimal . Dolphins Tanimal . Whales ]);
grid on; xlabel (’tahun ’); ylabel (’populasi ’)
legend ({’Bears ’,’Dolphins ’,’Whales ’},’Location ’,’bestoutside ’)
title (’Pertumbuhan populasi lumba -lumba , paus , dan beruang ’)

28
5.2.7 Scatter and Bubble Plot

% Keterhubungan antara variable gold dan total dalam grafik scatter plot
% dan tunjukkan adanya korelasi positif
figure (12)
scatter ( Tmedali .gold , Tmedali .total ,[],’magenta ’,’*’)
grid on; xlabel (’emas ’); ylabel (’total ’)
title (’Korelasi antara medali emas dengan total medali ’)

29
Parameter dari scatter plot adalah (xaxis, yaxis, [], warna, ’*’).

Sama dengan scatter plot, bubble plot hanya menambah parameter ketiga dengan ukuran dari
bubble. Semakin besar nilainya, semakin besar bubblenya.

% Banyaknya total medali 10 negara tertinggi dikaitkan dengan perolehan nilai


% medali emas (gold) pada sumbu x dan perolehan medali perak ( silver ) pada
% sumbu y dalam grafik bubble plot
figure (13)
Tmedali10 = Tmedali (1:10 ,:) % extract 10 negara tertinggi
scatter ( Tmedali10 .gold , Tmedali10 .silver , [ Tmedali10 .total],’filled ’, ’green ’)
grid on; xlabel (’emas ’); ylabel (’silver ’)
title (’Korelasi antara total , emas , dan silver dari top 10’)

Dengan parameter bubble adalah (xaxis, yaxis, [bubble size], warna, ’filled’)

30

Anda mungkin juga menyukai