Sabtu, 03 Juli 2010

Pengenalan MATLAB

-->

Pengenalan MATLAB

MATLAB atau Matrix Laboratory adalah suatu aplikasi berbasis expert system yang digunakan untuk keperluan komputasi sains,  seperti halnya Maple dan Mathematica. Aplikasi yang dibuat oleh MathWorks.inc ini sangat handal untuk komputasi yang terkait dengan array atau matriks. Selain digunakan untuk komputasi, MATLAB juga dapat dibuat untuk sarana simulasi.
Tool box-tool box sebagai pelengkap MATLAB juga disediakan dalam paketnya, seperti toolbox untuk keperluan fuzzy logic, artificial neural network, image processing dsb. Tool box ini berisi paket yang di dalamnya terdapat perintah-perintah untuk melakukan tugas khusus sesuai dengan nama tool boxnya, misalnya perintah untuk membaca nilai pixel suatu image, perintah ini terdapat dalam tool box image processing. Daftar nama-nama tool box ini dapat kita lihat sewaktu proses instalasi MATLAB.
Pada bagian ini, kita akan membahas dasar-dasar cara penggunaan MATLAB.
Untuk menuliskan perintah atau command perhitungan, dalam MATLAB sudah disediakan COMMAND WINDOW. Di dalam COMMAND WINDOW ini terdapat tanda prompt >>. Di sinilah perintah MATLAB dituliskan, seperti halnya menuliskan perintah dalam DOS atau SHELL LINUX. Berikut ini contoh pemberian perintah untuk mencari hasil penjumlahan 3 dan 4.
>> 3 + 4
Apabila setelah menuliskan perintah di atas kemudian ditekan ENTER, maka hasil penjumlahannya langsung ditampilkan di bawah perintah tersebut, ditandai dengan ‘ans’ (answer)
>> 3 + 4
ans =

7
Apabila kita menginginkan output perhitungan tidak ditampilkan, namun hanya disimpan dalam memory, maka tambahkan tanda semicolon di akhir perintah.
>> 3 + 4;
Tampilan COMMAND WINDOW MATLAB memang berbasis teks, sehingga tampilan MATLAB tidak seindah Maple atau Mathematica.
Suatu saat mungkin kita menemui kesulitan dalam menuliskan perintah dalam MATLAB, mungkin karena lupa sintaksnya atau lupa nama perintahnya. Tidak usah khawatir karena MATLAB menyediakan fasilitas HELP. Bagaimana cara menampilkan HELP terkait dengan topik tertentu? Caranya cukup mudah, yaitu tinggal tulislah HELP dan dilanjutkan dengan topik yang diinginkan. Misalnya
>> help ops
Perintah di atas akan menampilkan penjelasan tentang operator-operator yang ada di MATLAB
>> help elfun
Sedangkan perintah di atas akan menampilkan nama-nama perintah untuk perhitungan matematis.
Untuk menampilkan daftar topik yang ada, ketikkan perintah
>> help
Kita juga dapat meminta penjelasan terhadap sintaks suatu perintah, yaitu dengan menuliskan HELP dan dilanjutkan dengan nama perintah. Misalnya
>> help abs
Perintah di atas akan menampilkan penjelasan tentang perintah abs(), cara penulisannya atau sintaks, termasuk juga contoh penggunaannya.

Penggunaan Variabel dalam MATLAB

Seperti pada umumnya dalam dunia komputasi, variabel digunakan untuk menyimpan suatu value ke dalam memori komputer. Suatu saat apabila value tersebut akan digunakan, maka cukup memanggil variabel tersebut.
Aturan penamaan variabel dalam MATLAB juga sama dengan aturan penamaan variabel pada umumnya, seperti:
  1. Harus diawali dengan karakter huruf
  2. Tidak boleh mengandung spasi
  3. Tidak boleh mengandung operator aritmatik (+, -, /, *)
  4. Tidak boleh sama dengan nama function
Berikut ini beberapa contoh penamaan variabel yang benar dan proses assignment nya
>> NilaiKU = 6;
>> A1 = 4.5;
>> Nilai_ku = NilaiKu + A1;
Sedangkan contoh-contoh berikut ini penamaan variabel yang salah:
>> 7an = 10;
>> Hallo Boy = -3;
>> Jumlah-Bilangan = 3 + 4;
Dalam mendeklarasikan suatu variabel dalam MATLAB, kita tidak perlu menyertakan tipe datanya, entah integer, float, string atau yang lain. Namun, secara otomatis tipe data variabel akan menyesuaikan jenis value yang diassign. Selain itu, kita dapat melihat nama-nama variabel apa saja yang telah kita gunakan dalam suatu session dalam MATLAB. Adapun cara melihat daftar nama-nama variabel tersebut dengan mengetikkan perintah
>> who
Perintah lain, selain who, untuk melihat daftar nama-nama variabel yang telah digunakan adalah dengan
>> whos
Perbedaannya adalah, bahwa dengan whos, tidak hanya nama variabel yang ditampilkan, namun juga tipe datanya.
Mungkin ada pertanyaan, bagaimana caranya menghapus nama-nama variabel tersebut dalam memori? caranya adalah dengan mengetikkan perintah
>> clear
Satu lagi yang penting terkait dengan variabel, bahwa nama variabel dalam MATLAB bersifat case sensitive, artinya besar kecilnya huruf dalam nama variabel akan berpengaruh. Sebagai contoh, misalkan ada variabel ‘Nilai’ dengan ‘nilai’, keduanya adalah variabel yang beda.
Pendefinisian Vektor-vektor Besar

Suatu vektor 1 kali 100 yang menyusun sample pada sinyal cosinus dapat dibangkitkan dengan
>> x = cos(0.1*pi*(0:99));
Untuk membangkitkan suatu "ramp" dari 1 sampai 50 coba:
>> x = [1:1:50];
bilangan kedua mengindikasikan step kenaikan dari dari 1 sampai 50. Untuk membangkitkan suatu fungsi "ramp" dari 1 sampai 50 coba berikut ini:
>> x = [1:1:50];
Ketika anda tidak memasukkan angka kedua pada perintah diatas, maka secara otomatis (default) step kenaikan ditetapkan bernilai “1”:
>> x = [1:50];
Anda bisa juga secara khusus mendefinisikan suatu rentang nilai pada x sebagai berikut::
>> x(51:100) = [50:-1:1]
Ini merupakan metode yang sangat bermanfaat untuk mensepsifikasi nilai “waktu” untuk penggambaran. Sebagai contoh, ditetapkan interval sampling dalam contoh diatas adalah 1 detik. Selanjutnya anda dapat mendefisnisikan seperti berikut:
>> time = [0:0.001:0.099];

Menentukan Variable Scalar

Langkah kita yang pertama adalah dengan menentukan variable scalar dengan cara melakukan pengetikan seperti berikut:
» x = 2 (selanjutnya tekan “Enter”)
x =
2
» y = 3
y =
3
» z = x + y
z =
5
Tidak terlalu menjadi masalah bagi anda? Saya percaya anda tidak mengalami kesulitan, sebab anda adalah orang yang sangat cerdas. Nah bagaimana dengan yang satu berikutnya ini? Disini kita mulai dengan mendefinisikan dua buah vector, yaitu vector x dan vector y:
» x = [1 2 3]
x =
1 2 3
» y = [4 5 6]
y =
4 5 6
Selajutnya ketik:
>> y(1)
ans =
4
dan ulangi untuk y(2) and y(3).
Matlab menggunakan integer positif untuk index array. Elemen pertama adalah y(1), elemen kedua adalah y(2), dan seterusnya. Nol atau bilangan negatif tidak diperbolehkan untuk indek array. Sekarang kita jumlahkan keduanya:
» x+y
ans =
5 7 9
dan sekarang hitung inner product:
» x*y'
ans =
32
Jawabannya adalah 1*4 + 2*5 + 3*6 = 32! Catat, bahwa y' adalah transpose pada y dan merupakan suatu vector kolom. Untuk memeriksanya, ketikkan perintah berikut:
>> y'
ans =
4
5
6
Cara lain pada pengkombinasian dua vector adalah diakukan melalui perkalian elementdemi- element:
>> x.*y
ans =
4 10 18
Catat periode sebelum perkalian simbol. Sekarang kita dapat mendefinisikan suatu matrix:
» A = [1 2 3
4 5 6
7 8 9];
Catat bahwa matrik tidak diulang kalau kita menggunakan semi colon. Kita sekarang kalikan
A dengan transpose dari x:
» A*x'
ans =
14
32
50
Sekarang kita harus mentranspose x untuk memenuhi perkalian suatu matrik dan suatu vector kolom. Matrik-matrik ini dapat juga dikalikan satu sama lain diantara mereka:
» B = [1 2 3 4
5 6 7 8
7 6 5 4];
» A*B
ans =
32 32 32 32
71 74 77 80
110 116 122 128
Sekarang coba anda lakukan penjumlahan antara A dan B:
» A+B
??? Error using ==> +
Matrix dimensions must agree.
Baiklah, kita tidak dapat menambah suatu matrik 3 kali 3 dengan matrix 3 kali 4 , dan Matlab akan mendeteksi dimensi yang mismatch dan selanjutnya memeberikan pesan error. Sekarang kita cari cara lain untuk mendefinisikan matrik dan vektor. Sebagai contoh suatu matrik nol dengan dimensi 3 baris dan 6 kolom dapat dinyatakan sebagai:
>> zeros(3,6)
ans =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
tentu saja jika anda tambahkan suatu ";" setelah zeros(3,6), jawabannya tidak akan ditampilkan di layar monitor anda. Angka pertama, 3 menunjukkan jumah baris, sedangkan angka kedua, 6, adalah jumlah kolom. Kita dapat pula melakukan hal yang sama untuk menampilkan angka satu seperti berikut:
>> ones(3,6)
ans =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1VN:F [1.9.0_1079]
Kesederhanaan dalam proses assignment variabel terhadap nilai bertipe array atau matriks ini disebabkan tidak diperlukannya pendefinisian ukuran (size) array atau matriks pada variabel tersebut. Secara otomatis, size atau dimensi dari variabel bertipe array ini akan menyesuaikan dengan array yang diassign atau dengan kata lain size untuk variabel bertipe array ini bersifat dinamis. Dengan demikian, kita tidak perlu pusing memikirkan size variabel yang diperlukan untuk suatu proses perhitungan.
Bagaimana caranya melakukan proses assignment variabel dengan nilai bertipe array atau matriks? Mudah sekali… yaitu hanya dengan mengapit elemen-elemen array dengan tanda kurung siku. Contoh:
>> arrayKu = [1 2 3 4 5]
Maksud perintah di atas adalah mengassign ‘arrayKu’ dengan nilai bertipe data array dengan size 1 x 5, dengan elemennya {1, 2, 3, 4, 5}. Kita bisa melihat outputnya di command window seperti di bawah ini:
arrayKu =
1     2     3     4     5
Dimensi array dapat juga diubah menjadi bentuk kolom 5 x 1, dengan cara:
>> arrayKu = [1; 2; 3; 4; 5]
Outputnya:
arrayKu =
1
2
3
4
5
Bagaimana dengan array berdimensi 3 x 4? berikut ini contohnya:
>> arrayKu = [1 2 3 4; 5 6 7 8; 9 10 11 12]
Outputnya:
arrayKu =

1     2     3     4
5     6     7     8
9    10    11    12
Mungkin ada yang bertanya misalkan diketahui suatu array, katakanlah ‘arrayKu’ seperti di atas, bagaimana caranya mengambil atau menampilkan elemen yang bernilai ‘7′? untuk melakukan hal ini, kita harus tahu posisi elemen ‘7′ ini, yaitu pada baris ke 2 kolom ke 3. Lalu tuliskan saja perintah ini:
>> arrayKu(2, 3)
Outputnya:
ans =

7
Berikutnya, misalkan kita ingin mengganti elemen ‘arrayKu’ pada baris ke 3 kolom ke 4 dengan nilai 100. Bagaimana caranya?
>> arrayKu(3, 4) = 100
Outputnya:
arrayKu =

1     2     3     4
5     6     7     8
9    10    11   100
Ada pertanyaan lagi, bagaimana caranya mengambil semua elemen pada kolom pertama dari ‘arrayKu’? Ini dia perintahnya
>> arrayKu(:, 1)
Outputnya:
ans =

1
5
9
Bagaimana dengan mengambil semua elemen pada salah satu barisnya? misalkan baris ke 2? >> arrayKu 
Outputnya:
ans =
5     6     7     8
Kita juga dapat memanipulasi semua elemen dalam satu kolom atau baris sekaligus melalui suatu perhitungan. Misalkan baris kedua dari ‘arrayKu’ diubah menjadi 2 kali mula-mula.
>> arrayKu(2,   = 2*arrayKu(2,
Outputnya:
arrayKu =
1      2       3       4
10    12     14    16
9     10     11     12

Matriks

Masukkan matriks ke dalam Matlab seperti vector, kecuali penggunaan (,).
B = [1 2 3 4;5 6 7 8;9 10 11 12]
B =
1    2     3     4
5    6     7     8
9    10   11   12

B = [ 1  2   3   4
5  6   7   8
9  10 11 12]

B =
1    2     3     4
5    6     7     8
9    10   11   12
Matriks di Matlab dapat dimanipulasi dengan banyak cara. Misalkan dengan membuat
transpos:
C = B'
C =
1     5     9
2     6     10
3     7     11
4     8     12

Untuk mendapatkan transpose, gunakan .'.
Sekarang anda dapat mengalikan kedua matriks B dan C secara bersamaan.
D = B * C
D =
30      70       110
70      174     278
110    278     446
D = C * B
D =
107    122    137    152
122    140    158    176
137    158    179    200
152    176    200    224
Manipulasi matrix lain adalah dengan menggunakan operator .* .
E = [1 2;3 4]
F = [2 3;4 5]
G = E .* F
E =
1    2
3    4
F =
2     3
4     5
G =
2     6
12    20
If you have a square matrix, like E, you can also multiply it by itself as many times as
you like by raising it to a given power.
E^3
ans =
37     54
81     118
Jika anda ingin membuat pangkat dari tiap elemen matriks, gunakan fungsi berikut .^
E.^3
ans =
1      8
27    64
Anda juga dapat menghitung inverse sebuah matrix:
X = inv(E)
X =
-2.0000     1.0000
1.5000    -0.5000
atau nilai eigen matriks:
eig(E)
ans =
-0.3723
5.3723
Untuk mendapatkan coefficients characteristic polynomial sebuah matrix. Gunakan
fungsi "poly" :
p = poly(E)
p =
1.0000   -5.0000    -2.0000
Ingat eigenvalues sebuah matrix adalah sama seperti akar polynomial karakteristik :
roots(p)
ans =
5.3723
-0.3723

Penggambaran Grafik

Salah satu kelebihan dari Matlab adalah kemudahan dalam mengolah grafik. Sehingga anda tidak perlu kesulitan untuk melihat suatu respon system, misalnya pada kasus melijhat bentuk sinyal dalam domain waktu anda cukup mengikuti langkah berikut. Sekarang ketikkan:
>> time = [0:0.001:0.099];
>> x = cos(0.1*pi*(0:99));
>> plot(time,x)
>> xlabel('time (msec)')
>> ylabel('x(t)')
ini akan menghasilkan gambar seperti berikut:
-->

Gambar  Contoh tampilan grafik sederhana dengan perintah plot

Sedangkan cara untuk menampilkan sederetan nilai fungsi waktu diskrit adalah dengan menggunakan perintah "stem". Dari contoh deretan perintah coba anda rubah beberapa bagian dengan perintah berikut
>> stem(time,x)
>> xlabel('time (msec)')
>> ylabel('x(t)')
Apakah hasilnya seperti berikut ini?

Gambar  Contoh tampilan grafik dengan perintah stem

Cobalah untuk membuat program seperti berikut ini pada Matlab editor, dan jangan lupa anda simpan dengan nama coba_2
x(1:52) = [0 0 1:1:50];
x(53:102) = [50:-1:1];
h = [1 2];
for n = 3:101,
y(n) = 0;
for m = 1:2,
y(n) = y(n) + h(m)*x(n-m);
end
end
plot(y)
Hasil apa yang anda dapatkan ?

Dalam hal ini anda harus memahami arti setiap perintah yang anda tuliskan dalam Matlab, tidak ada salahnya anda bertanya kepada instruktur apa arti perintah-perintah tersebut. Satu contoh lain program untuk for adalah pembangkitan gambar seperti berikut.
%File Name:coba_3.m
n=201;
delx=10/(n-1);
for k=1:n
x(k)=(k-1)*delx;
y(k)=sin(x(k))*exp(-0.4*x(k));
end
%plot(x,y)
plot(x,y,'linewidth',4)
title('Grafik yang pertama')
xlabel('x');ylabel('y');
Bagiamana hasilnya?
Gambar  Tampilan program grafik

Penyelesaian SPL dengan Operasi Baris Elementer Menggunakan MATLAB

Setelah kita membaca artikel sebelumnya tentang array dan matriks, khususnya pada bagian akhir artikel tersebut, mungkin beberapa dari kita sudah punya ide ‘mungkinkah MATLAB digunakan untuk menyelesaikan SPL dengan operasi baris elementer? dan jawabannya adalah bisa. Meskipun dalam MATLAB sudah ada perintah khusus untuk mencari solusi SPL, namun hal ini kurang menarik bagi mereka yang masih belajar tentang konsep penyelesaian SPL, khususnya dengan memanfaatkan operasi baris elementer. Contoh penggunaan MATLAB untuk menyelesaikan SPL dengan operasi baris elementer.
Misalkan diberikan SPL sebagai berikut:
2x + 4y - 2z = 12
x + 5y + 3z =  8
-3x +  y + 3z = -4
Kita akan coba menyelesaikan SPL di atas dengan operasi baris elementer dengan MATLAB.
Langkah pertama adalah kita buat matriks yang diperbesar (Augmented Matrix), berisi semua koefisien variabel dan hasilnya. Misalkan augmented matrix nya disimpan dalam variabel A. Perintah MATLAB nya:
>> A = [2 4 -2 12; 1 5 3 8; -3 1 3 -4]
Outputnya:
A =
2     4    -2    12
1     5     3     8
-3     1     3    -4
Seperti dalam teori, bahwa target dari operasi baris elementer untuk menyelesaikan SPL adalah mendapatkan matriks segitiga atas dari matriks yang diperbesar tersebut. Apabila kita gunakan metode Gauss Jordan, maka bentuk augmented matrix ini haruslah
1     0     0    p
0     1     0    q
0     0     1    r
dari bentuk di atas, solusi dari SPL adalah x = p, y = q dan z = r.
OK kita mulai memanipulasi augmented matriks dengan operasi baris elementer sedemikian hingga kita peroleh bentuk matriks target di atas.
B1 <- B1 – B2 (baris ke-1 yang baru, diperoleh dari baris ke-1 dikurangi baris ke-2)
>> A(1, :)  = A(1, - A(2,
Outputnya:
A =
1    -1    -5     4
1     5     3     8
-3     1     3    -4
B2 <- B2 – B1 (baris ke-2 yang baru, diperoleh dari baris ke-2 dikurangi baris ke-1)
>> A(2, = A(2,  - A(1,
Outputnya:
A =
1    -1    -5     4
0     6     8     4
-3     1     3    -4
B3 <- B3 + 3 B1 (baris ke-3 yang baru, diperoleh dari baris ke-3 ditambah 3 kali baris ke-1)
>> A(3,  = A(3,  + 3*A(1,
Outputnya:
A =
1    -1    -5     4
0     6     8     4
0    -2   -12     8
B3 <- B3 + B2/3 (baris ke-3 yang baru, diperoleh dari baris ke-3 ditambah 1/3 kali baris ke-2)
>> A(3,  = A(3,  + A(2, /3
Outputnya:
A =
1.0000   -1.0000   -5.0000    4.0000
0             6.0000    8.0000    4.0000
0             0            -9.3333    9.3333
Ada banyak 0 tidak masalah itu menunjukkan bilangan dalam desimal.
B1 <- B1 + B2/6 (baris ke-1 yang baru, diperoleh dari baris ke-1 ditambah 1/6 kali baris ke-2)
>> A(1,  = A(1,  + A(2, /6
Outputnya:
A =
1.0000     0            -3.6667    4.6667
0              6.0000    8.0000    4.0000
0              0            -9.3333    9.3333
B2 <- B2/6 (baris ke-2 yang baru, diperoleh dari 1/6 kali baris ke-2 )
>> A(2,  = A(2, /6
Outputnya:
A =
1.0000     0          -3.6667    4.6667
0              1.0000  1.3333    0.6667
0              0          -9.3333    9.3333
B3 <- B3/(-9.3333) (baris ke-3 yang baru, diperoleh dari -1/9.3333 kali baris ke-3)
>> A(3,  = A(3, /(-9.3333)
Outputnya:
A =
1.0000         0           -3.6667    4.6667
0                 1.0000    1.3333    0.6667
0                 0             1.0000   -1.0000
B1 <- B1 + 3.6667 B3 (baris ke-1 yang baru, diperoleh dari baris ke-1 ditambah 3.6667 kali baris ke-3)
>> A(1,  = A(1, + 3.6667 * A(3,
Outputnya:
A =
1.0000      0         0.0000    1.0000
0              1.0000 1.3333    0.6667
0              0          1.0000   -1.0000
B2 <- B2 – 1.3333 B3 (baris ke-2 yang baru, diperoleh dari baris ke-2 dikurangi 1.3333 kali baris ke-3)
>> A(2,  = A(2,  - 1.3333 * A(3,
Outputnya:
A =
1.0000         0             0.0000    1.0000
0                  1.0000    0.0000    2.0000
0                  0             1.0000   -1.0000
Karena matriks hasil operasi baris elementer ini sudah sesuai target, maka solusi dari SPL di atas adalah x = 1, y = 2, dan z = -1.
Load disqus comments

0 komentar