KATA PENGANTAR
Pertama-tama, penulis bersyukur kepada Allah SWT, karena hanya dengan
limpahan rahmat dan karunia-Nya penulis bisa menyelesaikan makalah ini.
Buku ini membahas tutorial penggunaan MATLAB secara praktis bagi
pengguna mula ataupun yang sudah familiar. Pembahasan dimulai
dengan pengenalan variabel, matriks, serta fungsi yang lazim ditemui
dalam kasus perhitungan sehari-hari. Berikutnya dikenalkan teknik grafis
2 dan 3-dimensi, kemudian pemrograman MATLAB sehingga pengguna bisa
mendefinisikan fungsi sendiri. Pada bagian akhir dibahas topik-topik yang
lebih khusus meliputi: analisis data, statistika, polinomial,
analisis fungsi, serta perhitungan integral.
Lebih dari 200 contoh dan soal latihan disajikan dalam buku ini, meliputi:
perhitungan, program, dan command MATLAB yang ada pada setiap bab;
sehingga akan mempermudah pemahaman sekaligus bisa digunakan
sebagai rujukan yang bermanfaat.
Mahasiswa tingkat awal hingga akhir bisa memanfaatkan berbagai
kemampuan MATLAB untuk menyelesaikan perhitungan rumit yang
kerap ditemui dalam kuliah, atapun membuat simulasi untuk skripsi / tugas
akhir.
Penulis menyampaikan rasa terima kasih dan penghargaan setinggi-
tingginya kepada keluarga dan rekan-rekan yang telah mendorong
penulis untuk menyelesaikan buku ini; dan juga kepada rekan-rekan
yang turut menyebarkan buku ini secara cuma-cuma dalam bentuk softcopy
“e-book” ataupun hardcopy.
Penulis sangat mengharapkan kritik dan saran dari para pembaca untuk
memperbaiki kualitas buku ini. Penulis berharap buku ini akan bermanfaat
bagi banyak pihak, aamiin.
Makassar, 27 Mei 2022
Penulis
i
DAFTAR ISI
Bab 1: APA ITU MATLAB? 1
1.1 Memulai MATLAB 2
1.2 Mencoba Kemampuan MATLAB 3
1.3 Demo di MATLAB 8
1.4 Mendapatkan Help 9
1.4.1 Mendapatkan Help dari Command Window 10
1.4.2 Mendapatkan Help dari Help Browser 11
Bab 2: VARIABEL DAN OPERASI DASAR 15
2.1 Kalkulator Sederhana 15
2.2 Menciptakan Variabel 16
Penamaan Variabel 18
2.3 Variabel Terdefinisi di Matlab 19
2.4 Fungsi Matematika 19
Soal Latihan 22
Bab 3: MATRIKS 23
3.1 Skalar, Vektor, dan Matriks 23
3.2 Ukuran Matriks 25
3.3 Matriks Khusus 26
3.4 Manipulasi Indeks Matriks 28
Operator Titik Dua 28
3.5 Membuat Deret 30
3.6 Membentuk-Ulang Matriks 32
Soal Latihan 34
Bab 4: OPERASI MATRIKS 37
4.1 Penjumlahan dan Pengurangan 37
4.2 Perkalian Matriks 38
4.3 Persamaan Linier dalam Matriks 39
4.4 Transposisi 40
4.5 Operasi Elemen-per-Elemen 41
4.6 Fungsi Elemen-per-Elemen 43
Soal Latihan 47
Bab 5: GRAFIK DAN SUARA 49
5.1 Plot 2-Dimensi 49
5.2 Lebih Jauh Mengenai Plot 53
5.3 Plot 3-Dimensi 58
5.3.1 Plot Garis 58
ii
5.3.2 Plot Permukaan 60
5.3.3 Plot Kontur 62
5.4 Suara 64
Soal Latihan 65
Bab 6: M-FILE DAN 67
PEMROGRAMAN MATLAB
6.1 Membuat M-File 67
6.2 M-File Sebagai Skrip Program 68
6.3 M-File Sebagai Fungsi 71
6.4 Display dan Input 73
6.5 Control Statement 74
6.5.1 Statement if ... elseif ... else ... end 74
6.5.2 Statement switch ... case 76
6.5.3 Statement for ... end 76
6.5.4 Statement while ... end 78
6.5.5 Statement break dan return 79
6.5.6 Statement continue 81
6.6 Operator Perbandingan dan Logika 82
Soal Latihan 86
Bab 7: ANALISIS DATA 87
7.1 Maksimum dan Minimum 87
7.2 Jumlah dan Produk 89
7.3 Statistika 90
7.4 Sortir 92
7.5 Histogram 93
7.6 Analisis Frekuensi: Transformasi Fourier 98
Soal Latihan 102
Bab 8: ANALISIS FUNGSI DAN INTERPOLASI 105
8.1 Polinomial di Matlab 105
8.2 Nol dari Fungsi 108
8.3 Minimum dan Maksimum dari Fungsi 111
Minimum dari Fungsi Multi Variabel 113
8.4 Interpolasi 114
8.5 Curve-Fitting 116
8.6 Function Tool 118
Soal Latihan 121
iii
Bab 9: PERHITUNGAN INTEGRAL 123
9.1 Menghitung Integral dengan Metode Numerik 123
9.2 Integral Lipat-2 125
9.3 Integral Lipat-3 127
Soal Latihan 129
Daftar Pustaka 131
Lampiran 1: REFERENSI CEPAT 133
Lampiran 2: PENGENALAN BILANGAN 141
KOMPLEKS
Lampiran 3: JAWABAN SOAL LATIHAN 147
Bab 2 147
Bab 3 149
Bab 4 152
Bab 5 154
Bab 6 159
Bab 7 162
Bab 8 166
Bab 9 172
BAB 1
APA ITU MATLAB?
MATLAB merupakan suatu program komputer yang bisa membantu
memecahkan berbagai masalah matematis yang kerap kita temui
dalam bidang teknis. Kita bisa memanfaatkan kemampuan
MATLAB untuk menemukan solusi dari berbagai masalah numerik
secara cepat, mulai hal yang paling dasar, misalkan sistem 2
persamaan dengan 2 variabel:
x – 2y = 32
12x + 5y = 12
hingga yang kompleks, seperti mencari akar-akar polinomial,
interpolasi dari sejumlah data, perhitungan dengan matriks,
pengolahan sinyal, dan metoda numerik.
Salah satu aspek yang sangat berguna dari MATLAB ialah
kemampuannya untuk menggambarkan berbagai jenis grafik,
sehingga kita bisa memvisualisasikan data dan fungsi yang
kompleks. Sebagai contoh, tiga gambar berikut diciptakan dengan
command surf di MATLAB.
Gambar 1. 1 Grafik 3-dimensi diciptakan dengan command “surf”
di MATLAB.
2 Apa Itu MATLAB
Dalam buku ini kita akan mempelajari MATLAB setahap demi
setahap, mulai dari hal yang sederhana hingga yang cukup
kompleks. Yang perlu kita persiapkan untuk belajar MATLAB
ialah seperangkat komputer yang sudah terinstal program MATLAB
di dalamnya. Kita bisa gunakan MATLAB versi 5, 6 ataupun 7
untuk mempraktekkan berbagai contoh yang ada di buku ini. Di
dalam buku ini kita akan mempelajari ‘teori’ penggunaan
MATLAB, namun untuk menjadi mahir Anda harus duduk di depan
komputer dan mempraktekkannya secara langsung!
1.1 Memulai MATLAB
Kita memulai MATLAB dengan mengeksekusi ikon MATLAB di
layar komputer ataupun melalui tombol Start di Windows.
Setelah proses loading program, jendela utama MATLAB akan
muncul seperti berikut ini.
Memulai/ Direktori yang
Menu membuka M-file sedang aktif
Daftar variabel
yang aktif
Command
window
MATLAB Start
Gambar 1. 2 Jendela utama MATLAB.
Setelah proses loading usai, akan muncul command prompt di
dalam command window:
Apa Itu MATLAB 3
>>
Dari prompt inilah kita bisa mengetikkan berbagai command
MATLAB, seperti halnya command prompt di dalam DOS.
Sebagai permulaan, mari kita ketikkan command date :
>> date
setelah menekan Enter, akan muncul
ans =
05-Feb-2005
date adalah command MATLAB untuk menampilkan tanggal hari
ini. Berikutnya cobalah command clc untuk membersihkan
command window:
>> clc
Ketika kita selesai dengan sesi MATLAB dan ingin keluar, gunakan
command exit atau quit.
>> exit Atau... >> quit
Atau bisa juga dengan menggunakan menu:
File Exit MATLAB.
1.2 Mencoba Kemampuan MATLAB
Jika Anda baru pertama kali menggunakan MATLAB, ada baiknya
kita mencoba beberapa command untuk melihat sepintas berbagai
kemampuan dan keunggulan MATLAB.
MATLAB dapat kita pergunakan seperti halnya kalkulator:
>> 2048 + 16
ans =
2064
Menuliskan beberapa command sekaligus dalam satu baris:
>> 5^2, 2*(6 + (-3))
4 Apa Itu MATLAB
ans =
25
ans =
6
Menciptakan variabel untuk menyimpan bilangan, serta
menjalankan berbagai command atau fungsi yang sudah ada di
MATLAB.
>> x=12; y=0.25; z=pi/2;
>> a=3*x*y, b=sin(z), c=cos(z)
a =
9
b =
1
c =
0
Menciptakan dan memanipulasi vektor dan matriks:
>> Vektor1=[1 3 –6], Vektor2=[4; 3; -1]
Vektor1 =
1 3 -6
Vektor2 =
4
3
-1
>> Matrix=[1 2 3;4 5 6;7 8 9]
Matrix =
1 2 3
4 5 6
7 8 9
>> Vektor1 * Vektor2
ans =
19
>> Vektor2 * Vektor1
ans =
4 12 -24
3 9 -18
-1 -3
6
>> Matrix * Vektor2
ans =
7
25
43
Apa Itu MATLAB 5
Menciptakan deret secara efisien:
>> deret1=1:1:10
deret1 =
1 2 3 4 5 6 7 8 9 10
>> deret2=linspace(0,5,11)
deret2 =
Columns 1 through 7
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
Columns 8 through 11
3.5000 4.0000 4.5000 5.0000
MATLAB juga dapat kita pergunakan untuk mencari akar-akar
polinomial. Misalkan akar-akar dari:
y = x4 – 10 x2 + 9
>> akar=roots([1 0 –10 0 9])
akar =
3.0000
-3.0000
1.0000
-1.0000
Melakukan interpolasi dengan berbagai metode, misalkan dengan
pendekatan polinomial.
Misalkan kita memiliki data pengamatan temperatur selama 12
jam:
>> t=1:12;
>> data=[22 22 22.5 24 25.5 28 29 29 30 29.5 29 28];
Data tersebut kita interpolasi menjadi kurva mulus polinomial
orde-5:
>> p=polyfit(t,data,5);
>> x=linspace(1,12,100); y=polyval(p,x);
>> plot(x,y,'k--',t,data,'k*')
>> p
p =
0.0000 0.0038 -0.1245 1.2396 -3.2370 24.2045
6 Apa Itu MATLAB
Gambar 1. 3 Interpolasi data temperatur terhadap waktu,
didekati dengan polinom y = 0,038 x4 – 0,1245 x3 + 1,2396 x2 – 3,237 x
+ 24,2045
Salah satu keunggulan MATLAB ialah kemudahannya untuk
membuat grafik dan suara. Misalkan membuat grafik 2-dimensi,
>> x=linspace(-5,5,200);
>> y=x.^2+cos(10*x);
>> plot(x,y)
atau bahkan grafik 3-dimensi:
>> u=linspace(-4,4,50);
>> [U,V]=meshgrid(u,u);
>> W=cos(U).*cos(V/3);
>> surf(U,V,W)
Apa Itu MATLAB 7
Gambar 1. 4 Grafik 2 dan 3-dimensi diciptakan dengan command
plot dan surf.
Dan juga membuat suara, misalkan nada DO, RE, MI:
>> Fs=8000; %Frekuensi sampling 8 kHz
>> t=0:1/Fs:0.5; %Durasi nada 1/2 detik
8 Apa Itu MATLAB
>> frek=[262 294 330]; %Frekuensi DO RE MI
>> m=[];
>> for i=1:3
m=[m cos(2*pi*frek(i)*t)]; %Membuat vektor DO RE MI
end
>> sound(m,Fs)
Penjelasan dan langkah-langkah yang detail mengenai berbagai
contoh di atas akan kita pelajari dalam bab-bab berikutnya dari
buku ini.
1.3 Demo di MATLAB
Ketika sudah membuka MATLAB, kita bisa menjalankan demo
yang ada di dalamnya. Dari command window ketiklah demo,
maka akan muncul jendela browser di mana kita bisa memilih
demo mana yang akan dijalankan.
Gambar 1. 5 Jendela tempat memulai demo.
Kita bisa melihat dan merasakan berbagai aplikasi dari MATLAB
dengan cara mengeksplorasi demo. Di dalam demo tersebut
terdapat beberapa game yang bisa kita mainkan, grafik-grafik yang
Apa Itu MATLAB 9
menarik, dan sejumlah simulasi dari berbagai bidang teknik.
Kita bisa mengekspansi folder MATLAB (klik tanda +) dan
melihat berbagai kategori demo. Misalkan kita memilih Gallery
Slosh, lalu coba jalankan; maka akan muncul grafik berikut.
Gambar 1. 6 Salah satu gambar di dalam galeri demo
Demo ini memperlihatkan betapa efek grafis 3-dimensi yang
bagus bisa dibuat dengan MATLAB. Sekarang, nikmati waktu
Anda dengan menjalankan berbagai demo yang lain!
1.4 Mendapatkan Help
MATLAB memiliki sistem “help” yang ekstensif, memuat
dokumentasi detil dan informasi “help” meliputi semua command
dan fungsi di MATLAB. Sistem ini akan sangat membantu kita,
baik yang pemula maupun ahli, untuk memahami fungsionalitas
MATLAB yang belum pernah kita gunakan sebelumnya. Untuk
mendapatkan help, terdapat 2 cara: melalui command window, dan
melalui help browser.
10 Apa Itu MATLAB
1.4.1 Mendapatkan Help dari Command Window
Dari command window, kita bisa gunakan: help, helpwin, dan
doc. Misalkan kita ingin mengetahui deskripsi dari command
plot.
>> help plot
PLOT Linear plot.
PLOT(X,Y) plots vector Y versus vector X. If X or Y is
a matrix, then the vector is plotted versus the rows
or columns of the matrix, whichever line up. If X is
a scalar and Y is a vector, length(Y) disconnected
points are plotted.
....
....
See also SEMILOGX, SEMILOGY, LOGLOG, PLOTYY, GRID,
CLF, CLC, TITLE, XLABEL, YLABEL, AXIS, AXES, HOLD,
COLORDEF, LEGEND, SUBPLOT, STEM.
Output dari help juga merujuk ke command lain yang
berhubungan. Dalam contoh ini: semilogx, semilogy, loglog, dan
seterusnya. Untuk melihat deskripsinya bisa kita ketikkan help
semilogx, help loglog, dan sebagainya.
Dari command window Anda juga bisa menggunakan helpwin.
>> helpwin plot
Akan muncul window yang berisi deskripsi tentang fungsi atau
command yang dimaksud.
Apa Itu MATLAB 11
Terlihat bahwa help ataupun helpwin menampilkan informasi
yang sama, namun demikian terdapat kelebihan helpwin:
Teks ditampilkan di window yang terpisah dengan command
window
Kita bisa langsung mengklik fungsi di “See also” untuk
referensi, jadi tidak usah mengetik lagi lewat command
window.
Terdapat link Default Topics yang berisi daftar
semua kategori fungsi MATLAB, sehingga kita bisa
mengetahui semua fungsi yang terdapat dalam suatu
kategori. Misalkan kita ingin mengetahui fungsi apa saja
untuk plot grafik 2-dimensi, maka pilihlah link matlab\
graph2d.
Cara yang lain untuk mendapatkan dokumentasi yang lengkap
ialah menggunakan doc.
>> doc plot
Keluaran command doc inilah yang paling lengkap, bahkan
menyediakan contoh lengkap yang bisa dipelajari dan dieksekusi.
Sekarang cobalah Anda lihat help untuk command lainnya: plot3,
polyfit, dan trapz.
1.4.2 Mendapatkan Help dari Help Browser
Sumber help lainnya ialah help browser. Anda bisa mengetikkan
helpbrowser di command window, atau dari menu
Help MATLAB Help.
12 Apa Itu MATLAB
Product
filter
Tab
Help
navigator Gambar 1. 7 Jendela help browser.
Help browser memiliki dua bagian utama: Help Navigator, dan
layar tampilan di sisi kanan. Cara penggunaan help browser mirip
dengan Windows Explorer; apa yang kita pilih di daftar navigator
akan ditampilkan di layar sisi kanan. Help Navigator ini
memiliki sejumlah komponen:
Product filter : mengaktifkan filter untuk memperlihatkan
dokumentasi hanya pada produk yang Anda inginkan
Tab Contents : melihat judul dan daftar isi dokumentasi
Tab Index : mencari entri indeks tertentu (dengan kata kunci)
di dalam dokumentasi
Tab Demos : melihat dan menjalankan demo
Tab Search : untuk mencari dokumentasi yang
mengandung kata / potongan kata tertentu. Untuk
mendapatkan help dari suatu fungsi tertentu, pilihlah Search
type: Function Name
Tab Favorites : melihat daftar link ke dokumen yang telah
ditandai sebagai favorit.
Di antara tab tersebut, yang paling sering digunakan ialah
Contents dan Search. Sebagai latihan, cobalah mencari dokumen
mengenai “sound” dengan help browser. Pilih tab Search, Search
type: Full Text, Search for: sound.
Apa Itu MATLAB 13
Penggunaan kaca kunci untuk pencarian mirip dengan mesin
pencari di internet (google, yahoo, altavista, dll). Misalkan Anda
ingin mencari “filter digital”, maka ketikkan dalam Search for:
filter AND digital.
BAB 2
VARIABEL DAN OPERASI DASAR
2.1 Kalkulator Sederhana
Dalam mode penggunaan dasar, MATLAB dapat digunakan sebagai
fungsi kalkulator. Sebagai contoh, kita bisa lakukan perhitungan
berikut pada command window.
>> 3+12
ans =
15
>> 25*10-16
ans =
234
>> (9+18)/3^2
ans =
3
Operator aritmatik dasar yang didukung oleh MATLAB ialah
sebagai berikut:
Tabel 2. 1
+, -, *, / : tambah, kurang, kali, bagi
(, ) : kurung
\ : pembagian terbalik
^ : pangkat
Hirarki operator mengikuti standar aljabar yang umum kita kenal:
1. Operasi di dalam kurung akan diselesaikan terlebih dahulu
2. Operasi pangkat
3. Operasi perkalian dan pembagian
4. Operasi penjumlahan dan pengurangan
16 Variabel dan Operasi Dasar
Sekarang kita coba contoh berikut ini.
>> 2.5+0.6
ans =
3.1000
>> 3*4+3/4
ans =
12.7500
>> 5\(15+35)
ans =
10
>> 169^(1/2), (6+14)\10^2
ans =
13
ans =
5
Dalam contoh di atas kita menemui variabel ans, singkatan dari
“answer”, yang digunakan MATLAB untuk menyimpan hasil
perhitungan terakhir.
2.2 Menciptakan Variabel
Kita juga bisa menciptakan variabel untuk menyimpan nilai, baik
berupa bilangan ataupun teks. Contoh berikut ini untuk
menciptakan variabel:
Variabel dan Operasi Dasar 17
>> a=100
a =
100
>> b=200
b =
200
>> c=300;
>> d=400;
>> total=a+b+c+d
total =
1000
>> rata_rata=total/4;
Untuk melihat hasil rata_rata, kita bisa panggil variabel tersebut.
>> rata_rata
rata_rata =
250
Berikutnya, kita bisa melihat daftar variabel apa saja yang sedang
aktif di dalam MATLAB menggunakan command whos.
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
c 1x1 8 double array
d 1x1 8 double array
rata_rata 1x1 8 double array
total 1x1 8 double array
Grand total is 6 elements using 48 bytes
Atau kita juga bisa melihat daftar ini di window Workspace, di
sebelah kiri command window (silakan lihat kembali Gambar 1.2).
Untuk menghapus beberapa atau semua variabel kita gunakan
command clear. Misalkan untuk menghapus variabel total.
18 Variabel dan Operasi Dasar
>> clear total
dan untuk menghapus semua variabel sekaligus
>> clear
Penamaan Variabel
Pemberian nama variabel mengikuti rambu-rambu berikut ini:
Gunakan karakter alfabet (A s/d Z, a s/d z), angka, dan garis
bawah ( _ ), sebagai nama variabel. Perlu diingat bahwa
MATLAB peka terhadap besar-kecilnya huruf.
Misalkan:
jumlah, x1, x2, S_21, H_2_in; merupakan nama variable yang
valid
sinyal1, Sinyal1, SINYAL1; dianggap sebagai 3 variabel yang
berbeda.
Jangan gunakan spasi, titik, koma, atau operator aritmatik
sebagai bagian dari nama.
Selain berisi bilangan, variabel juga bisa berisi teks. Dalam
mendefinisikan variabel teks gunakanlah tanda petik tunggal.
>> baca_ini = ‘Contoh variabel berisi teks!’;
>> baca_ini
baca_ini =
Contoh variabel berisi teks!
Kita tidak boleh salah memperlakukan variabel berisi bilangan
dengan yang berisi teks, sebab variabel teks juga bisa terlibat
dalam operasi perhitungan. Misalkan:
>> clear
>> a=7;
>> b=’7’;
>> a/b
ans =
0.1273
>> a+b
ans =
62
Variabel dan Operasi Dasar 19
Terlihat bahwa mengoperasikan variabel berisi teks bisa
memunculkan hasil perhitungan yang “salah”.
2.3 Variabel Terdefinisi di MATLAB
Di dalam MATLAB telah terdapat beberapa variabel yang telah
terdefinisi, sehingga kita bisa langsung pergunakan tanpa perlu
mendeklarasikannya lagi. Variabel tersebut ialah:
Tabel 2. 2
ans “answer”, digunakan untuk menyimpan hasil
perhitungan terakhir
eps bilangan sangat kecil mendekati nol yang merupakan
batas akurasi perhitungan di MATLAB.
pi konstanta , 3.1415926...
inf “infinity”, bilangan positif tak berhingga, misalkan
1/0, 2^5000, dsb.
NaN “not a number”, untuk menyatakan hasil perhitungan
yang tak terdefinisi, misalkan 0/0 dan inf/inf.
i, j unit imajiner, √-1, untuk menyatakan bilangan
kompleks.
2.4 Fungsi Matematika
Berbagi fungsi matematika yang umum kita pergunakan telah
terdefinisi di MATLAB, meliputi fungsi eksponensial, logaritma,
trigonometri, pembulatan, dan fungsi yang berkaitan dengan
bilangan kompleks.
20 Variabel dan Operasi Dasar
Tabel 2. 3
abs(x) menghitung nilai absolut dari x, yaitu x
sign(x) fungsi “signum”: bernilai +1 jika x positif, -1 jika x
negatif, dan 0 jika x sama dengan nol.
Fungsi eksponensial dan logaritma:
sqrt(x) akar kuadrat dari x
exp(x) pangkat natural dari x, yaitu ex
log(x) logaritma natural dari x, yaitu ln x
log10(x) logaritma basis 10 dari x, yaitu log10 x
log2(x) logaritma basis 2 dari x, yaitu log2 x
Fungsi trigonometri:
sin(x), cos(x), fungsi trigonometri sinus, cosinus, tangent,
tan(x), cot(x), cotangent, secant, dan cosecant. (x dalam
sec(x), csc(x) satuan radian)
asin(x), acos(x), fungsi arcus trigonometri
atan(x), acot(x),
asec(x), acsc(x)
sinh(x), cosh(x), fungsi trigonometri-hiperbolik
tanh(x), coth(x),
sech(x), csch(x)
asinh(x), acosh(x), fungsi arcus trigonometri-hiperbolik
atanh(x), acoth(x),
asech(x), acsch(x)
Fungsi pembulatan:
round(x) pembulatan x ke bilangan bulat terdekat
floor(x) pembulatan ke bawah dari x ke bilangan bulat
terdekat
ceil(x) pembulatan ke atas dari x ke bilangan bulat terdekat
fix(x) pembulatan ke bawah untuk x positif, dan ke atas
untuk x negatif
rem(x,y) sisa pembagian dari x/y
Variabel dan Operasi Dasar 21
Fungsi bilangan kompleks:
real(z) menghitung komponen riil dari bilangan kompleks
z
imag(z) menghitung komponen imajiner dari bilangan
kompleks z
abs(z) menghitung magnitude dari bilangan kompleks z
angle(z) menghitung argumen dari bilangan kompleks z
conj(z) menghitung konjugasi dari bilangan kompleks z
Bagi Anda yang belum familiar dengan sistem bilangan kompleks,
tutorial singkat mengenai topik ini terdapat di Lampiran 2.
Untuk memperdalam pemahaman dari subbab 2.3 dan 2.4, cobalah
contoh berikut dan amatilah hasilnya:
>> a=pi/2, b=1000, c=-0.5, d=13, e=4
>> sign(a)
>> sqrt(10*b), exp(c), exp(b)
>> log(exp(c)), log10(b), log2(b+24)
>> sin(a), cos(a), tan(a/2)
>> asin(c), acos(c)
>> round(d/e), floor(d/e), ceil(d/e), rem(d,e)
>> A=3+4i, B = sqrt(2) - i*sqrt(2)
>> real(A), imag(A), real(B), imag(B)
>> abs(A), angle(A), abs(B), angle(B)
>> abs(A)*cos(angle(A)), abs(A)*sin(angle(A))
22 Variabel dan Operasi Dasar
Soal Latihan
1. Hitunglah dengan MATLAB:
12 / 3,5 (3 + 5/4)2 (0,252 + 0,752)1/2 2 / (6/0,3)
2. Buatlah empat variabel berikut:
A = 25 B = 50 C = 125 D = 89
Hitunglah dan simpan dalam variabel baru:
X = A + B +C Y = A / (D+B)
A/B
Z=D +C
3. Manakah di antara nama-nama variabel berikut yang valid ?
luas, kel_1, 2_data, diff:3, Time, time_from_start,
10_hasil_terakhir, nilai-awal
4. Misalkan: x = /6, y = 0,001; hitunglah:
−x
y e sin x cos 2x tan 3x
log10 y log 2 y ln y
5. Misalkan: p = 9+16i dan q = −9+16i; hitunglah:
p
r pq s p−r rs p2 q
q
p ∠p q ∠q r ∠r s ∠s
BAB 3
MATRIKS
3.1 Skalar, Vektor, dan Matriks
Terdapat tiga jenis format data di MATLAB, yaitu skalar, vektor,
dan matriks.
Skalar, ialah suatu bilangan tunggal
Vektor, ialah sekelompok bilangan yang tersusun 1-dimensi.
Dalam MATLAB biasanya disajikan sebagai vektor-baris atau
vektor-kolom
Matriks, ialah sekelompok bilangan yang tersusun dalam
segi-empat 2-dimensi. Di dalam MATLAB, matriks
didefinisikan dengan jumlah baris dan kolomnya. Di MATLAB
terdapat pula matriks berdimensi 3, 4, atau lebih, namun dalam
buku ini kita batasi hingga 2-dimensi saja.
Sebenarnya, semua data bisa dinyatakan sebagai matriks. Skalar
bisa dianggap sebagai matriks satu baris – satu kolom (matriks
11), dan vektor bisa dianggap sebagai matriks 1-dimensi: satu
baris – n kolom, atau n baris – 1 kolom (matriks 1 n atau n1).
Semua perhitungan di MATLAB dilakukan dengan matriks,
sehingga disebut MATrix LABoratory.
Matriks didefinisikan dengan kurung siku ( [ ] ) dan biasanya
dituliskan baris-per-baris. Tanda koma (,) digunakan untuk
memisahkan kolom, dan titik-koma (;) untuk memisahkan baris.
Kita juga bisa menggunakan spasi untuk memisahkan kolom dan
menekan Enter ke baris baru untuk memisahkan baris.
Perhatikan cara mendefinisikan skalar dengan ataupun tanpa
kurung siku.
>> skalar1 = 3.1415
skalar1 =
3.1415
>> skalar2 = [2.71828]
skalar2 =
2.7183
24 Matriks
Contoh vektor-baris dan vektor-kolom
>> vektor1=[3,5,7]
vektor1 =
3 5 7
>> vektor2=[2;4;6]
vektor2 =
2
4
6
Berikutnya kita coba contoh berikut untuk mendefinisikan matriks
33.
>> matriks1=[10 20 30
40 50 60
70 80 90]
>> matriks2=[10 20 30; 40 50 60; 70 80 90]
Terlihat bahwa matrix1 dan matrix2 isinya sama, karenanya kita
bisa menekan Enter untuk membuat baris baru, ataupun
menggunakan titik-koma.
Kita juga bisa mendefinisikan matriks elemen per elemen.
>> mat(1,1)=100; mat(1,2)=200; mat(2,1)=300;
>> mat(2,2)=400
mat =
100 200
300 400
Kita sekarang akan mencoba menggabungkan variabel yang ada
untuk membentuk matriks baru.
>> gabung1=[vektor2 matriks1]
gabung1 =
2 10 20 30
4 40 50 60
6 70 80 90
>> gabung2=[vektor1; matriks2]
gabung2 =
3 5 7
10 20
30 40 50
60 70 80
90
Matriks 25
Kita harus ingat bahwa matriks gabungan harus memiliki jumlah
baris dan kolom yang valid sehingga membentuk persegi panjang.
Sekarang cobalah menghitung matriks gabungan berikut.
>> gabung3=[vektor2 vektor2 vektor2]
>> gabung4=[vektor1;vektor1;vektor1]
>> gabung5=[gabung3 gabung4]
3.2 Ukuran Matriks
Untuk mengetahui ukuran atau dimensi dari matriks yang ada, kita
bisa gunakan command size dan length. size umumnya digunakan
untuk matriks 2-dimensi, sementara length untuk vektor.
>> length(vektor1)
ans =
3
>> size(matrix1)
ans =
3 3
Menunjukkan panjang vektor1 ialah 3 elemen, dan ukuran
matrix1 ialah 3-baris 3-kolom (33). Kita juga bisa menyimpan
keluaran command dalam variabel baru.
>> panjang=length(vektor2)
panjang =
3
>> [jml_baris,jml_kolom]=size(gabung5)
jml_baris =
3
jml_kolom =
6
Sementara itu, untuk menghitung jumlah elemen dari suatu
matriks, kita pergunakan command prod. Misalkan untuk matriks
gabung5, jumlah elemennya ialah;
>> jml_elemen=prod(size(gabung5))
jml_elemen =
18
26 Matriks
3.3 Matriks Khusus
MATLAB menyediakan berbagai command untuk membuat dan
memanipulasi matriks secara efisien. Di antaranya ialah command
untuk membuat matriks-matriks khusus, manipulasi indeks
matriks, serta pembuatan deret. Mari kita bahas terlebih dahulu
mengenai matriks khusus.
Berbagai matriks khusus yang kerap kita pergunakan dalam
perhitungan bisa dibuat secara efisien dengan command yang telah
ada di MATLAB.
Tabel 3. 1
ones(n) membuat matriks satuan (semua elemennya berisi
angka 1) berukuran nn.
ones(m,n) membuat matriks satuan berukuran mn.
zeros(n) membuat matriks nol (semua elemennya berisi
angka 0) berukuran nn.
zeros(m,n) membuat matriks nol berukuran mn.
eye(n) membuat matriks identitas berukuran n n (semua
elemen diagonal bernilai 1, sementara lainnya
bernilai 0).
rand(n), membuat matriks nn, atau mn, berisi bilangan
rand(m,n) random terdistribusi uniform pada selang 0 s.d. 1.
randn(n), membuat matriks nn, atau mn, berisi bilangan
randn(m,n) random terdistribusi normal dengan mean = 0 dan
varians = 1. Command ini kerap kita gunakan
untuk membangkitkan derau putih gaussian.
[] matriks kosong, atau dengan kata lain matriks 00;
biasa digunakan untuk mendefinisikan variabel
yang belum diketahui ukurannya.
Untuk memperdalam pemahaman, mari kita lihat contoh di bawah
ini.
>> clear
Matriks 27
>> mat_1=5*ones(2,4)
mat_1 =
5 5 5 5
5 5 5 5
>> mat_2=zeros(2,4)
mat_2 =
0 0 0 0
0 0 0 0
>> mat_3=[eye(4) -ones(4)]
mat_3 =
1 0 0 0 -1 -1 -1 -1
0 1 0 0 -1 -1 -1 -1
0 0 1 0 -1 -1 -1 -1
0 0 0 1 -1 -1 -1 -1
>> bil_acak_uniform=rand(1,10)
bil_acak_uniform =
Columns 1 through 7
0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565
Columns 8 through 10
0.0185 0.8214 0.4447
>> gaussian_noise=randn(5,1)
gaussian_noise =
-0.4326
-1.6656
0.1253
0.2877
-1.1465
Misalkan kita ingin membangkitkan 20 buah bilangan acak
gaussian dengan mean = 5 dan varians = 3.
>> mu=5; %Nilai mean
>> varians=3; %Nilai variansi
>> bil_acak_gaussian= sqrt(varians)*randn(1,20) + mu
bil_acak_gaussian =
28 Matriks
3.4 Manipulasi Indeks Matriks
Dalam vektor ataupun matriks, indeks digunakan untuk menunjuk
satu/beberapa elemen dari vektor/matriks. Indeks dituliskan di
dalam tanda kurung ( ) dengan pola umum sebagai berikut.
Untuk vektor:
nama_vektor( indeks )
Untuk matriks:
nama_matriks( indeks_baris , indeks_kolom )
Dalam suatu vektor, elemen pertama diberi indeks = 1, sementara
dalam matriks, indeks menunjukkan nomor baris dan nomor kolom
dari elemen yang ingin ditunjuk. Untuk lebih jelasnya perhatikan
contoh berikut ini.
>> clear
>> vektor_ini = [1 3 5 7 9];
>> vektor_itu = [9; 8; 7; 6; 5];
>> matrix = [10 20 30; 40 50 60; 70 80 90];
>> vektor_ini(1)
ans =
1
>> vektor_itu(2)
ans =
8
>> matrix(1,2)
ans =
20
>> [matrix(1,1) matrix(1,2) matrix(1,3)]
ans =
10 20 30
Operator-Titik Dua
Kita juga bisa mengambil beberapa baris dan kolom sekaligus dari
suatu matriks dengan operator titik-dua (:). Dalam hal ini tanda
titik-dua berarti “sampai dengan”.
Matriks 29
Misalkan untuk mengambil elemen ke-1 sampai ke-3 dari
vektor_ini
>> vektor_ini(1:3)
ans =
1 3 5
Mengambil elemen ke-3 sampai ke-5 dari vektor_itu
>> vektor_itu(3:5)
ans =
7
6
5
Mengambil elemen baris ke-1 sampai ke-2, kolom ke-2 sampai ke-
3 dari matrix
>> matrix(1:2,2:3)
ans =
20 30
50 60
Dalam hal lain tanda titik-dua bisa berarti “seluruhnya”.
Misalkan untuk mengambil seluruh elemen dari vektor_ini
>> vektor_ini(:)
ans =
1 3 5 7 9
Mengambil seluruh baris dan kolom dari matrix
>> matrix(:,:)
ans =
10 20 30
40 50 60
70 80 90
Mengambil seluruh elemen di baris ke-1 dari matrix
>> matrix(1,:)
ans =
10 20 30
Mengambil seluruh elemen di kolom ke-2 dari matrix
>> matrix(:,2)
30 Matriks
ans =
20
50
80
Mengambil seluruh elemen di kolom ke-2 dan ke-3 dari matrix
>> matrix(:,2:3)
ans =
20 30
50 60
80 90
Dengan menggunakan indeks, kita bisa mengubah nilai elemen
matriks yang telah ada.
>> vektor_ini(1)=1000
vektor_ini =
1000 3 5 7 9
>> vektor_itu(2:4)=[-1; –1; –1]
vektor_itu =
9
-1
-1
-1
5
>> matrix(3,:)=100*ones(1,3)
matrix =
10 20 30
40 50 60
100 100 100
3.5 Membuat Deret
Deret bilangan merupakan hal yang kerap kita temui dalam
pengolahan data, terutama berkaitan dengan plot data dan proses
iterasi (perhitungan berulang-ulang). Misalkan kita memiliki data
tegangan suatu baterai pada setiap menit selama 1 jam. Dalam
menyajikan data “waktu”, kita harus membuat vektor berisi deret.
Kita tentunya bisa melakukannya secara manual seperti ini:
>> time=[1, 2, 3, 4, …, 60]
Tetapi akan lebih efisien jika deret diciptakan menggunakan
Matriks 31
operator titik-dua. Formulanya ialah:
deret = nilai_awal : inkremen : nilai_akhir
Inkremen harus bilangan bulat positif atau negatif
Khusus untuk inkremen = 1:
deret = nilai_awal : nilai_akhir
Sehingga kita bisa tuliskan
>> time=1:60
Sekarang kita akan berlatih menggunakan operator titik-dua untuk
membuat deret berikut:
x = 0, 100, 200, 300, 400, … , 2200, 2300
y = -10, -9.5, -9, -8.5, … -0.5, 0, 0.5, … , 9, 9.5, 10
z = 10, 9.95, 9.9, 9.85, 9.8, 9.75, … , 1, 0.95, 0.9, … , 0.05, 0
>> x=0:100:2300;
>> y=-10:0.5:10;
>> z=10:-0.05:0;
Di dalam MATLAB, pembuatan deret juga bisa dilakukan dengan
command berikut ini.
Tabel 3. 2
linspace(a,b,n) membuat vektor baris berisi n titik yang terpisah
merata secara linier antara a dan b.
logspace(a,b,n) membuat vektor baris berisi n titik yang terpisah
merata secara logaritmik antara 10^a dan 10^b.
Command ini biasa digunakan untuk
menghitung respon frekuensi suatu sistem.
32 Matriks
Contoh:
>> linspace(0,10,11)
ans =
0 1 2 3 4 5 6 7 8 9 10
>> logspace(0,2,10)
ans =
Columns 1 through 7
1.0000 1.6681 2.7826 4.6416 7.7426 12.9155 21.5443
Columns 8 through 10
35.9381 59.9484 100.0000
3.6 Membentuk-Ulang Matriks
Terdapat beberapa command yang bisa digunakan untuk menukar,
merotasi, dan menyusun kembali elemen matriks.
Tabel 3. 3
fliplr(A) menukar posisi elemen matriks A secara
melintang, yaitu sebelah kiri ditukar dengan
sebelah kanan.
flipud(A) menukar posisi elemen matriks A secara
membujur, yaitu sebelah atas ditukar dengan
sebelah bawah.
rot90(A) merotasi posisi elemen matriks A berlawanan
arah jarum jam sejauh 90o.
reshape(A,m,n) menyusun ulang elemen matriks A menjadi
berukuran mn. Harus diingat bahwa jumlah
elemen A harus sama dengan m n
Contoh:
>> A=[0:3; 4:7]
A =
0 1 2
3 4 5 6
7
>> fliplr(A)
ans =
3 2 1
0 7 6 5
4
Matriks 33
>> flipud(A)
ans =
4 5 6
7 0 1 2
3
>> rot90(A)
ans =
3 7
2 6
1 5
0 4
>> reshape(A,1,8)
ans =
0 4 1 5 2 6 3 7
>> reshape(A,4,2)
ans =
0 2
4 6
1 3
5 7
34 Matriks
Soal Latihan
1. Definisikan vektor dan matriks berikut ini di dalam MATLAB:
1 3 5
−5
10 20 30 03 1 3
40 −15 5
5 3 1
−40
3
0 5 3
1
4
2. Gabungkan matriks A dan B berikut ini:
4 8 B
A 1
2 1 1 − menjadi:
1
B B
C A B W
B −B
3. Hitunglah:
a. Masing-masing ukuran vektor/matriks pada soal no.1 dan
no. 2 di atas
b. Masing-masing jumlah elemen vektor/matriks pada soal
no.1 dan no.2 di atas.
4. Buatlah matriks-matriks berikut dengan command ones, zeros,
dan eye:
5 0 0 5 0 0
0 5 0 5 0 5 0
0 5 0 0 0
0 0 5 0 −5
5
5
−5
0 0 0 5
0
0
5. Buatlah vektor berukuran 100 berisi bilangan acak gaussian
dengan mean = 1 dan variansi = 0,2.
6. Buatlah matriks M berikut ini:
15 20
1 5 10
1 2 4 8 16
6 9
M −3 0
3 32 16 8 4 2
5 − 5 5 − 5 5
Matriks 35
Buatlah vektor / matriks baru berisi:
- baris pertama dari M
- kolom ketiga dari M
- baris ketiga hingga kelima, kolom kedua hingga keempat
dari M
- elemen pada diagonal utama dari M
7. Buatlah deret berikut ini dengan operator titik-dua, linspace,
dan logspace:
x = -10, -9, -8, ... , 8, 9, 10
y = 7,5 , 7,0 , 6,5 , 6,0 , ... , 0,5 , 0
z = 1, 4, 7, 10, 13, ... , 100
w = 0,001 , 0,01 , 0,1 , 1 , 10 , ... , 106
8. Buatlah matriks N yang berisi kolom pertama hingga keempat
dari matriks M pada no.6 di atas. Bentuk-ulang matriks N
tersebut menjadi matriks baru seperti berikut ini:
- kolom pertama ditukar dengan kolom keempat, kolom
kedua ditukar dengan kolom ketiga
- baris pertama ditukan dengan baris kelima, baris kedua
ditukar dengan baris keempat
- matriks berukuran 102
- matriks berukuran 4 5
BAB 4
OPERASI MATRIKS
Ketika kita bekerja dengan matriks di dalam MATLAB, operasi
ataupun manipulasi yang kita lakukan terhadap matriks tersebut
bisa berupa: operasi (aljabar) matriks, dan operasi elemen-per-
elemen. Operasi matriks di MATLAB sama seperti yang kita temui
di aljabar matriks, misalkan penjumlahan/pengurangan, perkalian
matriks, invers, transpose, dot product, cross product, dan
sebagainya. Sementara operasi elemen-per-elemen, yang
merupakan ciri khas MATLAB, mengoperasikan satu per satu
elemen matriks seperti operasi skalar, meliputi
penjumlahan/pengurangan, perkalian/pembagian, dan pangkat.
Dalam bab ini, operasi matriks dibahas terlebih dahulu, dan
kemudian operasi elemen-per-elemen.
4.1 Penjumlahan dan Pengurangan
Penjumlahan dua matriks, A+B, dan selisih dua matriks, A–B,
terdefinisi jika A dan B berukuran sama. Namun demikian,
penjumlahan/pengurangan juga bisa dilakukan antara matriks
dengan skalar. Untuk jelasnya mari kita praktekkan contoh berikut
ini.
>> A=[0 1;2 3];
>> B=[4 5;6 7];
>> Jumlah=A+B, Selisih=A-B, Tambah50=A+50
Jumlah =
4 6
8 10
Selisih =
-4 -4
-4 -4
Tambah50 =
50 51
52 53
38 Operasi Matriks
4.2 Perkalian Matriks
Perkalian matriks, misalkan C = AB, terdefinisi jika jumlah kolom
di A sama dengan jumlah baris di B. Selain itu, perkalian juga
bisa dilakukan antara matriks dengan skalar.
Kita akan lanjutkan contoh sebelumnya.
>> A,B
A =
0 1
2 3
B =
4 5
6 7
>> MultAB=A*B, MultBA=B*A
MultAB =
6 7
26 31
MultBA =
10 19
14 27
bb
Contoh berikutnya ialah perkalian dua vektor, yang juga mengikuti
aturan perkalian matriks, karena vektor sesungguhnya sama
dengan matriks 1-dimensi.
>> x=[3 2 1], y=[100;10;1]
x =
3 2 1
Operasi Matriks 39
y =
100
10
1
>> z1=x*y, z2=y*x
z1 =
321
z2 =
300 200 100
30 20 10
3 2 1
Selain perkalian di atas, dikenal pula perkalian vektor, yaitu: “dot-
product” (atau disebut juga inner-product), dan “cross-product”.
Tabel 4. 1
dot(x,y) menghitung dot-product dari vektor x dan y
cross(x,y) menghitung cross-product dari vektor x dan y
4.3 Persamaan Linier dalam Matriks
Kita sering menemui persamaan linier dengan beberapa variabel.
Di dalam aljabar, solusi persamaan tersebut bisa ditemukan, salah
satunya dengan menggunakan matriks. Misalkan kita tinjau sistem
persamaan linier dengan variabel x1 dan x2.
x1 – 2 x2 = 32
12 x1 + 5 x2 = 7
40 Operasi Matriks
Dalam bentuk matriks bisa kita tuliskan:
1 1 −2x
32 12
⇔ AX = B
5
x
2 7
X = A-1B ; di mana A-1 ialah invers matriks A
Dalam MATLAB kita tuliskan:
>> A=[1 –2;12 5]; B=[32;7];
>> X=inv(A)*B
X =
6.0000
-13.0000
Sehingga kita dapatkan solusi x1 = 6 dan x2 = -13.
Atau kita juga bisa mendapatkan solusi tersebut dengan operator
pembagian terbalik:
>> X=A\B
X =
6.0000
-13.0000
Sebagai bahan latihan, cobalah Anda pecahkan persamaan linier
dengan tiga variabel berikut ini.
x + 2y + 3z = 2
4x + 5y + 6z = -5,5
7x + 8y – 9z = -49
4.4 Transposisi
Salah satu operasi yang penting dalam matriks ialah transposisi,
dituliskan dalam MATLAB dengan operator petik tunggal ( ‘ ) dan
titik-petik ( .’ ). Operasi ini mempertukarkan baris dan kolom dari
suatu matriks atau vektor.
Operasi Matriks 41
Tabel 3. 1
petik tunggal ( ‘ ) operasi transposisi untuk matriks berisi bilangan
riil, atau transposisi dan konjugasi untuk matriks
kompleks.
titik-petik ( .’ ) operasi transposisi tanpa konjugasi. Untuk
matriks riil, operator ini memberi hasil yang
sama dengan petik tunggal
Mari kita praktekkan contoh berikut ini untuk memahami kedua
operator di atas.
>> Mat_riil=[1 0; 3 5], Mat_kompleks=[1+2i 3i; 1 2+3i]
Mat_riil =
1 0
3 5
Mat_kompleks =
1.0000 + 2.0000i 0 + 3.0000i
1.0000 2.0000 + 3.0000i
>> Transp_riil=Mat_riil',Transp_kompleks=Mat_kompleks'
Transp_riil =
1 3
0 5
Transp_kompleks =
1.0000 - 2.0000i 1.0000
0 - 3.0000i 2.0000 - 3.0000i
>> Transp_riil2=Mat_riil.'
Transp_riil2 =
1 3
0 5
>> Transp_kompleks2=Mat_kompleks.'
Transp_kompleks2 =
1.0000 + 2.0000i 1.0000
0 + 3.0000i 2.0000 + 3.0000i
4.5 Operasi Elemen-per-Elemen
Di dalam MATLAB, operasi matematik juga bisa dilakukan elemen-
per-elemen. Dalam hal ini matriks atau vektor yang terlibat harus
berukuran sama. Operasi yang bisa dilakukan ialah
perkalian/pembagian, penjumlahan/pengurangan, serta pangkat.
Operator yang digunakan diawali dengan tanda “titik” (kecuali
penjumlahan/pengurangan), yaitu:
42 Operasi Matriks
Tabel 3. 2
+ – Tambah dan kurang (elemen-per-elemen)
.* ./ .\ Kali, bagi, bagi terbalik (elemen-per-elemen)
.^ Pangkat (elemen-per-elemen)
Operasi penjumlahan/pengurangan matriks secara definit sudah
dilakukan elemen-per-elemen, sehingga + dan – tidak diawali
“titik”.
Sekarang kita coba praktekkan contoh di bawah ini.
>> A=[1 -2;1 5]; B=[7 5; 2 0];
>> A+B
ans =
8 3
3 5
>> A.*B
ans =
7 -10
2 0
>> B./A
ans =
7.0000 -2.5000
2.0000 0
>> B.^2
ans =
49 25
4 0
>> A.^B
ans =
1 -32
1 1
>> 2.^B
ans =
128 32
4 1
Perhatikan bahwa hasil operasi juga berupa matriks berukuran
sama dengan A dan B.
Operasi Matriks 43
Pada contoh berikutnya kita coba operasi antar vektor.
>> a = [3 2 1]; b = [4 5 6];
>> c = [10 20 30]’; d = [5 10 15]’;
>> a.*b
ans =
12 10 6
>> c.*d
ans =
50
200
450
>> a.*c
??? Error using ==> .*
Matrix dimensions must agree.
Perhatikan bahwa ukuran a dan c tidak cocok sehingga muncul
pesan error (a berukuran 1 3 sementara c 31).
>> b.^a, c./d+2
ans =
64 25 6
ans =
4
4
4
>> c./2.*d.^2
ans =
125
1000
3375
Ingat, operasi pangkat selalu dilakukan lebih dulu, diikuti
perkalian/pembagian, kemudian penjumlahan/pengurangan.
4.6 Fungsi Elemen-per-Elemen
Semua fungsi matematik yang berlaku pada skalar (lihat kembali
subbab 2.4), berlaku pula untuk matriks/vektor secara elemen-per-
elemen. Pada contoh kali ini, kita akan mencoba beberapa contoh
sederhana, kemudian kita coba pula dua kasus perhitungan dengan
memanfaatkan berbagai fungsi yang telah kita pelajari.
44 Operasi Matriks
>> n=-3:3
n =
-3 -2 -1 0 1 2 3
>> abs(n), sign(n)
ans =
3 2 1 0 1 2 3
ans =
-1 -1 -1 0 1 1 1
>> round(n./2), floor(n./2), ceil(n./2)
ans =
-2 -1 -1 0 1 1 2
ans =
-2 -1 -1 0 0 1 1
ans =
-1 -1 0 0 1 1 2
>> rem(n,3)
ans =
0 -2 -1 0 1 2 0
Contoh Kasus
Berikutnya, kita pelajari contoh kasus pertama:
Misalkan Anda ditugasi untuk mencari solusi persamaan
logaritmik:
y = ln(x2)
di mana x bernilai antara –100 hingga +100. Setelah itu, Anda
harus menampilkan nilai pada rentang x = –2 hingga x = 2 saja.
>> clear
>> inkremen = 0.5;
>> x = -100:inkremen:100; %Di sini kita definisikan x,
>> y = log(x.^2); %kemudian kita hitung y
Warning: Log of zero.
Warning muncul karena terdapat perhitungan y = log(0) ketika
x=0. Untuk menghindari warning, kita bisa buat angka di dalam
logaritma tidak pernah bernilai nol dengan cara menambahkan
bilangan “amat kecil” eps.
>> y = log(x.^2+eps);
Nilai x telah didefinisikan, dan y telah dihitung. Sekarang, kita
Operasi Matriks 45
harus melokalisasi data pada rentang –2 hingga +2. Untuk
melakukannya, kita harus tahu panjang vektor x, dan pada nomor
indeks berapa saja x bernilai –2 hingga +2.
>> panjang = length(x)
panjang =
401
>> titik_tengah = round(panjang/2)
titik_tengah =
201
Pada titik_tengah ini, x bernilai 0. Sekarang kita ambil nilai x di
kiri dan kanan titik_tengah sebanyak 4 titik untuk mendapatkan x
= –2 hingga x = 2.
>> x_baru = x(titik_tengah-4:titik_tengah+4)
x_baru =
Columns 1 through 7
-2.0000 -1.5000 -1.0000 -0.5000 0 0.5000 1.0000
Columns 8 through 9
1.5000 2.0000
Lalu kita tampilkan nilai y pada rentang tersebut.
>> y_baru = y(titik_tengah-4:titik_tengah+4)
y_baru =
Columns 1 through 7
1.3863 0.8109 0.0000 -1.3863 -36.0437 -1.3863 0.0000
Columns 8 through 9
0.8109 1.3863
Berikutnya pada contoh kasus kedua:
Anda ditugasi membuat tabel trigonometri: sinus dan cosinus
untuk sudut-sudut istimewa: 0o, 30o, 45o, 60o, 90o, ... , 360o. Dalam
tugas ini akan digunakan pula command sort untuk mengurutkan
data dan disp untuk menampilkan isi variabel di layar.
Mula-mula, kita definisikan x sebagai sudut-sudut istimewa,
berupa sudut kelipatan 30o mulai 0o hingga 360o. Kemudian kita
tambahkan empat sudut istimewa: 45o, 135o, 225o, dan 315o, lalu
kita urutkan isi vektor x.
>> clear
46 Operasi Matriks
>> x=0:30:360;
>> x=[x 45 135 225 315];
>> x=sort(x)
x =
Columns 1 through 13
0 30 45 60 90 120 135 150 180 210 225 240 270
Columns 14 through 17
300 315 330 360
x dalam satuan derajat kita ubah menjadi t (radian), karena
perhitungan trigonometri dilakukan dalam satuan radian.
>> t=x.*pi/180;
>> y1=sin(t); y2=cos(t);
Selanjutnya kita buat matriks tiga kolom bernama tabel berisi:
sudut, sin, dan cos.
>> tabel=[x;y1;y2]';
>> judul=' sudut sin cos';
Ingat, vektor x, y1, dan y2 berupa satu baris; padahal kita ingin
menampilkannya memanjang ke bawah berupa kolom, jadi perlu
dilakukan transposisi.
>> disp(judul), disp(tabel)
sudut sin cos
0 0 1.0000
30.0000 0.5000 0.8660
45.0000 0.7071 0.7071
60.0000 0.8660 0.5000
90.0000 1.0000 0.0000
120.0000 0.8660 -0.5000
135.0000 0.7071 -0.7071
150.0000 0.5000 -0.8660
180.0000 0.0000 -1.0000
210.0000 -0.5000 -0.8660
225.0000 -0.7071 -0.7071
240.0000 -0.8660 -0.5000
270.0000 -1.0000 -0.0000
300.0000 -0.8660 0.5000
315.0000 -0.7071 0.7071
330.0000 -0.5000 0.8660
360.0000 -0.0000 1.0000
Operasi Matriks 47
Soal Latihan
1. Operasikan matriks M dan N berikut ini:
10 20 −1 1
M
5
8N
1
−1
M + N, M −N, N + 9
MN, NM
2. Hitunglah dot-product dan cross-product dari dua vektor
berikut ini:
ar 0 5 5 rb 1
1 1
rr rr r r
a b a b ba
3. Pecahkanlah persamaan linier tiga variabel berikut ini:
x + 2y – 3z = -7
4x + 5y + 6z = 11
7x + 8y + 9z = 17
4. Carilah solusi dari persamaan lingkaran berikut ini:
y 25 −x 2 untuk − 5 ≤x ≤5 , dengan inkremen x sebesar
0,05. Setelah itu, tampilkanlah nilai y pada rentang x = 0
hingga x = 1 saja.
5. Buatlah tabel hiperbolik-trigonometri: sinh, cosh, dan tanh
untuk rentang − 5 ≤x ≤5 , dengan inkremen x sebesar 0,1.
BAB 5
GRAFIK DAN SUARA
Salah satu keunggulan MATLAB ialah kemampuannya dalam
menampilkan/mengolah grafik dan suara dengan command yang
sederhana dan fleksibel. Pada bab ini ini kita akan belajar
mengenai visualisasi data (plot grafik 2-dimensi dan 3-dimensi),
serta penyuaraan.
5.1 Plot 2-Dimensi
Untuk memvisualisasi data secara 2-dimensi ataupun 3-dimensi,
kita menggunakan berbagai command plotting; di mana command
yang paling dasar ialah plot. Anda bisa praktekan contoh berikut
ini.
>> x = 1:8; y=[20 22 25 30 28 25 24 22];
>> plot(x,y)
Akan muncul window baru berisi figure hasil plotting. Perhatikan
kegunaan dari ikon yang ada.
50 Grafik dan Suara
Menu
Rotate Zoo
klik ikon ini, lalu drag di klik
New figure, dalam figure untuk memutar figu
open, save, figure; terutama untuk dan
print figure 3-dimensi
Rot
klik
dala
Insert Zoom figu
menambahkan klik ikon ini, lalu klik di dalam 3-di
teks, panah, dan figure untuk memperbesar
garis ke dalam dan memperkecil
figure
Edit plot
klik ikon ini, pilih obyek yang ada di figure (garis plot, area plot, dsb), lalu
double-click untuk mengubah properties dari obyek tersebut.
Gambar 5. 1 Jendela figure.
Seperti yang Anda lihat, titik (1,20), (2,22), (3,25), (4,30),
dst... terhubung dengan garis lurus. Sekarang Anda bisa coba
untuk membalik urutan sintaks dan mengamati grafik yang
dihasilkan!
>> plot(y,x)
Setiap gambar di figure window, bisa Anda print melalui
menu FilePrint (Ctrl+P), atau Anda simpan sebagai file FIG
dengan FileSave (Ctrl+S), ataupun Anda ekspor sebagai file
JPG, EMF, BMP, dsb dengan FileExport.
Untuk menambahkan judul, label, dan grid ke dalam hasil plot
Anda, digunakan command berikut ini.
Grafik dan Suara 51
Tabel 5. 1
xlabel memberi label pada sumbu-x
ylabel memberi label pada sumbu-y
title memberi judul di atas area plot
grid on memunculkan grid di dalam area plot
grid off menghapus grid
Sekarang mari kita lihat contoh plot yang lain. Kita akan memplot
kurva y = x3 pada rentang x = -3 hingga x = +3.
>> clear
>> x=-3:0.1:3; %inkremen=0.1 agar kurva terlihat mulus
>> y=x.^3;
>> plot(x,y)
>> xlabel('Sumbu X'), ylabel('Sumbu Y')
>> title('Kurva Y=X^3')
>> grid on
Gambar 5. 2 Contoh plot: kurva Y = X3
Ketika Anda menggunakan command plot, gambar sebelumnya di
figure window akan terhapus. Lalu bagaimana jika kita ingin
memplot beberapa fungsi dalam satu figure sekaligus? Dalam hal
ini kita bisa gunkan command hold.
52 Grafik dan Suara
Tabel 5. 2
hold on untuk ‘menahan’ gambar sebelumnya supaya
tak terhapus ketika ditimpa gambar baru
hold off untuk menonaktifkan command hold
Berikut ini contoh memplot beberapa kurva eksponensial negatif
sekaligus.
>> clear
>> x=linspace(0,5,500);
>> y1=exp(-x); plot(x,y1);
>> grid on
>> hold on
>> y2=exp(-0.5*x); plot(x,y2);
>> y3=exp(-0.25*x); plot(x,y3);
>> y4=exp(-0.1*x); plot(x,y4);
>> xlabel('sumbu-x'), ylabel('sumbu-y')
>> title('Perbandingan fungsi eksponensial ...
negatif')
Gambar 5. 3 Hasil plot dengan “hold on”
Grafik dan Suara 53
5.2 Lebih Jauh Mengenai Plot
Anda mungkin ingin memplot beberapa fungsi dalam beberapa
figure window yang terpisah, atau membagi satu window menjadi
sejumlah area plot, ataupun mengatur properties dari plot yang
akan digambar. Beberapa command di bawah ini bisa digunakan
untuk tujuan tersebut.
Tabel 5. 3
figure menciptakan figure window baru yang kosong
dan siap untuk di-plot
figure(k) untuk ‘menduduki’ figure window nomor-k
subplot(m,n,k) membagi figure window menjadi m-baris ×
n-kolom area plot yang terpisah, dan
menduduki area ke-k
clf “clear figure”, mengosongkan figure window
yang sedang ‘diduduki’
Misalkan figure window berikut dibagi menjadi 2-baris × 2-kolom
dengan subplot. Perhatikan urutan nomor area dari kiri-atas ke
kanan-bawah.
Area ke-1 Area ke-2
Area ke-3 Area ke-4
Gambar 5. 4 Pembagian area plot dengan “subplot”
54 Grafik dan Suara
Tabel 5. 3 (lanjutan)
plot(x,y,’string’) menciptakan plot 2-dimensi dari vektor x
versus vektor y, dengan property yang
ditentukan oleh string, sebagai berikut:
Warna Jenis Garis Jenis Point
b biru -: utuh . titik
g hijau -. titik-titik o lingkaran
r merah -- titik-strip x tanda ×
c biru muda putus-putus + tanda +
m ungu * tanda *
y kuning s bujur sangkar
k hitam d permata
w putih v segitiga ke bawah
^ segitiga ke atas
< segitiga ke kiri
> segitiga ke kanan
p segilima
h segienam
Misalkan:
plot(x,y,’r-’) memplot x versus y dengan garis utuh warna merah
plot(x,y,’k*’) menempatkan tanda * warna hitam untuk setiap titik
x versus y.
plot(x,y,’g--s’) memplot dengan garis putus-putus warna hijau dan
menempatkan tanda bujur sangkar di setiap titik x
versus y.
Perlu diingat bahwa ‘string’ dalam plot bersifat opsional. Apabila
tidak dituliskan maka digunakan garis utuh warna biru.
Tabel 5. 3 (lanjutan)
plot(x1,y1,’string1’,x2,y2,’string2’,x3,y3,’string3’, ... )
menciptakan sejumlah plot sekaligus dalam satu area
plot: x1 versus y1 dengan property string1, x2 versus
y2 dengan property string2, dan seterusnya
legend(‘ket1’,’ket2’,’ket3’, ...)
menambahkan legenda ke dalam plot yang telah dibuat;
ket1 untuk plot pertama, ket2 untuk plot kedua, dan
seterusnya
Grafik dan Suara 55
axis off menghilangkan tampilan sumbu koordinat pada plot
axis on menampakkan kembali sumbu koordinat
axis([x_awal x_akhir y_awal y_akhir])
membuat tampilan area plot pada batas-batas
nilai x = x_awal hingga x_akhir, dan
nilai y = y_awal hingga y_akhir
axis equal mengubah skala sumbu-x dan sumbu-y menjadi
sama
axis square mengubah bentuk area plot menjadi bujur sangkar
Berbagai fungsi yang berkaitan dengan plot di atas, berlaku pula
untuk plot diskrit, plot logaritmik dan plot dalam koordinat polar.
Tabel 5. 4
stem( ... ) sama dengan plot( ... ), tetapi menampilkan y
sebagai data diskrit
semilogy( ... ) sama dengan plot( ... ), kecuali sumbu-y
menggunakan skala logaritmik (basis 10)
semilogx( ... ) sama dengan plot( ... ), kecuali sumbu-x
menggunakan skala logaritmik
loglog( ... ) sama dengan plot( ... ), tetapi sumbu-x dan
sumbu-y menggunakan skala logaritmik
polar(theta,rho,’string’)
membuat plot dalam koordinat polar dari sudut theta
(satuan radian) versus radius rho, dengan property
ditentukan oleh string
Kini saatnya mencoba berbagai command di atas dalam contoh
berikut ini.
Pertama, kita akan mencoba memplot kurva eksponensial negatif
seperti pada contoh subbab 5.1 secara lebih efisien.
>> clear
>> x=linspace(0,5,500);
>> y1=exp(-x); y2=exp(-0.5*x); y3=exp(-0.25*x);
>> y4=exp(-0.1*x);
>> plot(x,y1,x,y2,x,y3,x,y4)
>> grid on
>> xlabel('sumbu-x'), ylabel('sumbu-y')
56 Grafik dan Suara
>> title('Kurva y = exp(-Ax)')
>> legend('A=1','A=0.5','A=0.25','A=0.1')
Kemudian, kita coba memplot kurva tersebut dalam skala
semilogaritmik
>> figure
>> semilogy(x,y1,x,y2,x,y3,x,y4)
>> grid on
>> xlabel('sumbu-x'), ylabel('sumbu-y')
>> title('Kurva y = exp(-Ax)')
>> legend('A=1','A=0.5','A=0.25','A=0.1')
Misalkan kita ingin menyempitkan area plot pada y = 1 hingga 10-2
saja, maka:
>> axis([0 5 1e-2 1])
Gambar 5. 5 Contoh plot semi-logaritmik
Dalam contoh kedua, kita akan memplot gelombang sinus,
cosinus, kotak, dan gigi gergaji dengan melibatkan command
subplot.
>> figure
>> t=0:0.05:10;
Grafik dan Suara 57
>> sinus=sin(2*pi*0.25*t);
>> cosinus=cos(2*pi*0.25*t);
>> kotak=square(2*pi*0.25*t);
>> gigi=sawtooth(2*pi*0.25*t);
>> subplot(2,2,1);
>> plot(t,sinus), title('sinus 1/4 Hz')
>> subplot(2,2,2);
>> plot(t,cosinus), title('cosinus 1/4 Hz')
>> subplot(2,2,3);
>> plot(t,kotak), title('kotak 1/4 Hz')
>> subplot(2,2,4);
>> plot(t,gigi), title('gigi gergaji 1/4 Hz')
Gambar 5. 6 Contoh penggunaan subplot
Dalam contoh ketiga, kita akan mencoba memplot suatu fungsi
matematis dalam koordinat polar. Diinginkan plot fungsi:
= sin2(3)
dalam MATLAB dituliskan
58 Grafik dan Suara
>> figure
>> theta=linspace(0,2*pi,500);
>> rho=(cos(theta.*3)).^2;
>> polar(theta,rho);
Gambar 5. 7 Contoh plot dengan command “polar”
5.3 Plot 3-Dimensi
Dalam subbab ini akan dibahas tiga macam plot 3-dimensi: plot
garis, plot permukaan (surface), dan plot kontur.
5.3.1 Plot Garis
Mari kita mulai dengan plot garis di dalam ruang 3-dimensi. Ini
mirip dengan plot 2-dimensi, tetapi kali ini kita gunakan command
plot3( ... ), dan dibutuhkan vektor z, untuk dimensi ketiga.
>> X = [10 20 20 10 10];
>> Y = [5 5 15 15 5];
>> Z = [0 0 70 70 0];
>> plot3(X,Y,Z); grid on;
>> xlabel(‘sumbu X’); ylabel(‘sumbu Y’);
>> zlabel(‘sumbu Z’);
>> title (‘Contoh plot 3-D’);
>> axis([0 25 0 20 0 80])
Grafik dan Suara 59
Gambar 5. 8 Contoh plot 3-dimensi dengan command “plot3”
Perhatikan bahwa command label, title, grid, axis, hold, dan
subplot juga berlaku di sini. Anda juga bisa merotasi gambar 3-
dimensi tersebut dengan cara men-klik ikon rotate dan dragging
mouse di atas gambar.
Sekarang kita coba contoh yang lain untuk menggambarkan helix.
>> t=0:0.1:25;
>> X=sin(t); Y=cos(t); Z=0.5*t;
>> plot3(X,Y,Z)
>> xlabel(‘sumbu X’); ylabel(‘sumbu Y’);
>> zlabel(‘sumbu Z’);
>> title (‘Helix’);
60 Grafik dan Suara
Gambar 5. 9 Contoh penggunaan “plot3”
5.3.2 Plot Permukaan
Sementara itu, untuk plot permukaan (surface) dalam ruang 3-
dimensi digunakan command mesh atau surf. Contoh berikut ini
menggambarkan fungsi dua variabel z = x2 + y2.
Caranya ialah:
1) Definisikan batas-batas nilai x dan y yang akan diplot
2) Gunakan command meshgrid untuk “mengisi” bidang-XY
dengan jalinan titik
3) Hitunglah fungsi 3-dimensi untuk jalinan titik tersebut
4) Buatlah plot dengan command mesh atau surf.
Sebagai contoh:
>> batas_x = -10:1:10; batas y = -10:4:10;
>> [X,Y] = meshgrid(batas_x,batas_y);
>> Z = X.^2 + Y.^2;
>> mesh(X,Y,Z);
Kini Anda mendapatkan plot 3-dimensi. Kini cobalah
>> surf(X,Y,Z);
Grafik dan Suara 61
Gambar 5. 10 Hasil plot dengan “mesh” dan “surf”
Amatilah perbedaan hasil antara mesh dan surf ! Anda juga bisa
menambahkan “label” dan “title” seperti plot pada umumnya.
Sekarang kita coba contoh yang lain untuk memplot fungsi 3-
dimensi
sinr 2 2
z , di mana r x y .
r
>> x = linspace(-10,10,40); y = x;
>> [X,Y] = meshgrid(x,y);
>> R = sqrt(X.^2+Y.^2);
>> Z = sin(R)./(R+eps);
>> surf(X,Y,Z);
62 Grafik dan Suara
Gambar 5. 11 Plot 3-dimensi dari fungsi sin(r) / r
di sini kita menggunakan variabel eps, untuk mencegah
perhitungan 0/0 ketika R = 0.
5.3.3 Plot Kontur
Fungsi dua variabel, misalkan z = f(x,y) bisa kita gambarkan
konturnya dalam dua dimensi dengan command berikut ini:
Tabel 5. 5
contour(X,Y,Z) menggambar kontur dari nilai di Z dengan 10
level. Elemen Z diterjemahkan sebagai level-
level di atas bidang (x,y)
C = contour(X,Y,Z) menghitung matriks kontur C
contour(X,Y,Z,n) menggambar kontur dengan n level
contour( ... , ‘string’) menggambar kontur dengan property yang
ditentukan oleh string (lihat Tabel 5.3)
clabel(C) menuliskan angka pada garis-garis kontur
untuk menunjukkan level
meshc(X,Y,Z) menggambar permukaan seperti pada
command mesh, dan juga memplot kontur
pada dasar grafik.
Grafik dan Suara 63
Mari kita gambarkan kontur dari fungsi sin(r)/r di atas, lalu
bandingkan dengan plot permukaannya:
>> figure; contour(X,Y,Z);
>> figure; meshc(X,Y,Z);
Gambar 5. 12 Contoh plot kontur
64 Grafik dan Suara
5.4 Suara
Untuk menyuarakan suatu vektor, ataupun membaca dan
menyimpan file audio berformat WAV, digunakan command
berikut ini:
[x,Fs] = wavread(‘nama_file’)
membaca file WAV dan menyimpannya dalam vektor x,
serta mengembalikan frekuensi sampling Fs dari file
tersebut. Command ini juga bisa membaca file WAV
multi kanal
wavwrite(x,Fs,’nama_file’)
menuliskan file WAV dari vektor x dengan frekuensi
sampling Fs
sound(x,Fs)
menyuarakan vektor x dengan frekuensi sampling Fs
soundsc(x,Fs)
sama seperti sintaks sebelumnya, namun vektor x terlebih
dahulu diskalakan pada selang –1 ≤x ≤+1
File yang akan dibaca harus tersimpan di direktori Matlab\work,
atau Anda harus merinci drive, direktori dan nama file jika file
tersimpan di direktori lain.
Sebagai gambaran, marilah kita dengarkan suara berikut ini.
Pertama, suara pitch 400 Hz berdurasi 2 detik.
>> Fs=8000; %frekuensi sampling 8 kHz
>> t=0:1/Fs:2; %sinyal berdurasi 2 detik
>> frek=400; %frekuensi sinyal 400 Hz
>> m=cos(2*pi*frek*t);
>> sound(m,Fs); %suara dari m
>> wavwrite(m,Fs,’tone_400Hz.wav’); ...
%Menyimpan vektor m ke dalam file
Berikutnya, memperdengarkan suara helikopter yang ada di file
[Link].
>> [x,Fs]=wavread(‘[Link]’); %Membaca file [Link]
>> sound(x,Fs); %Suara helikopter
Grafik dan Suara 65
Soal Latihan
1. Gambarkan kurva y = x4−9x2 pada rentang –6 ≤ x
≤ 6. Buatlah inkremen x cukup kecil sehingga kurva terlihat
mulus.
2. Gambarkan kurva-kurva berikut pada rentang −10 ≤x
≤ 10 dalam satu figure sekaligus!
y 100 x 2 y 100 2x
2
y 100 4x
2
2
y 100 16x
3. Suatu filter memiliki respon frekuensi sebagai berikut:
Vo 1
di mana F = 4kHz ialah frekuensi cut-off
Vi 1 j2fF
dari filter. Buatlah plot semilogaritmis pada sumbu frekuensi:
respon amplituda, Vo
versus f, dan plot respon fasa, ∠
i Vi
versus f, pada rentang frekuensi 0 hingga 50 kHz.
Gambarkan kedua plot tadi pada satu window saja, setengah
bagian atas untuk plot amplituda, dan setengah bagian bawah
untuk plot fasanya.
4. Sebuah antena diketahui memiliki pola radiasi dalam koordinat
polar sebagai berikut:
3
cos
U
2 2
− ≤ ≤
0 selainnya
Gambarkan pola radiasi ini!
5. Gambarkan kurva berikut ini di dalam ruang 3-D:
x 1 cos t
y 2 sin t 0 ≤t
≤2z 1 −cos 2t
6. Plot fungsi dua variabel berikut ini: z = x2 - y2, untuk rentang
-5 ≤x ≤5, -5 ≤y ≤5
7. Plot kontur dari fungsi dua variabel berikut ini:
f x, y cos x sin 2 y , untuk 0 ≤x ≤4, 0 ≤y ≤4
66 Grafik dan Suara
8. Buatlah suatu file suara WAV berisi urut-urutan tone DO-RE-
MI-FA-SOL-LA-TI-DO dengan frekuensi berikut ini:
DO RE MI FA SOL LA TI DO
262 294 330 349 392 440 495 524
BAB 6
M-FILE DAN
PEMROGRAMAN MATLAB
Pada bab-bab yang lalu, Anda telah belajar berinteraksi dengan
MATLAB menggunakan command window. Sekarang, katakanlah
Anda harus mempergunakan sederetan command secara berulang-
ulang di dalam sesi MATLAB yang berbeda. Akan sangat repot
jika Anda harus mengetikkan command tersebut secara manual di
command window setiap kali Anda butuhkan. Namun dengan M-
file, deretan command tersebut bisa Anda simpan dalam bentuk
skrip teks. Kapan saja Anda butuhkan, skrip tersebut bisa
dijalankan/dieksekusi secara otomatis dengan cara mengetikkan
nama M-file yang bersangkutan di command window.
Kali ini kita akan belajar mengenal M-file dengan contoh
sederhana. Namun demikian perlu diketahui bahwa MATLAB
sebenarnya merupakan bahasa pemrograman umum, seperti halnya
Basic, C, Java, Pascal, Fortran, dll. Sehingga dalam bab ini kita
akan menitikberatkan pada pelajaran pemrograman komputer.
6.1 Membuat M-File
Untuk menuliskan skrip M-file, Anda bisa mulai dengan membuka
file baru. Caranya ialah melalui menu di main window:
FileOpen atau FileNewM-file; atau dengan mengklik ikon
yang ada di jendela utama. Sebuah jendela editor akan terbuka
seperti gambar berikut ini.
68 M-file dan Pemrograman MATLAB
Menu
Memulai, Print Cari teks Ikon
membuka, de-bugging
menyimpan M-file
Ikon editing
Gambar 6. 1 Jendela editor M-file
Dengan editor ini, kita bisa membuka sejumlah M-file, melakukan
editing, ataupun mencoba menjalankannya dan melakukan
debuging (mencari kesalahan di dalam skrip).
Sementara itu, untuk menyimpan M-file, Anda bisa lakukan
dengan menu: FileSave atau FileSave As; ataupun dengan
mengklik ikon yang ada.
Namun demikian, sebenarnya Anda juga bisa menuliskan M-file
dengan sebarang editor teks, seperti MS Word, Notepad, dll.; yang
penting Anda menyimpan file tersebut dengan ekstensi *.m.
6.2 M-File Sebagai Skrip Program
Pada bagian ini, kita akan menggunakan M-file untuk menjalankan
sederetan command yang kita tuliskan sebagai skrip. Mari kita
mulai dengan skrip sederhana untuk menghitung rata-rata dari lima
bilangan. File ini kita namakan rata_rata.m.
M-file dan Pemrograman MATLAB 69
Bukalah M-file baru lalu ketikkan skrip berikut ini.
% Program sederhana untuk menghitung
% rata-rata 5 bilangan:
% rata_rata.m
a = 50;
b = 100;
c = 150;
d = 200;
e = 250;
% Menghitung dan menampilkan rata-rata
hasil = (a + b + c + d + e)/5;
hasil
Teks yang diawali tanda “%” menunjukkan komentar, dan tidak
akan dieksekusi oleh MATLAB.
Simpanlah file ini di dalam direktori Matlab\work dengan nama
rata_rata.m. Sekarang cobalah jalankan dari command window.
Sebelumnya pastikan bahwa direktori menunjuk ke Matlab\work.
Perhatikan “Current Directory” yang ada di jendela utama
MATLAB. Kita bisa mengubah direktori yang sedang aktif melalui
drop-down menu ataupun melalui browse.
Direktori yang
sedang aktif
Kita bisa memilih
direktori dari ‘drop-
down menu’
ataupun ‘browse’
Gambar 6. 2 Memilih direktori untuk menjalankan M-file
70 M-file dan Pemrograman MATLAB
>> clear
>> rata_rata
hasil =
150
>> whos
Name Size Bytes Class
a 1x1 8 double array
ans 1x1 8 double array
b 1x1 8 double array
c 1x1 8 double array
d 1x1 8 double array
e 1x1 8 double array
hasil 1x1 8 double array
Grand total is 7 elements using 56 bytes
Perhatikan bahwa:
Di dalam M-file, setiap command diakhiri dengan titik-koma
supaya hasil perhitungan di tiap baris tidak ditampilkan di
command window. Kecuali pada hasil perhitungan yang ingin
kita tampilkan, tidak diakhiri titik-koma.
Variabel yang didefinisikan di dalam M-file akan disimpan
oleh MATLAB ketika M-file telah dieksekusi.
Di dalam editor, skrip yang kita tuliskan akan memiliki warna
tertentu:
hijau untuk komentar
hitam untuk variabel dan command
biru untuk statement pemrograman.
Sekarang, marilah kita mencoba M-file lain untuk menghitung sisi
miring suatu segi tiga siku-siku dengan formula phytagoras,
menghitung luasnya, dan kelilingnya.
% Program menghitung segi-3 siku-siku: segi3.m
% Untuk menghitung sisi miring, luas, dan keliling
% Mendefinisikan sisi siku-siku segitiga
Sisi_A = 3;
Sisi_B = 4;
% Menghitung sisi miring
Sisi_C = sqrt(Sisi_A^2 + Sisi_B^2)
% Menghitung luas segitiga
Luas = 1/2* Sisi_A * Sisi_B
M-file dan Pemrograman MATLAB 71
% Menghitung keliling
Keliling = Sisi_A + Sisi_B + Sisi_C
Lalu simpan dengan nama segi3.m.
Sekarang kita panggil M-file tersebut
>> segi3
Sisi_C =
5
Luas =
6
Keliling =
12
Sekarang Anda bisa mencoba sendiri membuat program yang lebih
menantang, seperti menghitung dan memplot fungsi 2 ataupun 3-
dimensi dengan M-file.
6.3 M-File Sebagai Fungsi
Sebagai skrip program, jika kita ingin mengubah/mengatur
parameter masukan program, maka harus kita lakukan di dalam
editor. Padahal seringkali kita harus menjalankan satu
program/algoritma berulang kali dengan nilai masukan yang
berbeda-beda, misalkan dalam proses iterasi atau optimasi. Untuk
keperluan ini, kita bisa menuliskan M-file sebagai suatu fungsi
spesifik sesuai kebutuhan kita.
Dalam setiap fungsi terdapat tiga unsur:
1. Parameter masukan; dalam hal ini kita sebut sebagai “argumen
input”. Jumlah parameter (argumen) tersebut bisa sebarang
(satu, dua, sepuluh, atau tidak ada argumen input sama sekali).
Jenis argumen pun sebarang (variabel, bilangan ataupun teks).
2. Proses di dalam program; berupa sederetan command untuk
menjalankan suatu algoritma tertentu.
3. Parameter keluaran; atau “argumen output” yang jumlah dan
jenisnya sebarang.
Deklarasi fungsi di M-file harus dilakukan pada baris awal dengan
sintaks:
function [argumen output] = nama_fungsi(argumen input)
72 M-file dan Pemrograman MATLAB
Sebagai contoh awal, kita akan membuat fungsi untuk menghitung
sisi miring, luas, dan keliling segitiga; seperti program yang ada
pada contoh sebelumnya.
%Fungsi untuk menghitung segi-3 siku-siku: segitiga.m
%Untuk menghitung sisi miring, luas, dan keliling
function [Sisi_C,Luas,Kll] = segitiga(Sisi_A,Sisi_B)
% Menghitung sisi miring
Sisi_C = sqrt(Sisi_A^2 + Sisi_B^2);
% Menghitung luas segitiga
Luas = 1/2* Sisi_A * Sisi_B;
% Menghitung keliling
Kll = Sisi_A + Sisi_B + Sisi_C;
Lalu simpan dengan nama “segitiga.m”.
Sekarang Anda panggil fungsi tersebut.
>> clear
>> [Hyp,Area,Circum]=segitiga(12,16)
Hyp =
20
Area =
96
Circum =
48
Dari contoh sederhana tersebut, ada beberapa hal yang perlu kita
perhatikan:
Dalam fungsi segitiga, terdapat dua argumen input (Sisi_A,
Sisi_B), dan tiga argumen output (Sisi_C, Luas, Kll).
Ketika dipanggil di command window, kita bisa
menggunakan nama argumen input/output yang berbeda
dengan di M-file, namun urutannya tidak berubah. Di
dalam contoh, argumen Sisi_A dan Sisi_B kita isi
dengan bilangan, sementara argumen Sisi_C, Luas, dan
Keliling kita panggil dengan Hyp, Area, dan Circum.
M-file dan Pemrograman MATLAB 73
Sekarang kita lihat dengan command whos:
>> whos
Name Size Bytes Class
Area 1x1 8 double array
Circum 1x1 8 double array
Hyp 1x1 8 double array
Grand total is 3 elements using 24 bytes
Terlihat bahwa variabel yang dideklarasikan di dalam fungsi tidak
disimpan, melainkan dimusnahkan ketika suatu fungsi selesai
dijalankan. Yang ada di sana hanyalah variabel yang telah
dideklarasikan di command window untuk menyimpan nilai output.
Hal ini merupakan salah satu perbedaan utama antara skrip
program dengan fungsi.
Perlu diperhatikan bahwa fungsi yang telah kita buat pada
dasarnya sama dengan fungsi yang telah ada di MATLAB, semisal
fungsi sin(x) ataupun sqrt(x). Misalkan kita memanggil fungsi
tanpa menyebutkan argumen output, maka keluaran akan disimpan
di ans.
6.4 Display dan Input
Adakalanya kita membutuhkan interaksi dengan pengguna
program untuk memasukkan parameter tertentu di awal/tengah
program. Dalam hal ini kita bisa pergunakan cara sederhana
dengan command input. Sementara command disp digunakan
untuk menampilkan teks di layar.
Misalkan kita akan membuat program untuk menghitung jumlah
kombinasi team basket yang mungkin dari sejumlah mahasiswa.
74 M-file dan Pemrograman MATLAB
% Program menghitung kombinasi : hit_komb.m
% untuk menghitung jumlah kombinasi
% dari sejumlah populasi
% Menampilkan judul program
clc;
disp(‘Menghitung Kombinasi’);
disp(‘---------------------‘);
% Meminta masukan dari user
n = input(‘Berapa jumlah mahasiswa yang ada? : ‘);
r = input(‘Berapa jumlah personel satu team? : ‘);
% Menghitung kombinasi
kombinasi = factorial(n)/factorial(r)/factorial(n-r);
% Menampilkan keluaran
disp(‘Jumlah kombinasi yang ada = ‘,kombinasi);
Kita coba jalankan program tersebut:
>> hit_komb
Menghitung Kombinasi
---------------------
Berapa jumlah mahasiswa yang ada? : 8
Berapa jumlah personel satu team? : 5
Jumlah kombinasi yang ada =
56
6.5 Control Statement
Seperti halnya bahasa program pada umumnya, kita bisa
mengendalikan arah program dengan berbagai cara, berupa
percabangan arah program berdasarkan kondisi tertentu, ataupun
loop (perhitungan berulang) ketika kita melakukan iterasi.
6.5.1 Statement if … elseif … else … end
Ini merupakan statement untuk percabangan program
berdasarkan satu/beberapa kondisi tertentu. Sintaks yang
digunakan dalam MATLAB meliputi:
M-file dan Pemrograman MATLAB 75
if kondisi
Command yang dijalankan jika kondisi dipenuhi
end
if kondisi
Command yang dijalankan jika kondisi dipenuhi
else
Dijalankan jika kondisi tidak dipenuhi
end
if kondisi1
Command yang dijalankan jika kondisi1 dipenuhi
elseif kondisi2
Dijalankan jika kondisi2 dipenuhi
elseif kondisi3
Dijalankan jika kondisi3 dipenuhi
elseif ...
...dst...
else
Dijalankan jika kondisi manapun tidak dipenuhi
end
Selain itu, dimungkinkan pula membuat pernyataan if di dalam
pernyataan yang lain (disebut nested-if), misalkan:
if kondisi1
command1
if kondisiA
commandA
else
commandB
end
else
command2
end
76 M-file dan Pemrograman MATLAB
6.5.2 Statement switch … case
Sebagai alternatif dari statement if … elseif … else … end, kita
bisa menggunakan statement switch. Sintaksnya ialah:
switch nama_variabel
case{kondisi1,kondisi2,...}
Dijalankan jika kondisi1 atau kondisi2 dst...
dipenuhi
case{kondisiA,kondisiB,...}
Dijalankan jika kondisiA atau kondisiB dst...
dipenuhi
case{kondisiX,kondisiY,...}
Dijalankan jika kondisiX atau kondisiY dst...
dipenuhi
case{...} ...dst
...
default
Dijalankan jika kondisi manapun tidak dipenuhi
end
6.5.3 Statement for … end
Statement ini digunakan untuk loop/perhitungan berulang. Sintaks
yang digunakan dalam MATLAB ialah:
for variabel = nilai_awal : inkremen : nilai_akhir
Command untuk dijalankan
end
Adapun sintaks yang digunakan untuk membatasi loop mirip
dengan yang kita pakai untuk membuat deret (lihat kembali subbab
3.5). Misalkan untuk menampilkan bilangan kelipatan 3 dari 30
sampai 100.
for k = 30:3:100
k
end
Hasilnya ialah:
M-file dan Pemrograman MATLAB 77
k =
30
k =
33
k =
...
k =
99
Sementara untuk nilai inkeremen = 1, cukup dituliskan nilai awal
dan akhir. Misalkan untuk mendaftar bilangan bulat dari –10
hingga 10 dan menyimpannya dalam satu vektor.
Vektor=[];
for k = -10:10 %dalam hal ini inkremen = 1
Vektor = [Vektor k];
end
Vektor
Menghasilkan:
Vektor =
Columns 1 through 13
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2
Columns 14 through 21
3 4 5 6 7 8 9 10
Atau untuk memplot kurva parabola:
y = Ax2
dengan berbagai nilai parameter A, yaitu 0,5 , 1 , 1,5 , dan 2.
Dalam hal ini indeks vektor A kita iterasi dari 1 hingga indeks
terakhir.
figure;
x = linspace(-4,4,500); % mendefinisikan nilai x
A = 0.5:0.5:2; % mendefinisikan vektor A
for i = 1:length(A)
y = A(i)* x.^2;
plot(x,y);
hold on;
end
grid on;
78 M-file dan Pemrograman MATLAB
Menghasilkan:
Gambar 6. 3 Contoh plot 4 kurva parabola dengan “for”
Perhatikan bahwa setiap selesai satu loop, variabel (dalam contoh
di atas ialah i) akan otomatis mengalami inkremen. Demikian
seterusnya hingga nilai_akhir (yaitu length(A)) tercapai dan
program dilanjutkan ke baris selanjutnya.
6.5.4 Statement while … end
Alternatif dari sintaks loop ialah berikut ini
while kondisi
Command untuk dijalankan jika kondisi dipenuhi
end %keluar dari loop jika kondisi tidak dipenuhi
Misalkan untuk memplot fungsi akar kuadrat
y = B x1/2
dengan berbagai nilai parameter B.
M-file dan Pemrograman MATLAB 79
figure;
x=linspace(0,4,500);
A=0.5:0.5:2;
i=1;
while i <= length(A)
y = A(i)* x.^(1/2);
plot(x,y); hold on;
i=i+1;
end
grid on;
Menghasilkan:
Gambar 6. 4 Contoh plot 4 kurva dengan “while”
6.5.5 Statement break dan return
Ketika kita sudah berada dalam suatu loop, kita bisa keluar dengan
break tanpa menunggu nilai_akhir tercapai, atau tanpa menunggu
kondisi loop tidak dipenuhi lagi. Sementara, return digunakan
untuk keluar dari fungsi yang sedang berjalan. Berikut ini
gambarannya dalam kasus penentuan apakah suatu bilangan
bersifat prima atau tidak.
Algoritma yang akan digunakan ialah sebagai berikut:
User memasukkan satu bilangan bulat positif N sebagai
argumen input.
80 M-file dan Pemrograman MATLAB
Apabila N bukan bilangan bulat positif, maka perhitungan
tidak dilanjutkan, dan digunakan return untuk keluar.
N kita coba-coba bagi dengan 2, 3, 4, 5, … dst. dengan loop.
Apabila satu waktu ditemukan N habis terbagi, berarti N
bukan bilangan prima. Selanjutnya kita langsung keluar loop
dengan break dan menampilkan hasilnya di layar.
Apabila N tidak pernah habis dibagi oleh 2, 3, 4, … , N/2
(sampai loop selesai), maka N pasti bilangan prima.
Selanjutnya kita tampilkan di layar dan program selesai.
Untuk mengetahui apakah N habis terbagi atau tidak, kita bisa
menggunakan fungsi rem(N,pembagi).
% Fungsi untuk menentukan sifat prima suatu bilangan:
% apa_prima.m
%
function apa_prima(N)
% N : bil. bulat positif yang dimasukkan oleh user
if N <= 0 %Jika N bilangan negatif
disp('Masukan harus bilangan bulat positif');
return; %Perhitungan tidak dilanjutkan
end
% Membulatkan N kalau-kalau N bukan bil. bulat
N = round(N);
prima = 1; %Kita anggap N bil prima pd awal program
%flag 'prima' kita set jadi satu.
for i = 2:floor(N/2)
if rem(N,i) == 0
prima=0;
% ternyata N tidak prima,
% flag 'prima' kita set jadi nol
break; % Keluar dari loop
end
end
% Menampilkan hasil:
if prima == 0
disp(N), disp('bukan bilangan prima!');
else
disp(N), disp('adalah bilangan prima!');
end
Simpanlah fungsi ini dengan nama apa_prima.m di dalam
direktori Matlab\work.
M-file dan Pemrograman MATLAB 81
Kita coba jalankan fungsi di atas pada command window:
>> apa_prima(37)
37
adalah bilangan prima!
>> apa_prima(27)
27
bukan bilangan prima!
>> apa_prima(-27)
Masukan harus bilangan bulat positif
Perlu diingat bahwa fungsi apa_prima di atas tidak memiliki
argumen keluaran, karena hasil perhitungan langsung kita
tampilkan di layar menggunakan disp, sehingga hasil tersebut
tidak bisa disimpan dalam variabel.
6.5.6 Statement continue
Statement continue digunakan untuk memaksa program untuk
langsung menuju iterasi berikutnya dari suatu loop, tanpa
mengeksekusi command yang masih ada di bawahnya.
Sebagai contoh, kita akan membuat fungsi untuk mengumpulkan
bilangan tak nol dari suatu vektor.
% Fungsi untuk mengumpulkan bilangan
% tak nol di dalam vektor
% hit_taknol.m
function y = hit_taknol(x)
% x : vektor masukan
% y : vektor berisi bilangan tak nol dari x
y = [];
for i=1:length(x)
if x(i)==0
continue
else
y=[y x(i)];
end
end
Sekarang kita coba:
>> x = [0 0 2 -3.6 0 0 0 3 0 -0.6 10 0 0 0];
82 M-file dan Pemrograman MATLAB
>> y = hit_taknol(x)
y =
2.0000 -3.6000 3.0000 -0.6000 10.0000
6.6 Operator Perbandingan dan Logika
Seperti yang kita lihat pada subbab 6.5 Control Statement, kita
harus bisa menuliskan kondisi dalam bahasa MATLAB untuk
menciptakan percabangan program ataupun loop. Untuk keperluan
ini kita mungkin harus membandingkan dua variabel (sama atau
tidak, lebih besar atau lebih kecilkah?), mengevaluasi apakah suatu
variabel memenuhi satu dari sejumlah syarat, dan sebagainya.
Untuk membandingan dua variabel digunakan operator berikut ini:
Tabel 6. 1
< > lebih kecil, lebih besar
<= >= lebih kecil atau sama dengan, lebih besar atau
sama dengan
== ~= sama dengan, tidak sama dengan
Sementara untuk mengevaluasi logika, digunakan fungsi dan
operator:
Tabel 6. 2
and(A,B) atau A & B operasi logika AND antara A dan B
or(A,B) atau A | B operasi logika OR
xor(A,B) operasi logika XOR
not(A) atau ~A operasi logika NOT pada A
A dan B di sini bisa berupa skalar, vektor, maupun matriks,
asalkan ukuran A dan B sama.
Adapun tabel kebenaran yang digunakan pada setiap operasi logika
tersebut ialah sebagai berikut:
M-file dan Pemrograman MATLAB 83
Tabel 6. 3
A B A&B A|B xor(A,B) ~A
nol nol 0 0 0 1
nol bukan nol 0 1 1 1
bukan nol nol 0 1 1 0
bukan nol bukan nol 1 1 0 0
Perlu diperhatikan bahwa operasi logika memiliki prioritas untuk
dihitung lebih dahulu, kemudian diikuti operasi aritmatika, lalu
operasi perbandingan.
Untuk menambah pemahaman, mari kita praktekkan contoh di
bawah ini di command window:
>> A = [1 2 0 -1 -2]; B = [1 0 0 0 5];
>> C = and(A,B)
C =
1 0 0 0 1
>> D=A|B|C
D =
1 1 0 1 1
>> E = xor(~A,B)
E =
1 0 1 0 1
Sekarang, mari kita mencoba membuat fungsi untuk menentukan
suatu tahun termasuk kabisat atau tidak. Jangkauan tahun yang
bisa dihitung ialah 1900 hingga 2500. Kita ketahui bahwa tahun
kabisat terjadi pada tahun-tahun berkelipatan 4, kecuali tahun akhir
abad; namun untuk tahun akhir abad berkelipatan 400 termasuk
kabisat pula.
% Fungsi untuk mengetahui tahun kabisat atau tidak
% iskabisat.m
function hasil = iskabisat(thn)
% thn : merupakan masukan bilangan bulat positif
% hasil = 1 jika kabisat, 0 jika tidak
if thn<1900 | thn>2500
disp('Tahun yang valid: 1900 - 2500');
hasil=[];
return
end
84 M-file dan Pemrograman MATLAB
if rem(thn,4)==0 & (rem(thn,100)~=0|rem(thn,400)==0)
hasil=1;
else
hasil=0;
end
Pada fungsi tersebut, terdapat dua control statement “ if ”:
if thn<1900 | thn>2500
Berarti jika variabel thn kurang dari 1900 ATAU lebih dari
2500, command di dalam “ if ” tersebut akan dijalankan.
if rem(thn,4)==0 & ...
(rem(thn,100)~=0|rem(thn,400)==0)
Berarti jika variabel thn habis dibagi 4 DAN logika
(rem(thn,100)~=0|rem(thn,400)==0) bernilai 1 (true),
maka command setelah “ if “ akan dijalankan.
Perlu diperhatikan bahwa logika
(rem(thn,100)~=0|rem(thn,400)==0) akan bernilai 1 bila thn
bukan tahun abad (kelipatan 100); ataupun kalau tahun abad
haruslah kelipatan 400.
Sekarang kita bisa coba:
>> iskabisat(2005), iskabisat(1972)
ans =
0
ans =
1
Fungsi ini hanya bisa mengolah masukan skalar. Lalu bagaimana
kalau diinginkan masukan berupa vektor atau matriks? Kita bisa
ubah fungsinya menjadi berikut ini:
% Fungsi untuk mengetahui tahun kabisat atau tidak
% iskabisat.m
function hasil = iskabisat(thn)
% thn : merupakan masukan bilangan bulat positif
% hasil = 1 jika kabisat, 0 jika tidak
if sum(sum(thn<1900 | thn>2500))~=0
disp('Tahun yang valid: 1900 - 2500');
hasil=[];
return
end
M-file dan Pemrograman MATLAB 85
hasil = rem(thn,4)==0 & ...
(rem(thn,100)~=0|rem(thn,400)==0);
Sekarang kita bisa coba untuk menentukan tahun kabisat antara
1980 hingga 1990.
>> iskabisat(1980:1990)
ans =
1 0 0 0 1 0 0 0 1 0 0
86 M-file dan Pemrograman MATLAB
Soal Latihan
1. Buatlah program dengan M-file untuk menghitung volume dan
luas permukaan balok bila diketahui:
panjang = 5, lebar = 3, tinggi = 6,5.
Beri nama program ini dengan prog_balok.m
2. Buatlah suatu fungsi dengan M-file untuk menghitung volume
dan luas permukaan balok dengan spesifikasi:
masukan fungsi : panjang, lebar, dan tinggi balok
keluaran fungsi : volume, dan luas permukaan balok.
Beri nama fungsi ini dengan hitung_balok.m
3. Buatlah suatu fungsi dengan M-file untuk menghitung volume
dan luas permukaan dari suatu prisma segiempat dengan
spesifikasi:
masukan fungsi : panjang dan lebar alas prisma, serta
tinggi prisma
keluaran fungsi : volume, dan luas permukaan prisma
Beri nama fungsi ini dengan hitung_prisma.m
4. Buatlah suatu program untuk menampilkan segitiga Pascal.
Pengguna harus memasukkan jumlah level segitiga yang ingin
ditampilkan melalui command input. Apabila pengguna
menginginkan segitiga 4 level maka akan tampil keluaran:
1
1 1
1 2 1
1 3 3 1
Beri nama program ini dengan prog_pascal.m
5. Buatlah sebuah fungsi untuk menghitung jumlah hari di antara
dua tanggal. Spesifikasi dari fungsi tersebut ialah:
masukan : tanggal, bulan, dan tahun awal, serta tanggal,
bulan, dan tahun akhir.
keluaran : jumlah hari di antara dua tanggal tersebut.
Beri nama fungsi ini dengan hitung_hari.m.
Misalkan kita ingin menghitung jumlah hari antara 2 Januari
2004 hingga 5 November 2006, maka ketikkan:
>> jml_hari = hitung_hari(2,1,2004,5,11,2006)
jml_hari =
1038
BAB 7
ANALISIS DATA
Dalam bab ini, kita akan belajar bagaimana menganalisis dan
memanipulasi data mempergunakan MATLAB, terutama untuk
perhitungan statistik: rentang data, maksimum/minimum, rata-rata,
deviasi, jumlah kumulatif, dan sebagainya. Di MATLAB fungsi-
fungsi statistik semacam ini telah ada dan bisa digunakan secara
fleksibel.
Dalam penjelasan bab ini, x dan y kita misalkan sebagai vektor
(baris ataupun kolom), dan A dan B sebagai matriks mn.
7.1 Maksimum dan Minimum
Nilai maksimum dan minimum diperoleh dengan command
berikut ini:
Tabel 7. 1
max(x) menghitung nilai maksimum dari elemen
vektor x. Jika x bernilai kompleks maka
dihitung max(abs(x))
max(A) menghitung nilai maksimum dari setiap kolom
di matriks A; hasilnya berupa vektor 1 n
max(max(A)) menghitung nilai maksimum dari elemen
matriks A
max(A,B) menghitung matriks berukuran sama dengan A
dan B dengan elemen berisi nilai terbesar di
antara elemen A dan B pada posisi yang sama
min( ... ) sama dengan sintaks max( ... ) di atas, tetapi
untuk mencari minimum
Mari kita praktekkan beberapa contoh untuk menambah
pemahaman terhadap sintaks di atas. Misalkan x ialah data tinggi
badan dari 10 orang, dan A ialah data indeks prestasi (IP) dari 4
mahasiswa dalam 3 semester.
88 Analisis Data
Data tinggi badan (dalam cm)
175 177 173 165 160 170 174 177 168 170
Data IP mahasiswa
Nama IP sem-1 IP sem-2 IP sem-3
Agus 3,3 2,8 3,3
Dedy 3,9 4,0 3,8
Tanjung 3,8 3,5 2,9
Vijay 2,9 3,2 3,1
>> x=[175 177 173 165 160 170 174 177 168 170];
>> A=[3.3 2.8 3.3;
3.9 4.0 3.8;
3.8 3.5 2.9;
2.9 3.2 3.1];
>> max(x)
ans =
177
>> max(A), max(A’)
ans =
3.9000 4.0000 3.8000
ans =
3.3000 4.0000 3.8000 3.2000
>> max(max(A))
ans =
4
Kita bisa melihat bahwa max(x) menghitung tinggi maksimum
dari 10 orang yang ada, max(A) menghitung IP tertinggi pada
setiap semester, sedangkan max(A’) menghitung IP tertinggi dari
setiap mahasiswa. Sementara itu, max(max(A)) menghitung IP
tertinggi yang pernah dicapai mahasiswa selama 3 semester.
Analisis Data 89
7.2 Jumlah dan Produk
Beberapa jenis operasi penjumlahan bisa dilakukan dengan
command sum dan cumsum.
Tabel 7. 2
sum(x) menjumlahkan nilai elemen vektor x
sum(A) menjumlahkan nilai elemen dari setiap kolom
di matriks A; hasilnya berupa vektor 1 n
sum(sum(A)) menjumlahkan nilai semua elemen matriks A
cumsum(x) menghitung vektor berukuran sama dengan x
berisi jumlah kumulatif elemen x; yaitu elemen
kedua ialah jumlah dari elemen pertama dan
kedua dari x, dan seterusnya
cumsum(A) menghitung matriks berukuran sama dengan A
di mana kolom-kolomnya merupakan jumlah
kumulatif dari kolom di A
Sebagai contoh, kita akan definisikan vektor y dan matriks B
sebagai berikut:
1 3
y 1 4 9 16
2 B 4 6
25
5 9
7
8
>> y=[1:5].^2;
>> B=[1:3 ; 4:6 ; 7:9];
>> jml_y = sum(y)
jml_y =
55
>> jml_B = sum(B)
jml_B =
12 15 18
>> total_B = sum(sum(B))
total_B =
45
>> kumulasi_y = cumsum(y)
kumulasi_y =
1 5 14 30 55
>> kumulasi_B = cumsum(B)
kumulasi_B =
1 2 3
5 7 9
12 15 18
90 Analisis Data
Sementara itu, produk (perkalian elemen-elemen) vektor dan
matriks bisa diperoleh dengan cara yang mirip.
Tabel 7. 3
prod(x) mengalikan nilai elemen vektor x
prod(A) mengalikan nilai elemen dari setiap kolom di
matriks A; hasilnya berupa vektor 1 n
prod(prod(A)) mengalikan nilai semua elemen matriks A
cumprod(x) menghitung vektor berukuran sama dengan x
berisi produk kumulatif elemen x; yaitu elemen
kedua ialah perkalian dari elemen pertama dan
kedua dari x, dan seterusnya
cumprod(A) menghitung matriks berukuran sama dengan A
di mana kolom-kolomnya merupakan produk
kumulatif dari kolom di A
Sebagai contoh kita gunakan vektor y dan matriks B seperti
sebelumnya.
>> pdk_y = prod(y)
pdk_y =
14400
>> pdk_B = prod(B)
pdk_B =
28 80 162
>> tot_pdk_B = prod(prod(B))
tot_pdk_B =
362880
>> kumulasi_pdk_y = cumprod(y)
kumulasi_pdk_y =
1 4 36 576 14400
>> kumulasi_pdk_B = cumprod(B)
kumulasi_pdk_B =
1 2 3
4 10 18
28 80 162
7.3 Statistika
Pada subbab sebelumnya, telah disajikan command operasi vektor
dan matriks untuk menghitung maksimum, minimum, jumlah,
Analisis Data 91
serta produk. Sekarang kita akan belajar command untuk analisis
data statistik.
Tabel 7. 4
mean(x) menghitung rata-rata aritmatik dari elemen
vektor x
mean(A) menghitung rata-rata aritmatik dari elemen
setiap kolom di matriks A; hasilnya berupa
vektor 1 n
median( ... ) sama seperti sintaks mean( ... ), tetapi untuk
menghitung median (nilai tengah)
std( ... ) sama seperti sintaks mean( ... ), tetapi untuk
menghitung deviasi standar (simpangan baku)
var( ... ) sama seperti sintaks mean( ... ), tetapi untuk
menghitung variansi
Sebagai contoh, kita gunakan kembali data tinggi badan dan nilai
IP mahasiswa seperti sebelumnya.
>> x=[175 177 173 165 160 170 174 177 168 170];
>> A=[3.3 2.8 3.3;
3.9 4.0 3.8;
3.8 3.5 2.9;
2.9 3.2 3.1];
>> rataan_IP_sem = mean(A)
rataan_IP_sem =
3.4750 3.3750 3.2750
>> rataan_IP_mhs = mean(A')
rataan_IP_mhs =
3.1333 3.9000 3.4000 3.0667
>> rataan_IP_total = mean(mean(A))
rataan_IP_total =
3.3750
>> nilai_tengah = median(x), deviasi = std(x), ...
variansi = var(x)
nilai_tengah =
171.5000
deviasi =
5.4661
variansi =
29.8778
92 Analisis Data
7.4 Sortir
Kita bisa mengurutkan data (sortir) di MATLAB dengan command
berikut ini:
Tabel 7. 5
sort(x) menghitung vektor dengan elemen x telah
tersortir secara ascending (dari kecil ke
besar). Jika x bernilai kompleks maka
dihitung sort(abs(x))
[y,ind] = sort(x) menghitung vektor y berisi sortiran elemen x,
dan vektor ind berisi indeks sehingga
y = x(ind)
[B,Ind] = sort(A) menghitung matriks B berisi sortiran kolom-
kolom matriks A. Setiap kolom pada matriks
Ind berisi indeks seperti halnya kasus vektor
di atas
Mari kita coba command tersebut pada data tinggi badan dan IP
mahasiswa.
Kita urutkan data tinggi badan dari kecil ke besar (ascending).
>> sort(x)
ans =
160 165 168 170 170 173 174 175 177 177
Atau kita urutkan disertai indeks yang menunjukkan nomor urut
elemen pada vektor x sebelum disortir.
>> [y,ind]=sort(x)
y =
160 165 168 170 170 173 174 175 177 177
ind =
5 4 9 6 10 3 7 1 2 8
Untuk mengurutkan tinggi badan dari besar ke kecil (descending).
>> fliplr(sort(x))
ans =
177 177 175 174 173 170 170 168 165 160
Demikian pula untuk mengurutkan elemen matriks: secara
Analisis Data 93
ascending pada kolom per kolom:
>> sort(A)
ans =
2.9000 2.8000 2.9000
3.3000 3.2000 3.1000
3.8000 3.5000 3.3000
3.9000 4.0000 3.8000
Atau secara descending pada kolom per kolom:
>> flipud(sort(A))
ans =
3.9000 4.0000 3.8000
3.8000 3.5000 3.3000
3.3000 3.2000 3.1000
2.9000 2.8000 2.9000
Ataupun melakukan sortir dengan indeks. Perhatikan bahwa
kolom-kolom dalam IND berisi nomor urut elemen pada matriks A
sebelum disortir.
>> [Y,IND]=sort(A)
Y =
2.9000 2.8000 2.9000
3.3000 3.2000 3.1000
3.8000 3.5000 3.3000
3.9000 4.0000 3.8000
IND =
4 1 3
1 4 4
3 3 1
2 2 2
Command fliplr dan flipud telah dibahas pada subbab 3.6 (Tabel
3.3).
7.5 Histogram
Histogram dan diagram batang yang kerap digunakan untuk
menggambarkan data statistik juga bisa ditampilkan dengan
MATLAB dengan command berikut ini:
94 Analisis Data
Tabel 7. 6
hist(x) memplot histogram dari data di x dalam 10
interval
hist(x,n) memplot histogram dari data di x dalam n
interval
hist(x,y) memplot histogram dari data di x dengan
interval yang dinyatakan oleh y. Elemen vektor
y harus terurut secara ascending.
bar(x) memplot diagram batang dari data di x
bar(z,x) memplot diagram batang dari data di x pada
posisi yang didefinisikan oleh z
bar(z,x,’string’) memplot diagram batang dengan property
ditentukan oleh ‘string’, seperti pada Tabel 5.3.
stairs(x) memplot diagram tangga
stairs(z,x) memplot diagram tangga dari data di x pada
posisi yang didefinisikan oleh z
stem(y) memplot data diskrit dari data di y
stem(x,y) memplot data diskrit dari data di y pada posisi
yang didefinisikan oleh x
Pada command hist, bar, dan stairs, data bisa juga disimpan untuk
penggunaan selanjutnya.
Tabel 7. 7 (lanjutan)
[m,y] = hist(x)
membuat histogram dengan 10 interval seragam antara
minimum x dan maximum x. Vektor y berisi 10 nilai antara
min(x) dan max(x) yang terpisah seragam; vektor m berisi
jumlah pada setiap interval. Histogram bisa diplot dengan
bar(y,m,’string’)
Analisis Data 95
[m,y] = hist(x,n) membuat histogram dengan n interval seragam
[m,y] = hist(x,y) membuat histogram dengan interval
didefinisikan oleh vektor y
[xb,yb] = bar(y) membuat diagram batang dari nilai di y.
Diagram bisa diplot dengan plot(xb,yb)
[xb,yb] = bar(x,y) membuat diagram batang dari nilai y dengan
posisi yang didefinisikan oleh x
[xb,yb] = stairs(y) membuat diagram tangga dari nilai di y
[xb,yb] = membuat diagram tangga dari nilai y dengan
stairs(x,y) posisi yang didefinisikan oleh x
Mari kita coba gunakan data tinggi badan yang ada. Pertama, kita
plot menjadi histogram dengan 10 interval.
>> x=[175 177 173 165 160 170 174 177 168 170];
>> hist(x); title(‘Histogram tinggi badan’);
>> xlabel(‘Interval tinggi badan’);
>> ylabel(‘frekuensi’);
Gambar 7. 1 Membuat histogram dengan “hist”
Jika kita hanya menginginkan 4 interval, maka:
>> hist(x,4); ); title(‘Histogram tinggi badan’);
>> xlabel(‘Interval tinggi badan’);
>> ylabel(‘frekuensi’);
96 Analisis Data
Gambar 7. 2 Membuat histogram dengan 4 interval
Perhatikan bahwa histogram di atas menggambarkan distribusi dari
tinggi badan, dikelompokkan dalam sejumlah interval yang
lebarnya seragam.
Sementara itu, untuk menggambar data tinggi badan itu sendiri
dengan diagram batang, caranya mudah:
>> bar(x); title(‘Diagram batang tinggi badan’);
Atau kita bisa juga memplot vektor x tersebut sebagai data diskrit.
>> stem(x)
Analisis Data 97
Gambar 7. 3 Membuat diagram batang dengan “bar”
Gambar 7. 4 Memplot data diskrit dengan “stem”
Sekarang kita coba membuat histogram dan disimpan dalam
variabel dengan command yang ada, kemudian kita plot diagram
batangnya dan beri warna putih.
>> [m,y]=hist(x);
>> subplot(1,2,1); bar(y,m,’w’)
>> xlabel(‘Interval tinggi badan’)
>> ylabel(‘frekuensi’)
98 Analisis Data
Data tadi juga bisa kita plot sebagai diagram tangga berwarna
merah:
>> subplot(1,2,2); stairs(y,m,’r’)
>> xlabel(‘Interval tinggi badan’)
>> ylabel(‘frekuensi’)
Gambar 7. 5
7.6 Analisis Frekuensi : Transformasi Fourier
Analisis frekuensi terhadap suatu data ataupun sinyal umumnya
dilakukan dengan transformasi Fourier. Dengan transformasi ini,
kita bisa mengamati dan mengukur komponen frekuensi berapa
saja yang menyusun data / sinyal tersebut. Untuk melakukan
analisis frekuensi di dalam MATLAB, telah tersedia command “Fast
Fourier Transform” (FFT) sebagai berikut:
Analisis Data 99
Tabel 7. 8
fft(x) menghitung “Transformasi Fourier Diskrit”
dengan metode FFT dari vektor x. Apabila x
berupa matriks, operasi akan dilakukan per
kolom
fft(x,n) menghitung FFT n-titik. Jika panjang x lebih
dari n maka sisanya akan diisi nol; jika panjang
x lebih dari n maka akan dipotong
ifft(X) menghitung invers-FFT dari X
ifft(X,n) menghitung invers-FFT n-titik
X = fft(x) dan x = ifft(X) dihitung dengan formula “Transformasi
Fourier Diskrit” untuk N-titik sebagai berikut:
X k ∑ N
untuk 1 ≤k ≤N
n −1
−j 2 k −1
x(n)e
n1 untuk 1 ≤n ≤N
N
xn ∑ N
n −1
j 2k −1
X (k)e
n1
Sebagai contoh, kita memiliki suatu sinyal seperti berikut ini:
>> clear;
>> Fs = 1000; % frekuensi sampling 1000Hz
>> t = 0:1/Fs:1.5; % durasi sinyal 1,5 detik
>> tone1 = 200;
>> tone2 = 300;
>> tone3 = 450; % 3 frekuensi tone dalam Hz
>> sinyal = cos(2*pi*tone1.*t) + ...
1/2*cos(2*pi*tone2.*t) + 1/3*sin(2*pi*tone3.*t);
Kita bisa lihat bentuk “time-domain” dari sinyal tersebut,
kemudian kita dengarkan:
>> plot(t,sinyal); axis([0 0.2 –1.5 1.5]);
>> xlabel(‘waktu (detik)’); ylabel(‘amplitude’)
>> sound(sinyal,Fs);
100 Analisis Data
Gambar 7. 6 Bentuk “time-domain” dari sinyal
Kemudian kita lihat bentuk “frequency-domain” dari sinyal untuk
mengetahui kandungan frekuensinya:
>> S = fft(sinyal,Fs);
>> plot(abs(S));
>> xlabel(‘frekuensi (Hz)’); ylabel(‘magnitude’)
Gambar 7. 7 Bentuk “frequency-domain” dihitung dengan “fft”
Pada contoh di atas, vektor S, hasil operasi FFT, berisi bilangan
kompleks, sehingga yang diplot adalah “magnitude” dari vektor S
Analisis Data 101
dengan command plot(abs(S)).
Command yang berkaitan dengan bilangan kompleks telah dibahas
pada subbab 2.4, Tabel 2.3.
Perhatikan bahwa hasil plot terlihat simetris kiri-kanan, hal ini
merupakan ciri khas dari transformasi Fourier. Dalam hal ini yang
perlu kita perhatikan ialah plot pada frekuensi 0 s.d. Fs/2 saja,
yaitu 0-500 Hz. Pada rentang ini terlihat 3 komponen frekuensi
yang tajam, yaitu: 200, 300, dan 450 Hz dengan magnitude
masing-masing 500, 250, dan 167. Magnitude ini proporsional
dengan amplituda dari tiga tone komponen sinyal yaitu: 1, 1/2 ,
dan 1/3.
102 Analisis Data
Soal Latihan
1. Berikut ini data pendudukan kanal pada suatu “trunk” (saluran
transmisi antar-sentral) pada setiap jam selama dua belas jam:
Data pendudukan kanal trunk
Waktu Pendudukan Waktu Pendudukan
6:00-7:00 100 12:00-13:00 958
7:00-8:00 350 13:00-14:00 1008
8:00-9:00 824 14:00-15:00 897
9:00-10:00 1056 15:00-16:00 921
10:00-11:00 1525 16:00-17:00 958
11:00-12:00 1247 17:00-18:00 215
Hitunglah dan gambarlah:
a) Maksimum pendudukan per jam dari trunk tersebut
b) Total pendudukan trunk selama 12 jam
c) Mean dan median dari pendudukan per jam selama 12 jam
d) Simpangan baku dan variansi dari pendudukan per jam
selama 12 jam
e) Urutkan data pendudukan trunk tersebut secara ascending
dan descending.
f) Tampilkan data pendudukan trunk tersebut dengan
diagram diskrit (command stem).
g) Tampilkan distribusi nilai pendudukan dengan histogram
warna merah dalam 6 interval.
2. Berikut ini data pengukuran temperatur suatu ruang
penyimpanan yang dilakukan tiga kali selama tiga hari
berturut-turut Dalam setiap seri dilakukan pengukuran per jam
selama 8 jam:
Data pengukuran temperatur (dalam oC)
Waktu Hari ke-1 Hari ke-2 Hari ke-3
9:00 27,0 26,8 27,1
10:00 28,2 28,1 28,8
11:00 29,5 30,3 29,0
12:00 29,6 30,6 29,1
13:00 30,0 30,0 31,2
14:00 30,5 31,0 31,3
15:00 29,8 29,6 30,2
16:00 28,9 27,5 26,8
Analisis Data 103
Hitunglah dan gambarlah:
a) Rata-rata temperatur pada masing-masing hari
b) Rata-rata temperatur pada jam 11:00, 12:00, dan 13:00.
c) Rata-rata temperatur pada hari pertama dan kedua
d) Rata-rata temperatur selama tiga hari pada pukul 9:00-
12:00.
e) Temperatur tertinggi dan terendah selama tiga hari
f) Rata-rata, median, simpangan baku, dan variansi dari
temperatur selama tiga hari tersebut.
g) Histogram dari temperatur selama tiga hari, digambarkan
dalam 4 interval.
3. Keluarkan file suara WAV yang sudah dibuat pada Soal
Latihan bab 5 berisi urut-urutan tone DO-RE-MI-FA-SOL-
LA-TI-DO. Lakukanlah analisis frekuensi dengan
Transformasi Fourier dengan command fft n-titik, di mana n
ialah panjang sinyal WAV tadi. Plot magnitude dari hasil
transformasi tersebut pada rentang frekuensi 0 hingga 1 kHz.
BAB 8
ANALISIS FUNGSI DAN INTERPOLASI
Berbagai fungsi matematis bisa dievaluasi dan dianalisis dengan
berbagai command yang ada di MATLAB. Salah satu fungsi
matematis yang sering digunakan, yaitu polinomial, penanganan
dan evaluasinya akan dibahas pula dalam bagian ini. Berikutnya
akan disajikan juga analisis fungsi, misalkan mencari nol,
maksimum, dan minimum. Di samping itu, interpolasi dan curve-
fitting menggunakan MATLAB akan dibahas pula. Pada bagian
akhir akan dikenalkan “Function Tool, yaitu sebuah tool analisis
fungsi yang ada di MATLAB.
8.1 Polinomial di MATLAB
Suatu polinomial, p(x), berderajat n dinyatakan sebagai sebuah
vektor baris p berukuran n+1. Elemen vektor menunjukkan
koefisien dari polinomial yang diurutkan dari orde tertinggi ke
terendah.
px an x an−1 x ... a1 x a0
n n−1
dinyatakan sebagai:
p = ( an an-1 ... a1 a0 )
Command berikut digunakan untuk menangani polinomial:
106 Analisis Fungsi dan Interpolasi
Tabel 8. 1
polyval(p,x) mengevaluasi polinonial p pada nilai x. x bisa
berupa skalar maupun vektor
poly(x) menghitung vektor sepanjang n+1 yang mewakili
suatu polinomial orde-n. Vektor x sepanjang n
berisi akar-akar dari polinom tersebut
roots(p) menghitung vektor berisi akar-akar dari
polinomial p
conv(p,q) menghitung produk (hasil perkalian) dari
polinomial p dan q. Bisa juga dianggap sebagai
konvolusi antara p dan q
[k,r] = membagi polinomial p dengan q. Hasil
deconv(p,q) pembagian disimpan dalam polinom k dan sisa
pembagian dalam polinom r. Bisa juga dianggap
sebagai dekonvolusi antara p dan q
polyder(p) menghitung vektor sepanjang n berisi turunan
pertama dari polinom p
Misalkan kita memiliki dua polinomial sebagai berikut:
gx 2x 3 5x −1 hx 6x 2 − 7
Dalam MATLAB kedua polinomial ini dinyatakan dengan:
>> g = [2 0 5 –1];
>> h = [6 0 –7];
Untuk mengevaluasi polinomial pada x = 10 kita tuliskan:
>> nilai1 = polyval(g,10), nilai2 = polyval(h,10)
nilai1 =
2049
nilai2 =
593
Namun bisa pula x berbentuk vektor:
>> x = -3:3
x =
-3 -2 -1 0 1 2 3
>> nilai1 = polyval(g,x), nilai2 = polyval(h,x)
nilai1 =
-70 -27 -8 -1 6 25 68
Analisis Fungsi dan Interpolasi 107
nilai2 =
47 17 -1 -7 -1 17 47
Jika kita kalikan kedua polinomial tersebut, akan diperoleh sebuah
polinomial baru:
>> p = conv(g,h)
p =
12 0 16 -6 -35 7
yang mewakili: px 12x 16x − 6x − 35x 7
5 3 2
Akar-akar dari polinomial g(x) dan h(x) bisa kita hitung:
>> akar_g = roots(g), akar_h = roots(h)
akar_g =
-0.0985 + 1.5903i
-0.0985 - 1.5903i
0.1969
akar_h =
1.0801
-1.0801
Perhatikan plot dari kedua polinomial tersebut.
Gambar 8. 1 Plot polinomial g(x) dan h(x)
108 Analisis Fungsi dan Interpolasi
Turunan pertama dan kedua dari g(x) bisa kita hitung pula:
>> g1=polyder(g), g2=polyder(g1)
g1 =
6 0 5
g2 =
12 0
yang masing-masing mewakili
g' x 6x 2 5 dan g'' x 12x
8.2 Nol dari Fungsi
Fungsi matematis bisa dinyatakan dalam bentuk M-file di
MATLAB. Misalkan fungsi
f
x 5x − 6.4 9x x − 0.4
−
x −1.32 0.002 x 3 0.03 x − 0.922
0.005
bisa kita tuliskan pada editor M-file (lihat kembali subbab 6.1)
function y = f(x)
y = (5.*x - 6.4)./((x-1.3).^2 + 0.002) + ...
(9.*x)./(x.^3 + 0.003) - ...
(x - 0.4)./((x-0.92).^2 + 0.005);
Fungsi f didefinisikan menggunakan operator elemen-per-elemen
.* ./ .^ + −(lihat kembali subbab 4.5 dan 4.6), sehingga apabila
fungsi dipanggil dengan argumen vektor maka hasilnya juga
berupa vektor. Semua fungsi MATLAB pada bab ini harus
didefinisikan seperti contoh tersebut.
Fungsi tersebut bisa diplot dengan command plot:
>> x = linspace(0,2); % membuat vektor x
>> plot(x,f(x)); % memplot grafik f(x)
>> grid on;
>> title(‘Fungsi f(x)’);
Atau menggunakan command fplot:
>> fplot(‘f’,[0 2]); % memplot grafik f(x)
Analisis Fungsi dan Interpolasi 109
>> grid on;
>> title(‘Fungsi f(x)’);
Gambar 8. 2 Plot fungsi rasional f(x)
Untuk mencari nol dari fungsi f(x), sama saja dengan mencari
solusi dari f(x) = 0. Nol dari suatu fungsi satu variabel bisa dicari
dengan command fzero. Sementara untuk polinomial gunakanlah
roots seperti pada subbab 8.1. Algoritma yang digunakan pada
fzero bersifat iteratif, dan membutuhkan tebakan awal (initial
guess) yang tidak terlalu jauh dari nol fungsi yang dicari.
Tabel 8. 2
fplot(‘fcn’,lim,’string’)
memplot fungsi fcn pada interval lim dengan property yang
didefinisikan oleh string (lihat Tabel 5.3).
fcn berupa M-file yang berisi definisi fungsi.
lim berupa vektor 2 elemen berisi batas interval xmin dan xmax.
fzero(‘fcn’,x0)
menghitung nol dari fungsi fcn dengan nilai tebakan awal x0.
fzero(‘fcn’,x0,tol)
menghitung nol dari fungsi fcn dengan nilai tebakan awal x0.
tol menentukan toleransi error dari perhitungan pendekatan
yang diinginkan
110 Analisis Fungsi dan Interpolasi
Command zerodemo akan memberikan demonstrasi dari topik ini.
Kita akan menghitung nol dari fungsi f(x) sebagai berikut:
>> x1=fzero(‘f’,0), x2=fzero(‘f’,0.5), x3=fzero(‘f’,2)
x1 =
0.0011
x2 =
0.7320
x3 =
1.2805
Misalkan kita ingin menghitung titik potong dari dua fungsi:
cos 2x dan 5x − 2; atau dengan kata lain mencari solusi dari
persamaan:
sx cos 2x − 5x 2 0
Maka, pertama kita definisikan fungsi cosm.m dalam M-file.
function s = cosm(x)
s = cos(2.*x) – 5.*x + 2;
Kemudian kita plot untuk memudahkan mendapatkan tebakan
awal:
>> fplot(‘cosm’,[-10 10]);
>> grid on;
>> title(‘cos(2x) – 5x + 2’);
Analisis Fungsi dan Interpolasi 111
Gambar 8. 3 Plot fungsi s(x) = cos 2x – 5x + 2
Kita lihat bahwa x = 2 merupakan tebakan awal yang bagus.
>> nol = fzero(‘cosm’,2)
nol =
0.5060
8.3 Minimum dan Maksimum dari Fungsi
Untuk melakukan optimisasi, yaitu mendapatkan solusi optimal,
kita harus mendapatkan maksimum atau minimum dari fungsi pada
suatu interval. Dalam hal ini MATLAB menggunakan metode
numerik untuk menemukan minimum dari suatu fungsi. Algoritma
yang digunakannya iteratif, yaitu suatu proses berulang.
Misalkan kita ingin mencari minimum xmin dari fungsi f(x).
f xmin min f x
x
Metode iteratif ini membutuhkan tebakan awal x0. Dari nilai awal
ini akan diperoleh nilai berikutnya, x1, yang diharapkan semakin
mendekati xmin. Seberapa dekat x1 ke xmin tergantung pada metode
numerik yang digunakan. Proses iterasi ini berlanjut hingga nilai
112 Analisis Fungsi dan Interpolasi
xi yang mendekati dengan akurasi tertentu diperoleh, di mana
|xmin −xi| cukup kecil.
Dalam MATLAB tidak ada command untuk menentukan maksimum
suatu fungsi f(x), namun dalam hal ini bisa digunakan fungsi
g(x) = −f(x) untuk dicari minimumnya.
Tabel 8. 3
fmin(‘fcn’,x1,x2)
menghitung minimum dari fungsi satu variabel fcn pada
interval x1 < x < x2. Jika minimum-lokal tidak ditemukan,
hasilnya ialah nilai x terkecil pada interval tadi.
fminbnd(‘fcn’,x1,x2)
sama dengan command fmin, tetapi untuk MATLAB versi
terbaru.
fmins(‘fcn’,x0)
menghitung minimum dari fungsi multi variabel fcn dengan
tebakan awal berupa vektor x0.
fminsearch(‘fcn’,x0)
sama dengan command fmins, tetapi untuk MATLAB versi
terbaru.
Misalkan kita akan mencari minimum dari fungsi sinus pada
interval 0 ≤x ≤2.
>> minimum_sinus = fmin(‘sin’,0,2*pi)
minimum_sinus =
4.7124
Untuk fungsi yang lebih rumit, misalkan fungsi f(x) pada subbab
8.2, kita bisa temukan minimumnya pada interval 0 ≤x ≤2.
>> minimum_f1 = fmin(‘f’,0,2)
minimum_f1 =
1.2278
Perhatikan bahwa ini hanyalah satu “minimum-lokal” dan belum
tentu merupakan minimum-global dari interval tadi. Jika kita lihat
Gambar 8.2 maka terlihat bahwa minimum global terletak di
interval yang lebih sempit 0 ≤x ≤1:
Analisis Fungsi dan Interpolasi 113
>> minimum_f2 = fmin(‘f’,0,1)
minimum_f2 =
0.9261
Untuk mencari maksimum dari fungsi f(x), terlebih dahulu kita
definisikan fungsi −f(x) dengan M-file, lalu simpanlah sebagai
minusf.m.
function y = minusf(x)
y = -f(x);
Kemudian kita cari minimum dari fungsi tersebut yang merupakan
maksimum dari f(x) :
>> maximum_f = fmin(‘minusf’,0,2)
maximum_f =
0.1144
Perhatikan kembali bahwa ini hanyalah satu “maksimum-lokal”
yang ternyata kebetulan merupakan maksimum-global dari interval
tadi.
Minimum dari Fungsi Multi Variabel
Misalkan kita definisikan suatu fungsi dua variabel:
x1 x 2
g x1 , x2 x1 x 2 −
2 2
− sin x1
4
Kita tuliskan dalam M-file gx1x2.m
function g = gx1x2(x)
g = x(1).^2 + x(2).^2 – 0.25.*x(1).*x(2) – sin(x(1));
Kemudian kita coba plot fungsi ini beserta konturnya (penjelasan
plot kontur lihat kembali subbab 5.3):
>> x=linspace(-1,1,50); % menciptakan vektor x
>> % asumsikan y = x
>> for i = 1:50 % menghitung gx1x2 pada setiap titik
for j = 1:50
Z(i,j) = gx1x2([x(i) x(j)]);
end
end
114 Analisis Fungsi dan Interpolasi
>> meshc(x,x,Z); % plot grafik 3-D plus kontur
Gambar 8. 4 Plot permukaan dan kontur dari fungsi dua variabel
Dari gambar tersebut, kita coba tebakan awal pada titik (1,0):
>> minimum_gx1x2 = fmins(‘gx1x2’,[1,0])
minimum_gx1x2 =
1.0e-004 *
0.1467 -0.4034
8.4 Interpolasi
Pada fungsi yang memiliki sejumlah titik terbatas, dimungkinkan
untuk menentukan titik-titik perantaranya dengan interpolasi. Cara
termudah untuk menghitungnya ialah dengan menggunakan
interpolasi linier untuk menghubungkan dua titik yang berdekatan.
Command interp1 menggunakan algoritma khusus untuk
interpolasi titik-titik data yang terpisah secara seragam. Untuk
command ini, kita harus tambahkan tanda asteris ‘*’ di depan
nama metoda yang diinginkan, misalkan
interp(x,y,xx,’*nearest’).
Analisis Fungsi dan Interpolasi 115
Tabel 8. 4
yy = interp1(x,y,xx)
menghitung vektor yy yang panjangnya sama dengan vektor
xx. Dalam hal ini yy fungsi dari xx merupakan interpolasi
dari y fungsi dari x. Vektor x harus diurutkan secara
ascending / descending
interp1(x,y,xx,’string’)
menghitung interpolasi 1-dimensi; string menunjukkan
metode yang digunakan, yaitu:
linear interpolasi linier
nearest interpolasi “nearest-neighbor”
spline interpolasi “cubic-spline”
cubic interpolasi kubik, membutuhkan jarak pisah
seragam pada x
Apabila string tidak dituliskan, maka digunakan interpolasi
linier. Untuk semua metode tersebut, x harus diurutkan
ascending / descending.
interp1q(x,y,xx)
bekerja seperti interp1 namun lebih cepat untuk titik-titik
data yang terpisah tak seragam. x, y, dan xx harus berupa
vektor kolom.
Misalkan kita memiliki data tekanan udara dalam suatu ruang
tertutup yang diukur pada jam-jam tertentu sebagai berikut:
>> t = [0 2 3 5 8.5 10 12];
>> pres = [660 900 400 300 500 50 300];
Sekarang kita interpolasi dengan beberapa metode dan kita plot
pada satu gambar sekaligus:
>> tt = linspace(0,12,100);
>> PP1 = interp1(t,pres,tt,’*linear’);
>> PP2 = interp1(t,pres,tt,’*cubic’);
>> PP3 = interp1q(t’,pres’,tt’);
>> figure;
>> plot(t,pres,’k*’,tt,PP1,’k-‘,tt,PP2,’k:’, ...
tt,PP3,’k--’)
>> grid on;
>> xlabel(‘waktu (jam)’), ylabel(‘Pressure’)
>> legend(‘data’,’linier’,’kubik’,’interp1q’)
>> title(‘Perbandingan metode interpolasi’
116 Analisis Fungsi dan Interpolasi
Gambar 8. 5 Perbandingan hasil interpolasi dengan tiga metode
8.5 Curve-Fitting
Pencocokkan kurva (curve-fitting) yang akan dibahas di sini ialah
pencocokkan titik-titik data dengan suatu fungsi polinomial
dengan metode pendekatan kuadrat terkecil (least squares
approximation).
Tabel 8. 5
polyfit(x,y,n)
menghitung vektor berisi koefisien polinomial orde-n yang
mendekati titik-titik data di ( xi , yi )
[p,E] = polyfit(x,y,n)
menghitung vektor polinomial p dan matriks E yang bisa
digunakan oleh command polyval untuk mengestimasi error.
Mari kita coba dekati data tekanan udara seperti contoh
sebelumnya dengan polinomial orde tiga, empat, dan lima.
>> t = [0 2 3 5 8.5 10 12];
>> pres = [660 900 400 300 500 50 300];
Analisis Fungsi dan Interpolasi 117
>> p3 = polyfit(t,pres,3)
p3 =
0.5857 -6.9967 -38.3200 727.0393
>> p4 = polyfit(t,pres,4);
p4 =
-0.3022 7.8645 -60.4717 77.6181 704.1170
>> p5 = polyfit(t,pres,5);
p5 =
1.0e+003 *
0.0006 -0.0183 0.1908 -0.8055 1.0783 0.6648
Polinomial yang diwakili oleh p3, p4, dan p5 ialah:
p3 x 0,6x 3 − 7,0x 2 − 38,3x 727,0
p 4 x −0,3x 4 7,9x 3 − 60,5x 2 77,6x 704,1
p5 x 0,6x 5 −18,3x 4 190,8x 3 − 805,5x 2 1078,3x 664,8
Berikutnya kita plot data dan ketiga kurva polinomial tersebut
untuk dibandingkan.
>> tt = linspace(0,12,100);
>> kurva_p3 = polyval(p3,tt);
>> kurva_p4 = polyval(p4,tt);
>> kurva_p5 = polyval(p5,tt);
>> figure;
>> plot(t,pres,’ko’,tt,kurva_p3,’k-‘, ...
tt,kurva_p4,’k:’,tt,kurva_p5,’k--’)
>> grid on;
>> xlabel(‘waktu (jam)’), ylabel(‘Pressure’)
>> legend(‘data’,’orde-3’,’orde-4’,’orde-5’)
>> title(‘Perbandingan pendekatan polinomial’)
118 Analisis Fungsi dan Interpolasi
Gambar 8. 6 Perbandingan curve-fitting polinomial orde 3, 4, dan 5
8.6 Function Tool
Di dalam MATLAB telah terdapat perangkat (tool) untuk
menggambar dan menganalisis fungsi secara praktis yang dikenal
dengan “Function Tool”. Untuk membuka perangkat ini, dari
command window bisa kita ketikkan:
>> funtool
dan akan muncul tiga window berikut ini:
Analisis Fungsi dan Interpolasi 119
Figure 1 berisi plot Figure 2 berisi plot
dari f(x) dari g(x) koefisien “a”
fungsi f(x) dan g(x)
dideskripsikan di sini
batas-batas plot kurva
f(x) dan g(x)
Figure 3 berfungsi
sebagai papan kunci
Gambar 8. 7 Tiga window pada Function Tool
Berbagai operasi fungsi bisa kita lakukan dengan mengklik
berbagai tombol yang ada di Figure3, misalkan:
120 Analisis Fungsi dan Interpolasi
Tabel 8. 6
dx
Analisis Fungsi dan Interpolasi 121
Soal Latihan
1. Nyatakanlah polinomial berikut dalam bentuk vektor baris:
10 2 1
px x 2 −1 qx x 4 − x
9 9
3131
rx x2 x x3 − x 2
x
2 2 2 2
2. Evaluasilah ketiga polinomial pada no.1 tersebut pada nilai-
nilai x = -1,5 , -1,2 , -0,9 , ... , 1,2 , 1,5
3. Buatlah plot dari ketiga polinomial pada no.1 tersebut pada
rentang: -1,5 ≤x ≤1,5. Buatlah inkremen x cukup kecil
agar kurva terlihat mulus.
4. Hitunglah nol, minimum, dan maksimum dari fungsi rasional
berikut ini pada rentang -10 ≤x ≤10
x −1
F x 2 1
x
5. Hitunglah minimum dan maksimum dari fungsi dua variabel
berikut ini pada rentang -2 ≤x ≤2, -2 ≤y ≤2
G x, y sin x sin y sin xy
6. Berikut ini data distribusi pemakaian suatu telepon selama
terakhir.
sebulan
Distribusi pemakaian telepon
Waktu pemakaian telepon (menit) Frekuensi
0 11 185 8
1 12 130 6
2 13 101 4
3 14 72 3
4 15 54 2
5 16 40 2
6 17 29 1
7 18 22 1
8 19 17 1
9 20 11 1
10 10
122 Analisis Fungsi dan Interpolasi
Plot data distribusi ini dan dekatilah dengan dua metode
interpolasi!
7. Misalkan terdapat tiga polinomial sebagai berikut:
mx Ax B n x Cx 2 Dx E
k x Fx 3 Gx 2 Hx I
Cocokkanlah titik-titik data pada no.6 dengan kurva-kurva
persamaan eksponensial berikut ini:
M
x em x exp Ax exp B
N x e n x exp
Cx 2 expDxexp E
K x e k x exp
Fx Gx 2 expHxexpI
3
exp
- Hitunglah nilai A, B, C, .. , I dengan command polyfit.
- Plot titik-titik data beserta ketiga kurva tersebut di dalam
satu gambar.
BAB 9
PERHITUNGAN INTEGRAL
Solusi numerik dari integral terbatas bisa dihitung secara efisien di
MATLAB. Pertama, kita akan pelajari perhitungan integral dengan
berbagai metode numerik. Berikutnya, kita kembangkan ke
perhitungan integral lipat-2 dan lipat-3.
9.1 Menghitung Integral dengan Metode Numerik
Integral terbatas bisa diselesaikan secara numerik dengan
MATLAB, yaitu:
q ∫f xdx
a
Terdapat sejumlah metode perhitungan integral secara numerik,
misalkan: trapezoid, kuadratur, dll.
124 Perhitungan Integral
Tabel 9. 1
trapz(x,y)
menghitung integral dari y sebagai fungsi dari x. Vektor x
dan y panjangnya harus sama. Nilai elemen dalam x
sebaiknya disortir
trapz(x,A)
menghitung integral dari setiap kolom di A sebagai fungsi
dari x; hasilnya berupa vektor baris berisi hasil integrasi.
Jumlah kolom A harus sama dengan panjang x.
quad(‘fcn’,a,b)
menghitung aproksimasi dari integral fungsi fcn pada interval
a ≤ x ≤ b. Fungsi fcn harus didefinisikan terlebih
dahulu dalam M-file.
quad(‘fcn’,a,b,tol)
menghitung aproksimasi integral dari fcn dengan toleransi
kesalahan sebesar tol.
quad(‘fcn’,a,b,tol,trace,pic)
menghitung aproksimasi integral dari fcn dengan toleransi
tol. Jika trace tidak nol, maka grafik yang mengilustrasikan
integral akan diplot. Hasil integrasi dievaluasi pada pic. Kita
bisa memberi nilai nol pada tol dan trace dengan matriks
kosong [ ].
quad8( ... )
sama dengan command quad, tetapi menghitung dengan
akurasi yang lebih tinggi.
quadl( ... )
sama dengan command quad8( ... ), namun untuk MATLAB
versi terbaru.
Sebagai contoh, kita hitung integral berikut ini dengan metode
numerik:
2
−x 3
∫e dx
0
>> x = linspace(0,2,50); % definisikan vektor x
>> y = exp(-x.^3); % hitung nilai y
>> integral = trapz(x,y)s % integralkan !
integral =
0.8821
Dengan command quad, kita terlebih dahulu harus mendefinisikan
fungsi dalam M-file:
Perhitungan Integral 125
function y = myfun(x)
y = exp(-x.^3);
Kita hitung integral tersebut dengan toleransi yang berbeda:
>> format long; % format bilangan “long”
>> int_1 = quad(‘myfun’,0,2,0.001), ...
int_2 = quad(‘myfun’,0,2,0.00001)
int_1 =
0.89309707589214
int_2 =
0.89295225387894
Kita bandingkan akurasinya dengan quad8:
>> int_3 = quadl(‘myfun’,0,2)
int_3 =
0.89295351461757
>> format short; % mengembalikan format ke “short”
Ini adalah hasil paling akurat yang bisa diperoleh MATLAB.
9.2 Integral Lipat-2
Kita bisa menghitung integral terbatas lipat-2 dengan
menyelesaikan integralnya satu per satu menggunakan command
quad.
Misalkan kita ingin menghitung integral berikut ini:
∫ ∫e
1 1
− x3 − y
dydx
0 0
Pertama, kita buat M-file untuk fungsi ini:
function z = fungsiku(x,y)
z = exp(-x.^3-y);
Kedua, kita hitung integral-integral pada arah y untuk x yang tetap:
>> x = linspace(0,1,50); % definisikan nilai x
126 Perhitungan Integral
>> for i = 1:50 % hitung integral unt setiap x(i)
integral(i) = quad(‘fungsiku’,0,1,[],[],x(i));
end
Sekarang, kita memiliki 50 integral pada arah y. Ketiga, kita
hitung integral arah x, misalkan dengan trapz.
>> Integral2 = trapz(x,integral)
Integral2 =
0.5105
Cara lain yang lebih praktis untuk menghitung integral lipat-2
ialah menggunakan command berikut ini:
Tabel 9. 2
dblquad(‘fcn’,xmin,xmax,ymin,ymax,tol)
menghitung integral lipat-2 untuk fungsi dua variabel fcn
pada area segiempat xmin ≤x ≤xmax, ymin ≤y ≤ymax.
Untuk contoh integral di atas:
>> Integral_dobel = dblquad(‘fungsiku’,0,1,0,1)
Integral_dobel =
0.5104
Untuk mendapatkan gambaran dari fungsi tersebut, kita ketikkan:
>> [X,Y] = meshgrid(x,x);
>> Z = fungsiku(X,Y);
>> mesh(X,Y,Z)
Perhitungan Integral 127
Gambar 8. 1 Plot fungsi exp(-x3-y) dengan domain [0,1][0,1]
9.3 Integral Lipat-3
Serupa dengan integral lipat-2, integral lipat-3 bisa kita selesaikan
setahap demi setahap. Misalkan untuk integral berikut ini kita
simpan dalam M-file:
∫∫∫
2 2 2
2 2 2
x y z dzdydx
−2 −2 −2
function w = funxyz(x,y,z)
w = sqrt(x.^2 + y.^2 + z.^2);
Kita akan selesaikan integral tersebut dengan metode yang berbeda
dengan sebelumnya, yaitu menggunakan nested-for:
Pertama, kita definisikan batas-batas nilai x, y, dan z:
>> x = linspace(-2,2,50); % definisikan nilai x
>> y = x; % definisikan nilai y
>> z = x; % definisikan nilai z
128 Perhitungan Integral
>> int_w = 0;
>> for i = 1:length(x)-1
X = (x(i)+x(i+1))/2;
dX = x(i+1)-x(i);
for j = 1:length(y)-1
Y = (y(j)+y(j+1))/2;
dY = y(j+1)-y(j);
for k = 1:length(z)-1
Z = (z(k)+z(k+1))/2;
dZ = z(k+1)-z(k);
int_w = int_w + funxyz(X,Y,Z)*dX*dY*dZ;
end
end
end
>> int_w
int_w =
122.9346
Cara lain yang lebih praktis ialah menggunakan command berikut
ini:
Tabel 9. 3
triplequad(‘fcn’,xmin,xmax,ymin,ymax,zmin,zmax,tol)
menghitung integral lipat-3 untuk fungsi tiga variabel fcn
pada area balok xmin ≤x ≤xmax, ymin ≤y ≤ymax, zmin
≤z ≤zmax, dengan toleransi kesalahan sebesar tol.
Untuk contoh integral di atas, kita hitung dengan toleransi 0,001:
>> Integral_tripel = triplequad(‘funxyz’, ...
-2,2,-2,2,-2,2,0.001)
Integral_tripel =
122.9577
Perhitungan Integral 129
Soal Latihan
1. Hitunglah integral terbatas berikut ini dengan metode
trapezoid dan kuadratur:
2
y 10∫ 100 −x dx
−10
Bandingkan hasilnya dengan luas setengah lingkaran, yang
merupakan bentuk area yang dibatasi persamaan tersebut:
y 50
2. Hitunglah integral lipat-2 berikut ini:
∫ ∫10−2x
4 5
2 2
−y dydx
−4−5
3. Hitunglah integral lipat-3 dari fungsi tiga variabel berikut ini:
w x, y, z x 2 xy yz z 2
pada batas-batas -1 ≤x ≤1, -1 ≤y ≤1, -1 ≤z ≤1.
DAFTAR PUSTAKA
Pärt-Enander, E. dan Sjöberg A., The Matlab 5 Handbook,
Addison-Wesley, 1999.
Proakis, J.G. dan Manolakis, D.G., Digital Signal Processing:
Principles, Algorithms and Applications, Macmillan, 1996.
[Link]/support
[Link]/calculus/tutorials/complex
LAMPIRAN 1
REFERENSI CEPAT
Berikut ini ringkasan command, sebagian telah dijelaskan pada isi
buku, dan selebihnya bisa dieksplorasi sendiri dengan bantuan
help.
Editing dan Kunci-kunci Khusus
↑atau Ctrl-P dan melihat kembali command yang pernah
↓atau Ctrl-N diketik
← atau Ctrl-B bergeser satu karakter ke kiri
→ atau Ctrl-F bergeser satu karakter ke kanan
Ctrl-L atau Ctrl- bergeser satu kata ke kiri
←Ctrl-R atau Ctrl- bergeser satu kata ke kanan
→Ctrl-A atau Home bergeser ke awal baris
Delete atau BackSpace menghapus karakter
Ctrl-K menghapus hingga akhir baris
Ctrl-C menghentikan proses/kalkulasi yang sedang
berjalan
Command Sistem Dasar
exit, quit keluar dari MATLAB
diary mencatat sesi dalam diary
save menyimpan pekerjaan di ke dalam file
load mengeluarkan kembali pekerjaan dari dalam file
type, dbtype daftar file
what, dir, ls daftar isi dari direktori
cd mengubah direktori
pwd melihat direktori saat ini
Help dan Demonstrasi
help memunculkan help dari topik tertentu
lookfor mencari teks
expo, demo program demonstrasi
whatsnew daftar fitur-fitur baru
info informasi umum
Variabel
who, whos daftar variabel yang aktif
clear membersihkan variabel
size, length ukuran matriks dan vektor
exist eksistensi
format mengatur format keluaran
134 Referensi Cepat
Konstanta dan Variabel Standar
ans jawaban terakhir yang tak tersimpan ke variabel
pi = 3.141 592 653 589 79
eps akurasi relatif
realmax, realmin bilangan terbesar dan terkecil
inf tak hingga, didefinisikan sebagai 1/0
NaN not-a-number, misalkan 0/0
i, j unit imajiner, √-1
nargin, nargout jumlah argumen masukan dan keluaran
Pencatat waktu
flops jumlah flop (operasi floating point)
tic, toc, etime menghidupkan dan mematikan pencatat waktu
clock, date waktu dan tanggal saat ini
cputime waktu sejak MATLAB dimulai
Fungsi Matematik
Fungsi elementer:
abs nilai absolut
sign fungsi signum
sqrt akar kuadrat
pow2 kuadrat
exp fungsi eksponensial
log, log2, log10 fungsi logaritmik
sin, cos, tan, cot, sec, csc fungsi trigonometrik
asin, acos, atan2, atan, inversi fungsi trigonometrik
acot, asec, acsc
sinh, cosh, tanh, coth, fungsi hiperbolik dan invers-hiperbolik
asinh, acosh, atanh, acoth,
sech, csch, asech, acsch
Fungsi matematika lanjut:
legendre fungsi Legendre
bessel, bessely fungsi Bessel
gamma, gammaln, gammainc fungsi Gamma
beta, betaln, betainc fungsi Beta
expint integral eksponensial
erf, erfinv, erfc, erfcx error-function
ellipke, ellipj integral eliptik
Transformasi koordinat:
cart2pol, pol2cart kartesian dan polar
cart2sph, sph2cart kartesian dan bola
Referensi Cepat 135
Operasi Bilangan Bulat dan Floating Point
round, fix, floor, ceil pembulatan
rat pendekatan ke bilangan rasional
rats mengubah bilangan rasional ke string
rem sisa pembagian
gcd faktor pembagi terbesar
lcm kelipatan pengali terkecil
Bilangan Kompleks
real, imag komponen riil dan imajiner
conj konjugasi
angle sudut fase
unwrap mengatur kembali argumen sudut
cplxpair pasangan kompleks
Vektor dan Matriks
: operator indeks
linspace, logspace pembangkit vektor
eye matriks identitas
ones, zeros matriks satuan dan matriks nol
[] matriks kosong
rand, randn matriks random
diag matriks diagonal
triu, tril matriks segitiga
fliplr, flipud, rot90, reshape membentuk-ulang matriks
hilb, invhilb, toeplitz, compan, matriks-matriks khusus
gallery, hadamard, hankel,
magic, pascal, rosser, vander,
wilkinson
Operasi Matriks
+ − penjumlahan dan pengurangan
* .* cross, dot, kron perkalian
/ \ ./ .\ pembagian dan pembagian terbalik
‘ .’ transposisi, konjugasi
^ .^ pangkat
>, <, >=, <=, ==, ~= operator pembandingan
and, or, not, operator logika
&, |, ~, xor
136 Referensi Cepat
Fungsi Matriks
det, trace, rank determinan, trace, dan rank
inv, pinv invers dan pseudo-invers
orth, null basic subspaces
subspace sudut antara subspaces
expm, logm, sqrtm, funm, fungsi-fungsi matriks
polyvalm
size, length ukuran dan panjang matriks / vektor
any, all, isnan, isinf, isieee, fungsi logika
issparse, isstr, isempty, finite
Antarmuka dengan Pengguna
disp memunculkan nilai atau teks di command
window
input input dari keyboard
ginput membaca koordinat
pause eksekusi berhenti sementara
waitforbuttonpress menunggu aksi dari pengguna
format format keluaran di command window
menu mengeluarkan menu dengan pilihan
lasterr memunculkan pesan error terakhir
Grafik
Grafik 2-D dan 3-D:
plot plot grafik 2-dimensi
plot3 plot garis dalam 3-dimensi
fplot plot fungsi
subplot membagi figure yang ada menjadi subplot
errorbar plot grafik dengan error-bar
comet, comet3 plot beranimasi, 2-D, 3-D
polar plot dalam koordinat polar
semilogx, semilogy, plot logaritmik
loglog
quiver, feather, grafik bilangan kompleks
compass, rose
stem plot data diskrit
hist, bar, stairs plot histogram, diagram batang dan tangga
Mengatur grafik:
figure menciptakan atau memunculkan suatu figure
clf membersihkan figure
hold menahan plot yang ada agar tidak hilang tertimpa
plot baru
subplot membagi figure yang ada menjadi subplot
clc membersihkan tampilan command window
Referensi Cepat 137
home mengembalikan kursor ke pojok kiri-atas
axis mengatur sumbu plot
zoom memperbesar / memperkecil (untuk grafik 2-D)
grid memunculkan / menghilangkan grid
title, xlabel, menuliskan berbagai teks di dalam plot
ylabel, zlabel
text menuliskan teks di manapun di dalam plot
gtext menempatkan teks dengan mouse
ginput membaca koordinat di dalam plot
rbbox memindahkan suatu area segi empat
hidden memperlihatkan / menyembunyikan permukaan
view mengatur posisi dan sudut penglihatan
Plot permukaan dan kontur:
contour plot kontur
contour3 plot kontur dalam ruang 3-D
clabel memberi tanda pada garis kontur
meshgrid membuat jalinan titik untuk plot 3-D
cylinder, sphere grid untuk geometri silinder dan bola
surf plot permukaan (surface)
mesh plot mesh
meshc, meshz, waterfall plot mesh dengan garis referensi
surfl, surfc, surfnorm plot permukaan dengan pencahayaan
khusus, kontur, dan garis normal
pcolor plot permukaan dilihat dari atas
fill, fill3 mengisi poligon
slice plot fungsi tiga variabel
Suara
sound membunyikan suara
wavwrite, wavread menulis dan membaca file .WAV
Pemrograman
Conditional statements:
if kondisi if kondisi if kondisi_1
command command_A command_1
end else elseif kondisi_2
command_B command_2
end elseif kondisi_3
command_3 .
..
end
138 Referensi Cepat
switch nama_variabel
case { kondisi_1, kondisi_2, ... }
command_1
case { kondisi_A, kondisi_B, ... }
command_2
case { kondisi_X, kondisi_Y, ... }
command_3
...
default
command
end
Loop:
for variabel = awal : inkremen : akhir
command
end
while kondisi
command
end
Lain-lain:
% penanda komentar
break keluar dari suatu loop
return keluar dari program
continue melanjutkan loop tanpa menjalankan command di
bawahnya
global mendeklarasikan variabel global
nargin jumlah argumen input
nargout jumlah argumen output
Analisis Data dan Statistik
max, min maksimum dan minimum
sum, cumsum jumlah dan jumlah kumulatif
prod, cumprod produk dan produk kumulatif
diff, gradient, del2 difference
mean, median rata-rata dan median
std deviasi standar
var, cov variansi dan kovariansi
skew, kurt skewness dan kurtosis
corrcoef matriks korelasi
sort sortir
hist, bar, stairs histogram, diagram batang dan tangga
stem plot data diskrit
fft, ifft transformasi Fourier
Referensi Cepat 139
Analisis Fungsi dan Interpolasi
fzero nol dari fungsi
fmin, fminbnd minimum dari fungsi satu variabel
fmins, fminsearch minimum dari fungsi multi variabel
interp1, interp1q interpolasi
interpft interpolasi Fourier
spline interpolasi spline
Polinomial dan Curve-Fitting
polyval, polyvalm mengevaluasi polinomial
conv, deconv konvolusi, perkalian polinomial
residue menghitung residu
polyder turunan pertama dari fungsi polinomial
poly polinomial karakteristik
compan companion matrix
polyfit aproksimasi polinomial
Integral
trapz, quad, quad8, menghitung integral terbatas
quadl
dblquad menghitung integral terbatas lipat-2
triplequad menghitung integral terbatas lipat-3
LAMPIRAN 2
PENGENALAN BILANGAN KOMPLEKS
Bilangan kompleks yang merupakan perluasan dari bilangan riil,
mengandung semua akar-akar dari persamaan kuadrat. Jika kita
definisikan i sebagai solusi dari persamaan x2 = -1, atau dengan
kata lain:
i : −1
maka himpunan semesta bilangan kompleks C dinyatakan dalam
bentuk standar sebagai:
a ib | a,b ∈ R
Kita biasa menggunakan notasi z = a + ib untuk menyatakan
bilangankompleks. Bilangan a disebut komponen riil dari z
(Re z), sementara b disebut komponen imajiner dari z (Im z).
Dua bilangan kompleks dikatakan sama jika dan hanya jika
komponen riilnya sama dan komponen imajinernya juga sama.
Kita menggambarkan bilangan kompleks dengan mengasosiasikan
z = a + ib dengan titik (a,b) pada bidang kompleks.
Im
z = a + ib
b
Re
a
Operasi Dasar
Operasi dasar dari bilangan kompleks didefinisikan berikut ini:
a ib c id a c ib d
142 Pengenalan Bilangan Kompleks
a ib − c id a − c ib − d
a ibc id ac − bd ibc ad
a ib a ib c − id ac bd
i
bc − ad c id c id c − id c2 d 2
c2 d 2
Ketika membagi a + ib dengan c + id , kita merasionalkan
penyebut mengingat:
c id c − id c 2 − icd icd − i 2 d 2 c 2 d 2
Bilangan c + id dan c – id disebut konjugat kompleks.
Im
z = c + id
d
Re
c
-d
z* = c - id
Jika z = c + id , kita gunakan notasi z* untuk c – id.
Ditinjau sebagai vektor dalam bidang kompleks, z = a + ib
memiliki magnitude:
z a 2 b 2
Magnitude disebut juga modulus atau nilai absolut. Perlu diingat
2
bahwa: zz* z
Contoh:
2 3i2 − 3i 4 − 6i 6i − 9i 2 4 9 13
2 3i 2 − 3i 4 9 13
Pengenalan Bilangan Kompleks 143
Bentuk Polar
Untuk z = a + ib , kita dapatkan:
a r cos b r sin
Im
z = a + ib
b
r
Re
a
dan kita dapatkan pula:
r z a 2 b 2
b
arctan a
Kemudian, z r cos i ⋅r sin
Dengan persamaan Euler:
ei cos i sin kita dapatkan bentuk
polar:
z re i
Di sini, r disebut magnitude dari z dan disebut argumen
dari z (arg z). Nilai argumen ini tidak unik; kita bisa tambahkan
kelipatan bulat dari 2ke dalam tanpa mengubah z.
Kita definisikan Arg z, yaitu nilai prinsipil dari argumen yang
berada dalam selang -< Arg z ≤. Nilai prinsipil ini unik untuk
setiap z tetapi menciptakan diskontinuitas pada sumbu riil negatif
ketika meloncat dari ke -. Loncatan ini disebut branch cut.
Contoh:
ei cos i sin −1
i/ 2
3e 3 cos i sin 3i
2 2
144 Pengenalan Bilangan Kompleks
i/ 6
− 2e −2cos i sin − 3 − i
66
Perkalian dan pembagian bilangan kompleks dalam bentuk polar
i 1 i 2
menjadi lebih mudah. Jika z1 r1e dan z 2 r2 e maka:
i1 2
z1 z 2 r1 r2 e
z1 r1 ei − 1 2
z 2 r2
Ji i −i
ka z re maka z* re , dan juga zz* re
i
re r −i 2
Contoh:
Untuk menghitung 1 i , kita terlebih dahulu bisa menuliskan
8
1 i dalam bentuk polar sebagai 2e i / 4 , kemudian:
2e 2 e
i/ 4 88 i8/ 4
16ei2 16
Akar-akar dari Satu
Persamaan
zn 1
memiliki n-buah solusi berbentuk kompleks, disebut akar pangkat-
n dari satu. Kita ketahui bahwa akar dari persamaan tersebut
memiliki magnitude 1.
i
Sekarang misalkan z e , maka
e 1 ⇔ e e
i n in i 2k
⇔ n 2k ⇔ 2k
n
e e
i n in
, dengan persamaan Euler, menghasilkan formula
de Moivre:
cos i sin n cos n i sin n
Pengenalan Bilangan Kompleks 145
Sehingga akar pangkat-n dari satu memiliki bentuk:
2 k
i
z e n
Terdapat n buah akar yang berbeda, di mana akar-akar tersebut
terdistribusi merata pada lingkaran satuan dalam bidang kompleks.
Contoh:
3
Kita akan menghitung 1.
3
1 e i 2k 1/ 3
e
i 2k / 3
k = -1, 0, 1
untuk k = -1 diperoleh:
−i2/ 3 2 2 1 1
e cos 3 − i sin 3 −
2 2 − i 3
untuk k = 0 diperoleh:
e0 1
untuk k = 1 diperoleh:
i 2 / 3 2 2 1 1
e cos 3 i sin 3 −2 i2 3
Bila kita gambarkan pada lingkaran satuan di bidang kompleks:
Im
1 1
−22 i 3
120o Re
o
120
120o 1
1 1
− − i 3
2 2
5
Sekarang kita akan menghitung solusi dari z 32 .
z 5 32 32ei 2 k 1/ 5
321/ 5 ei 2
k / 5
untuk k = -2, -1, 0, 1, 2
146 Pengenalan Bilangan Kompleks
untuk k = -2, diperoleh:
−i 4 / 5 4 4
z1 2e 2 cos 5 − i sin 5 −1,618 − 1,176i
untuk k = -1, diperoleh:
−i 2 / 5
2 2
z 2 2e 2cos 55 − i sin 0,618 − 1,902i
untuk k = 0, diperoleh:
z 3 2e 0 2
untuk k = 1, diperoleh:
i 2 / 5 2 2
z 4 2e 2cos i sin 0,618 1,902i
55
untuk k = 2, diperoleh:
i 4 / 5 45 45
z 5 2e 2 cos i sin −1,618 1,176i
Digambarkan dalam bidang kompleks:
Im
Re
PROFIL PENULIS
Nama : Teguh Widiarsono
Alamat : Johar Baru IVA Gg.L no.1A, Johar Baru, Jakarta Pusat,
10560
Email : teguh98047@[Link]
Telepon / HP : 021 – 421 3852 / 0815 619 2813
Tempat / Tanggal Lahir : Purwokerto / 2 Desember 1980
Profil Singkat :
Penulis bernama lengkap Teguh Widiarsono, lahir di Purwokerto, 1980. Penulis
menamatkan S1 (Sarjana) di ITB pada 2002, bidang keahlian Teknik
Telekomunikasi, Departemen Teknik Elektro, dengan predikat Cum-Laude.
Tahun 2004, penulis menyelesaikan S2 (Magister Teknik) di ITB, dengan bidang
keahlian Sistem Informasi Telekomunikasi, Departemen Teknik Elektro. Selama
berkuliah, penulis kerap menulis dan memberikan tutorial di bidang teknik
elektro, terutama telekomunikasi. Selama berkuliah S2, penulis bekerja sebagai
asisten riset di Pusat Antar-Universitas ITB. Sejak 2005, penulis bekerja sebagai
network engineer dan tinggal di Jakarta.