2012
Dasar-Dasar MATLAB Materi untuk Pelatihan Dasar MATLAB pada Sabtu, 14 April 2012
Agam Maulana Program Studi Teknik Elektro, Universitas Jenderal Soedirman 4/14/2012
Dasar-Dasar MATLAB
2012
Dasar-Dasar MATLAB Materi untuk Pelatihan Dasar MATLAB pada Sabtu, 14 April 2012
“Saya kadang-kadang berpikir, bahwa sebagai mahasiswa Teknik Elektro, kita bukan hanya mempelajari keilmuan Teknik Elektro namun secara perlahan-lahan, kita juga menjadi ahli
bahasa.”
Pendahuluan Sekilas MATLAB MATLAB merupakan sebuah bahasa komputasi teknis dan lingkungan yang interaktif untuk pengembangan algoritma, visualisasi data, analisis data, dan komputasi numerik. Dengan menggunakan produk MATLAB, kita bisa mengatasi masalah komputasi teknis dengan lebih cepat apabila dibandingkan dengan menggunakan bahasa pemrograman tradisional seperti C, C++, dan Fortran. Kita dapat menggunakan MATLAB untuk aplikasi yang luas, s eperti pengolahan sinyal dan citra, komunikasi, perancangan sistem kendali, pengujian dan pengukuran, pemodelan dan analisis finansial, dan biologi komputasional. Toolbox-toolbox tambahan (kumpulan fungsi MATLAB dengan tujuan khusus, tersedia secara terpisah) memperluas kegunaan MATLAB untuk mengatasi masalah yang terkait dengan bidang tertentu. MATLAB menyediakan sejumlah fitur untuk mendokumentasikan serta berbagi h asil pekerjaan kita. Kita dapat mengintegrasikan kode MATLAB dengan bahasa dan aplikasi lain, serta mendistribusikan algoritma dan aplikasi MATLAB. Fitur-fitur tersebut diantaranya adalah:
Bahasa tingkat tinggi untuk komputasi teknis Lingkungan pengembangan untuk manajemen kode, berkas, dan data Tool-tool yang interaktif untuk eksplorasi, perancangan, dan penyelesaian masalah secara iteratif Fungsi-fungsi matematis untuk aljabar linear, statisti k, analisis fourier, penapisan, optimisasi, dan integrasi numeris Fungsi grafik 2-D dan 3-D untuk menampilkan data Tool-tool untuk membangun antarmuka grafis secara custom Fungsi-fungsi untuk mengintegrasikan algoritma berbasis MATLAB dengan aplikasi maupun bahasa lain, seperti C, C++, Fortran, Java™, COM, dan Microsoft ® Excel
Agam Maulana
1
Dasar-Dasar MATLAB
2012
Variabel dan Tipe Data Double dan Single Sebagai bahasa tingkat tinggi, dalam MATLAB kita dapat menggunakan sebuah variabel secara langsung tanpa perlu mendeklarasikannya terlebih dahulu. Sebagai contoh, apabila pada command window diketikkan perintah sebagai berikut: >> a = 3;
Maka variabel a akan menyimpan nilai 3 tanpa memprotes bahwa a belum dideklarasikan seperti yang biasa kita temui dalam bahasa C/C++ misalnya. Lalu jika demikian, bagaimanakah variabel a menyimpan nilai 3? Apakah sebagai integer , floating point , atau bahkan character ? Untuk mengetahuinya, kita bisa mengetikkan perintah berikut: >> whos a
Seharusnya, anda akan menemukan jawaban sebagai berikut pada command window: Name
Size
a
1x1
Bytes 8
Class
Attributes
double
Nah, sekarang mari kita bahas satu per satu apa maksud dari pesan tersebut. Di bawah Name kita dapat melihat a: bagian ini menyatakan variabel yang dimaksud dari perintah whos yang dipanggil. Karena pada perintah whos menyertakan variabel a, maka hanya ditunjukkan informasi mengenai variabel a saja. Apabila perintah whos tidak menyertakan variabel apapun, maka semua variabel yang telah diinisialisasi akan ditampilkan informasi nya. Selanjutnya, di bagian Size kita menemukan keterangan 1x1. Bagian ini menyatakan ukuran dimensi dari variabel a. Seperti yang telah kita ketahui MATLAB adalah akronim dari Matrix Laboratory dan MATLAB digunakan untuk memudahkan operasi-operasi matriks. Dengan alasan itu, semua variabel MATLAB dianggap sebagai matriks. Apabila sebuah variabel diisi dengan nilai skalar, maka variabel tersebut dianggap sebagai matriks 1x1. Sekarang mari kita beralih ke bagian Bytes. Bytes menyatakan panjang memori yang digunakan untuk menyimpan sebuah variabel. Di sini terlihat bahwa variabel a mengambil ruang pada memori sebesar 8 byte, atau 64 bit apabila kita ingin menyatakannya dalam bit (1 byte = 8 bit). Beralih ke Class, kita dapat melihat double di bawah bagian ini. Nah, bagian inilah yang menyatakan tipe data yang disimpan. Variabel a disimpan sebagai double, dan variabel apapun yang kita gunakan untuk menyimpan angka nantinya secara default akan disimpan sebagai double. Yang dimaksud dengan double adalah double precision floating point . Untuk lebih jauh mengenal tipe data floating point , perhatikan Tabel 1.
Agam Maulana
2
Dasar-Dasar MATLAB
2012
Tabel 1. Tipe Data floating point
Class
Lebar
Keterangan
double
8 byte Double precision floating point
single
4 byte
Single precision floating point
Untuk mengubah a menjadi single, kita dapat menggunakan fungsi single() untuk melakukan konversi. Ketikkan perintah sebagai berikut: >> a = single(a);
Lalu lanjutkan dengan melakukan perintah whos terhadap a, perhatikan perbedaan yang terjadi.
Integer Apabila variabel yang ingin kita gunakan hanya akan menyimpan nilai-nilai integer , maka sebaiknya kita mengubah variabel yang kita gunakan ke dalam tipe integer . Untuk melakukannya kita dapat menggunakan salah satu dari fungsi-fungsi yang tercantum pada Tabel 2. Tabel 2. Fungsi untuk mengubah variabel menjadi integer
Fungsi
Lebar
Rentang Nilai
Keterangan
int8
1 byte
-(27) hingga (27-1) Bilangan bulat bertanda dengan lebar 8 bit
int16
2 byte
-(215) hingga (215-1) Bilangan bulat bertanda dengan lebar 16 bit
int32
4 byte
-(231) hingga (231-1) Bilangan bulat bertanda dengan lebar 32 bit
int64
8 byte
-(263) hingga (263-1) Bilangan bulat bertanda dengan lebar 64 bit
uint8
1 byte
0 hingga (2 8-1) Bilangan bulat tak bertanda dengan lebar 8 bit
uint16
2 byte
0 hingga (216-1) Bilangan bulat tak bertanda dengan lebar 16 bit
uint32
4 byte
0 hingga (232-1) Bilangan bulat tak bertanda dengan lebar 32 bit
Agam Maulana
3
Dasar-Dasar MATLAB uint64
8 byte
2012
0 hingga (264-1) Bilangan bulat tak bertanda dengan lebar 64 bit
Dengan demikian, apabila kita menginginkan sebuah variabel menyimpan suatu nilai sebagai integer , kita dapat menggunakan perintah sebagai berikut: >> an_integer = int16(20)
Perintah tersebut akan membuat variabel an_integer menyimpan nilai 20 sebagai integer menggunakan lebar 16 bit. Cobalah perintah-perintah yang lain dan pahami masing-masing perintah tersebut!
Character dan String Untuk menginisialisasi sebuah variabel dengan character maupun string , kita cukup meletakkan character atau string tersebut di dalam tanda petik satu ( single quote). Berikut ini adalah perintah untuk menginisialisasi variabel dengan character: >> a_character = 'x';
Dan berikut ini adalah contoh untuk menginisialisasi variabel dengan string: >> a_string = 'this is a string example'
Apabila kita perhatikan, perintah-perintah yang telah kita gunakan ada yang diakhiri
dengan “titik koma” (semicolon) dan ada yang tidak. Apa perbedaan dari keduanya?
Skalar, Vektor, dan Matriks Skalar dan Vektor Sejauh ini, kita baru bermain-main dengan data skalar. Dalam konteks MATLAB, yang dimaksud skalar adalah matriks dengan dimensi 1x1. Selanjutnya, kita akan mencoba menginisialisasi sebuah vektor. Pengertian vektor secara sempit di sini adalah sebuah matriks yang hanya terdiri dari satu baris atau satu kolom. Vektor kolom adalah vektor yang hanya terdiri dari satu kolom. Berikut ini adalah perintah untuk menginisialisasi sebuah variabel dengan vektor kolom: >> col_vect = [1; 2; 3; 4; 5; 6; 7; 8]
Perhatikan penggunaan tanda “titik koma” ( semicolon), tanda ini digunakan untuk memasukkan nilai pada baris berikutnya. Untuk melihat dimensi dari vektor ini, kita dapat menggunakan perintah sebagai berikut:
Agam Maulana
4
Dasar-Dasar MATLAB
2012
>> size(col_vect)
Berbeda dengan vektor kolom, vektor baris adalah vektor yang hanya terdiri dari satu baris. Untuk membuat vektor baris, perintah yang bisa digunakan adalah: >> row_vect = [1 2 3 4 5 6 7 8]
Untuk memisahkan elemen satu dengan elemen lainnya, cukup digunakan spasi. Cobalah perintah size pada row_vect dan perhatikan apa perbedaan antara col_vect dengan row_vect apabila dikenakan perintah size. Untuk mengakses tiap elemen dari vektor, kita cukup memanggil nama variabel vektor dengan menyertakan indeks dari elemen yang ingin dipanggil. Sebagai contoh, apabila kita ingin mengambil elemen kelima dari row_vect dan col_vect, kita dapat menggunakan perintah row_vect(5) dan col_vect(5).
Matriks
“A matriks is a rectangular array of number.”
Ya, sebuah matriks pada dasarnya adalah susunan sejumlah angka-angka yang membentuk bidang segiempat. Susunan angka-angka tersebut akan terdiri dari m baris dan n kolom sehingga akan membentuk matriks 2 dimensi dengan ukuran m × n. Salah satu matriks yang telah lama dikenal antara lain susunan bilangan yang dikenal sebagai magic number , dimana jumlah angka-angka pada arah vertikal, horisontal maupun diagonal selalu sama. Untuk membuat sebuah matriks magic number ini, kita dapat mengetikkan perintah sebagai berikut: >> magical = magic(3)
Perintah di atas akan menghasilkan sebuah matriks magic number dengan ukuran 3x3. Cobalah untuk menjalankan perintah whos pada variabel magical dan amati keterangan yang muncul. Matriks lain yang biasa digunakan untuk berbagai keperluan adalah matriks identitas, matriks satuan, maupun matriks nol. Perintah-perintah yang digunakan untuk menghasilkan matriksmatriks tersebut dapat dilihat pada Tabel 3. Tabel 3. Perintah untuk menghasilkan matriks tertentu
Perintah magic(n)
Agam Maulana
Keterangan
Perintah untuk menghasilkan matriks magic number dengan ukuran n × n.
5
Dasar-Dasar MATLAB
2012
eyes(n)
Perintah untuk menghasilkan matriks identitas dengan ukuran n × n.
ones(n)
Perintah untuk menghasilkan matriks satuan dengan ukuran n × n.
zeros(n)
Perintah untuk menghasilkan matriks nol dengan ukuran n × n.
Apabila kita ingin membuat matriks sendiri, maka kita pun dapat dengan mudah melakukannya. Berikut ini sebuah contoh perintah untuk menghasilkan matr iks 2x2: >> a_matrix = [1 2; 3 4]
Perhatikan bahwa untuk berpindah ke elemen pada kolom selanjutnya kita cukup mengetikkan spasi, sedangkan untuk berpindah ke elemen pada baris berikutnya kita perlu mengetikkan tanda “titik koma” ( semicolon).
Operasi Aritmatik Penjumlahan dan Pengurangan Seperti yang terlihat pada Error! Reference source not found., operasi penjumlahan dapat dengan mudah dilakukan dengan operator +. Yang perlu diingat adalah, bahwa semua variabel dalam MATLAB dianggap sebagai matriks. Dengan demikian, ketika kita akan melakukan operasi aritmatik, syarat-syarat operasi aritmatik dalam matriks harus dipenuhi. Untuk operasi penjumlahan, ukuran matriks kedua variabel harus sama. Sebagai contoh, perhatikan perintah-perintah berikut: >> 3 + 3 >> [3 4] + [4 7] >> [1 2; 3 4] + [5 6; 7 8]
Perintah seperti di atas tidak akan bermasalah pada MATLAB. Perhatikan bahwa penjumlahan dilakukan terhadap elemen-elemen matriks yang memiliki indeks yang sama. Selanjutnya, perhatikan perintah-perintah berikut: >> [1 2] + [3; 4] >> [2; 3] + [4 5; 5 6]
Perintah di atas tidak akan dapat dieksekusi oleh MATLAB karena tidak memenuhi aturan operasi penjumlahan matriks: dimensi kedua operand harus sama. Aturan ini berlaku juga untuk operasi pengurangan. Cobalah beberapa perintah pengurangan dan amati hasilnya.
Perkalian Seperti yang telah kita ketahui, aturan perkalian matriks a dalah apabila terdapat matriks A
Agam Maulana
6
Dasar-Dasar MATLAB
2012
dan matriks B, maka perkalian matriks A × B dapat dilakukan apabila ukuran A adalah m × n dan ukuran B adalah n × o. Atau dengan kata lain, jumlah kolom pada matriks A harus sama dengan jumlah kolom pada matriks B. Operator yang digunakan untuk perkalian adalah operator *. Selain untuk melakukan operasi perkalian pada matriks dengan syarat terse but, operator * juga digunakan untuk perkalian skalar dan perkalian skalar dengan matriks. Untuk lebih memahami penggunaan operasi perkalian dalam MATLAB, cobalah untuk menjalankan perintah-perintah berikut dan amati hasilnya: >> [5 8] * [2; 2] >> 2*[3 9; 7 2]
Selain itu, MATLAB juga memiliki operator perkalian lain, yaitu operator .*. Operator ini digunakan untuk melakukan perkalian per elemen matriks. Dengan demikian, operator ini mensyaratkan agar kedua operand untuk memiliki ukuran yang identik. Untuk mengetahui perbedaannya dengan perintah perkalian matriks, coba jalankan perintah-perintah di bawah ini dan amati perbedaannya: >> [4 3] .* [2 2] >> [9 2; 1 3] .* [1 2; 1 2]
Pembagian Untuk operasi pembagian matriks, perlu memahami terlebih dahulu mengenai operasi perkalian dan inverse matriks. Kita tentunya telah memahami operasi-operasi matriks berikut: Ax = B x = A-1.B yA = B y = B.A-1
Nah, untuk menghitung x kita menggunakan perintah A\B dengan syarat A dan B memiliki jumlah baris yang sama. Sedangkan, untuk menghitung y kita menggunakan perintah B/A dengan syarat A dan B memiliki jumlah kolom yang sama. Selain kedua operasi pembagian tersebut, MATLAB juga dapat melakukan pembagian matriks per elemen. Operator yang digunakan adalah ./ atau .\. Kedua operator tersebut akan menghasilkan hasil yang sama. Syarat yang diperlukan adalah ukuran kedua matriks harus identik.
Perpangkatan Untuk operasi perpangkatan, operator yang digunakan adalah operator ^. Operator tersebut merupakan operator untuk perpangkatan matriks. Apabila kit a bermaksud untuk memangkatkan masing-masing elemen matriks, maka operator yang digunakan adalah
Agam Maulana
7
Dasar-Dasar MATLAB
2012
operator .^. Tabel 4. Macam-macam operator aritmatik
+
Operasi penjumlahan
-
Operasi pengurangan
*
Operasi perkalian
.*
Operasi perkalian per element
\
Operasi matrix left division
/
Operasi matrix right division
./
^
.^
Operasi pembagian per element Operasi perpangkatan Operasi perpangkatan per element
Operasi-Operasi Dasar Matriks Pada bagian ini, kita akan membahas beberapa operasi dasar matriks: transpose, inverse, dan konvolusi. Untuk melakukan transpose, dapat kita lakukan dengan operator '. Sebagai contoh, apabila kita memiliki matriks A dan kita ingin men-transpose-nya, dapat kita lakukan dengan perintah A'. Untuk meng-inverse matriks A tersebut, digunakan perintah inv(A). Perintah inverse hanya dapat dilakukan apabila matriks A adalah matriks pers egi. Operasi konvolusi sangat banyak digunakan pada aplikasi pengolahan sinyal, pengolahan citra, dan juga banyak aplikasi lainnya. Pada bahasa komputasi yang lain (misalnya C atau Java) memerlukan penggunaan perulangan untuk dapat melakukan konvolusi. Sementara dengan menggunakan MATLAB, operasi konvolusi dapat dilakukan dengan lebih mudah. Untuk melakukan konvolusi antara matriks A dengan matriks B, maka dapat dilakukan dengan perintah conv(A,B).
Agam Maulana
8
Dasar-Dasar MATLAB
2012
Menampilkan Grafik Dalam banyak aplikasi, kita seringkali perlu untuk membuat grafik yang menampilkan data atau menunjukkan hubungan antar variabel. Dengan menggunakan MATLAB, hal ini dapat kita lakukan dengan mudah. Sebagai contoh, misalnya kita ingin membuat grafik dari fungsi y = e-x sin(x). Pertama, kita siapkan rentang x yang diinginkan dengan perintah sebagai berikut: >> x = 0:0.01:30;
Dengan perintah tersebut, kita telah mempersiapkan x untuk rentang 0 hingga 10 dengan ketelitian 0.01. Kemudian, kita buat fungsi y yang diinginkan dengan perintah berikut: >> y = exp(-x) .* sin(x);
Perintah di atas akan mengkalkulasi nilai y sesuai dengan nilai x yang telah didefinisikan. Perhatikan bahwa operator perkalian yang digunakan di sini adalah .* dan bukan * (kenapa?). Kemudian, untuk menampilkan grafik dari fungsi ter sebut digunakan perintah sebagai berikut: >> plot(x,y)
Selain plot, ada banyak cara lain untuk menampilkan grafik. Berikut ini adalah fungsi-fungsi yang dapat digunakan untuk menampilkan grafik dengan masing-masing t ujuan yang berbeda-beda:
area bar contour errorbar plot, plot3, loglog, semilogx, semilogy
quiver, quiver3 scatter, scatter3 stairs stem, stem3 surf, mesh
M-files Kita telah mempelajari beberapa perintah-perintah MATLAB sebagai perintah yang terpisah dan berdiri sendiri. Apabila untuk menyelesaikan masalah kita memerlukan beberapa langkah yang memerlukan banyak perintah berbeda dan berurutan, t entunya akan merepotkan apabila kita harus mengetikkannya berkali-kali pada command window. Apalagi jika solusi tersebut perlu kita uji dengan banyak masukkan berbeda secara berulang-ulang. Dalam kasus ini, kita bisa menerapkan algoritma yang kita rancang dan mengimplementasikannya ke dalam sebuah m- file. Dengan m- file, kita dapat membuat sebuah program dari MATLAB. Sebagai latihan, buatlah sebuah m- file melalui MATLAB (File New m-file) lalu kemudian ketikkan perintah
Agam Maulana
9
Dasar-Dasar MATLAB
2012
berikut: im = imread('football.jpg'); imshow(im) title('gambar asli') imgray = rgb2gray(im); figure,imshow(imgray) title('gambar grayscale') im_plus = imgray + 20; figure,imshow(im_plus) im_filt = conv2(imgray,[-1 0 1;-1 0 1;-1 0 1],'same'); figure,imshow(im_filt)
Kemudian simpan dan jalankan perintah tersebut (F5). Amati hasilnya dan coba pahami perintah-perintah di atas.
Control Structure Control structure merupakan sebuah cara untuk mengendalikan alur program. Yang pertama akan kita pelajari adalah struktur if-else. Berikut ini sebuah contoh struktur if-else: if a == b message = 'a sama dengan b' elseif a > b message = 'a lebih dari b' else message = 'a kurang dari b' end
Selain menggunakan pola if-else, kita juga dapat menggunakan pola switch-case untuk melakukan conditional selection. Berikut ini contohnya: switch x case 0 message case 1 message case 2 message otherwise message end
= 'bagian ini dieksekusi apabila x = 0' = 'bagian ini dieksekusi apabila x = 1' = 'bagian ini dieksekusi apabila x = 2' = 'bagian ini untuk x selain 0, 1, dan 2'
Selanjutnya, kita juga dapat melakukan instruksi perulangan menggunakan while dan for. Contoh penggunaan perulangan while adalah sebagai berikut: while x > 0 message = 'bagian ini dieksekusi selama x > 0' x = x - 1; end
Sementara untuk for, dapat dilakukan seperti contoh di bawah ini: for i=1:10
Agam Maulana
10
Dasar-Dasar MATLAB
2012
a_vector(i) = i; end
Dalam struktur perulangan, dikenal perintah break dan continue. Perintah break akan membuat eksekusi perulangan berhenti seketika. Perintah ini seringkali digunakan dalam algoritma pencarian dimana ketika nilai yang dicari telah ditemukan, maka perintah break dieksekusi untuk menghentikan perulangan perintah yang tidak perlu. Sementara itu, perintah continue akan menyebabkan eksekusi mengabaikan perintah-perintah setelah continue dan kemudian melanjutkan perulangan dari bagian awal perintah perulangan.
Fungsi Fungsi merupakan sebuah struktur program yang tidak dapat berdiri sendiri. Fungsi sebenarnya disimpan sebagai m- file. Namun berbeda dengan m- file biasa, sebuah fungsi yang telah dibuat dapat dipanggil berkali-kali melalui command window ataupun m- file lain yang kita buat. Dengan demikian, melalui fungsi kita dapat menerapkan prinsip code reuse. Kita tidak perlu mengetikkan berkali-kali perintah yang sama apabila perintah-perintah t ersebut telah kita jadikan sebagai sebuah fungsi. Sekarang kita akan mencoba membuat sebuah fungsi sederhana. Pertama, buatlah sebuah m file baru lalu ketikkan perintah berikut: function luas = segitiga(alas,tinggi) luas = a*t/2; end
Simpanlah fungsi tersebut. Secara default , nama berkas fungsi akan menyesuaikan dengan definisi yang kita buat. Pada fungsi di atas, kita mendeklarasikan nama fungsi segitiga dengan parameter alas dan tinggi. Fungsi ini akan mengembalikan nilai luas kepada pemanggil fungsi. Untuk memanggil fungsi, ketikkan perintah berikut pada command window: >> segitiga(5,2)
Amatilah hasilnya, apakah sesuai dengan luas segitiga yang seharusnya? Selanjutnya, cobalah berbagai nilai yang lain untuk menguji fungsi tersebut.
Penutup Alhamdulillah, modul ini ditulis sebagai pendamping pelatihan MATLAB pada Sabtu, 14 April 2012. Modul ini diharapkan dapat membantu peserta pelatihan untuk mempelajari berbagai dasar-dasar dalam perintah MATLAB dan OCTAVE yang telah menjadi alat bantu pembelajaran penting di dalam lingkungan Program Studi Teknik Elektro. Modul ini tentu jauh dari sempurna apabila ditujukan bagi mahasiswa yang ingin menguasai berbagai fitur dan perintah dalam MATLAB yang begitu banyak. Dalam hal ini, kemandirian belajar untuk peserta sangat dianjurkan untuk dapat memanfaatkan MATLAB dalam berbagai kebutuhan pembelajaran dan penelitian.
Agam Maulana
11