Matlab
Matlab
BELAJAR MATLAB
KATA PENGANTAR
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.
Penulis sangat mengharapkan kritik dan saran dari para pembaca untuk
memperbaiki kualitas buku ini. Penulis berharap buku ini akan
bermanfaat bagi banyak pihak, aamiin.
Jakarta,
Ramadhan 1426 / Oktober 2005
DAFTAR ISI
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 Operator 28
Titik Dua 28
3.5 Membuat Deret 30
3.6 Membentuk-Ulang Matriks 32
Soal Latihan 34
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 1
x – 2y = 32 12x +
5y = 12
Daftar variabel
yang aktif
Command
window
MATLAB Start
ans = 05-Feb-
2005
Ketika kita selesai dengan sesi MATLAB dan ingin keluar, gunakan
command exit atau quit.
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
>> t=1:12;
>> data=[22 22 22.5 24 25.5 28 29 29 30 29.5 29 28];
>> 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
>> sound(m,Fs)
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.
Akan muncul window yang berisi deskripsi tentang fungsi atau command
yang dimaksud.
11
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
12
Apa Itu M ATLAB
Product
filter
Tab
Help
navigator Gambar 1. 7 Jendela help browser.
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
>> (9+18)/3^2
ans =
3
Tabel 2. 1
>> 5\(15+35)
ans =
10
>> a=100
a =
100
>> b=200
b =
200
>> c=300;
>> d=400;
>> total=a+b+c+d
total =
1000
>> rata_rata=total/4;
Berikutnya, kita bisa melihat daftar variabel apa saja yang sedang
aktif di dalam MATLAB menggunakan command whos.
>> whos
Name Size Bytes Class
Penamaan Variabel
Tabel 2. 2
Tabel 2. 3
Fungsi trigonometri:
Fungsi pembulatan:
>> sign(a)
Soal Latihan
1. Hitunglah dengan MATLAB:
12 / 3,5 (3 + 5/4)2 (0,252 + 0,752)1/2 2 / (6/0,3)
p
5. Misalkan: p = 9+16i dan q = −9+16i; hitunglah: r = pq s=
p−r r+s p2 q q
p ∠p q ∠q r ∠r s ∠s
Variabel dan Operasi Dasar 23
BAB 3
MATRIKS
>> vektor2=[2;4;6]
vektor2 =
2
4
6
>> size(matrix1)
ans =
3 3
Tabel 3. 1
ones(n) membuat matriks satuan (semua elemennya berisi
angka 1) berukuran n×n. membuat matriks satuan
ones(m,n)
berukuran m×n.
zeros(n)
membuat matriks nol (semua elemennya berisi angka
zeros(m,n) 0) berukuran n×n. membuat matriks nol berukuran
m×n.
eye(n)
membuat matriks identitas berukuran n×n (semua
elemen diagonal bernilai 1, sementara lainnya
bernilai 0).
>> mat_2=zeros(2,4)
mat_2 =
0 0 0 0
0 0 0 0
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
>> vektor_ini(1)
ans =
1
>> vektor_itu(2)
ans =
8
>> matrix(1,2)
ans =
20
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”.
30 Matriks
Mengambil elemen baris ke-1 sampai ke-2, kolom ke-2 sampai ke3
dari matrix
>> matrix(1:2,2:3)
ans =
20 30 50
60
>> matrix(3,:)=100*ones(1,3)
matrix =
10 20 30
40 50 60 100 100
100
Contoh:
Matriks 33
>> 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
Tabel 3. 3
Contoh:
>> A=[0:3; 4:7]
A =
0 1 2 3
4 5 6 7
>> fliplr(A)
ans =
34 Matriks
3 2 1 0
7 6 5 4
>> flipud(A) ans =
4 5 6 7
0 1 2 3
>> rot90(A) ans =
3 7
2 6
1 5
0 4
Soal Latihan
1. Definisikan vektor dan matriks berikut ini di dalam MATLAB:
−5 1 3 5 0
Matriks 35
A 42 84 B 11 −11
menjadi:
C= (A B) W BB −BB
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.
1 2 4 8 16
M 3036 9
32 16 8 4 2
5 −5 5 −5 5
36 Matriks
OPERASI MATRIKS
y =
100
Operasi Matriks 39
10
1
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
x1 – 2 x2 = 32
12 x1 + 5 x2 = 7
>> X=inv(A)*B
X =
6.0000
-13.0000
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.
Tabel 3. 1
Operasi Matriks 41
>> 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
Tabel 3. 2
>> a.*c
??? Error using ==> .* Matrix
dimensions must agree.
>> c./2.*d.^2
ans =
125
1000
3375
Contoh Kasus
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.
>> y = log(x.^2+eps);
Columns 8 through 9
1.5000 2.0000
Columns 8 through 9
0.8109 1.3863
>> x=sort(x)
x =
Columns 1 through 13
46 Operasi Matriks
0 30 45 60 90 120 135 150 180 210 225 240 270
Columns 14 through 17
300 315 330 360
>> t=x.*pi/180;
>> y1=sin(t); y2=cos(t);
>> 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.
Soal Latihan
1. Operasikan matriks M dan N berikut ini:
Operasi Matriks 47
M + N, M − N, N + 9
MN, NM
ai
Menu
Rotate Zoo
klik ikon ini, lalu drag di klik
New figure, dalam figure untuk memutar figu
open, save, figure; terutama untuk figure dan
print 3-dimensi
Rot
klik
dal
Insert Zoom figu
menambahkan klik ikon ini, lalu klik di dalam 3-d
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 oby ek
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)
Untuk menambahkan judul, label, dan grid ke dalam hasil plot Anda,
digunakan command berikut ini.
Tabel 5. 1
Grafik dan Suara 51
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
Tabel 5. 2
52 Grafik dan Suara
area plot, ataupun mengatur properties dari plot yang akan digambar.
Beberapa command di bawah ini bisa digunakan untuk tujuan
tersebut.
Tabel 5. 3
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
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) sama
semilogx( ... ) 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
>> 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')
>> title('Kurva y = exp(-Ax)')
>> legend('A=1','A=0.5','A=0.25','A=0.1')
>> 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')
ρ = sin2(3θ )
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;
Grafik dan Suara 59
>> xlabel(‘sumbu X’); ylabel(‘sumbu Y’);
>> zlabel(‘sumbu Z’);
>> title (‘Contoh plot 3-D’);
>> axis([0 25 0 20 0 80])
Perhatikan bahwa command label, title, grid, axis, hold, dan subplot
juga berlaku di sini. Anda juga bisa merotasi gambar 3dimensi
tersebut dengan cara men-klik ikon rotate dan dragging mouse di atas
gambar.
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);
Sekarang kita coba contoh yang lain untuk memplot fungsi 3dimensi
sin(r)
z= , di mana r = x2 + y2 .
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
Tabel 5. 5
Grafik dan Suara 63
5.4 Suara
Untuk menyuarakan suatu vektor, ataupun membaca dan menyimpan
file audio berformat WAV, digunakan command berikut ini:
Soal Latihan
V
Vo i
0 selainnya
Gambarkan pola radiasi ini!
z =1−cos2t
7. Plot kontur dari fungsi dua variabel berikut ini: f (x, y)= cos
xsin 2y , untuk 0 ≤ x ≤ 4π, 0 ≤ y ≤ 4π
8. Buatlah suatu file suara WAV berisi urut-urutan tone DO-REMI-
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
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.
Menu
Ikon editing
Teks yang diawali tanda “%” menunjukkan komentar, dan tidak akan
dieksekusi oleh MATLAB.
Direktori yang
sedang aktif
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.
% Menghitung keliling
Keliling = Sisi_A + Sisi_B + Sisi_C
Lalu simpan dengan nama segi3.m.
% Menghitung keliling
Kll = Sisi_A + Sisi_B + Sisi_C;
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.
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.
% Menghitung kombinasi
kombinasi = factorial(n)/factorial(r)/factorial(n-r);
% Menampilkan keluaran
disp(‘Jumlah kombinasi yang ada = ‘,kombinasi);
Menghitung Kombinasi
---------------------
Berapa jumlah mahasiswa yang ada? : 8
Berapa jumlah personel satu team? : 5
Jumlah kombinasi yang ada =
56
if kondisi
Command yang dijalankan jika kondisi dipenuhi end
if kondisi
Command yang dijalankan jika kondisi dipenuhi else
Dijalankan jika kondisi tidak dipenuhi
76 M-file dan Pemrograman MATLAB
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
if kondisi1
command1
if kondisiA
commandA
else
commandB end else
command2 end
case{...}
...dst...
default
Dijalankan jika kondisi manapun tidak dipenuhi
end
for k = 30:3:100
end k
Hasilnya ialah:
k =
30 k =
33 k =
... k =
99
Vektor=[];
for k = -10:10 %dalam hal ini inkremen = 1
Vektor = [Vektor k];
end Vektor
Menghasilkan:
Vektor =
78 M-file dan Pemrograman MATLAB
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
y = Ax2
Menghasilkan:
while kondisi
Command untuk dijalankan jika kondisi dipenuhi
end %keluar dari loop jika kondisi tidak dipenuhi
y = B x1/2
Menghasilkan:
80 M-file dan Pemrograman MATLAB
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.
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
>> apa_prima(27)
27 bukan bilangan
prima!
>> apa_prima(-27)
Masukan harus bilangan bulat positif
82 M-file dan Pemrograman MATLAB
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
Tabel 6. 1
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 operasi logika
xor(A,B) not(A) atau XOR operasi logika NOT pada A
~A
Tabel 6. 3
>> D=A|B|C
D =
1 1 0 1 1
>> E = xor(~A,B)
E =
1 0 1 0 1
if thn<1900 | thn>2500
disp('Tahun yang valid: 1900 - 2500');
hasil=[]; return end
if sum(sum(thn<1900 | thn>2500))~=0
disp('Tahun yang valid: 1900 - 2500');
hasil=[]; return end
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
1 2 1
1 3 3 1
Beri nama program ini dengan prog_pascal.m
ANALISIS DATA
Tabel 7. 1
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(max(A))
ans =
4
Tabel 7. 2
Tabel 7. 3
7.3 Statistika
92 Analisis Data
Tabel 7. 4
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];
7.4 Sortir
Kita bisa mengurutkan data (sortir) di MATLAB dengan command
berikut ini:
Tabel 7. 5
Mari kita coba command tersebut pada data tinggi badan dan IP
mahasiswa.
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 M ATLAB
dengan command berikut ini:
Analisis Data 95
Tabel 7. 6
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’)
96 Analisis Data
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’);
Atau kita bisa juga memplot vektor x tersebut sebagai data diskrit.
>> stem(x)
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’)
Analisis Data 99
Gambar 7. 5
Tabel 7. 8
>> S = fft(sinyal,Fs);
>> plot(abs(S));
>> xlabel(‘frekuensi (Hz)’); ylabel(‘magnitude’)
Analisis Data
Soal Latihan
1. Berikut ini data pendudukan kanal pada suatu “trunk” (saluran
transmisi antar-sentral) pada setiap jam selama dua belas jam:
Analisis Data
dinyatakan sebagai:
p = ( an an-1 ... a1 a0 )
Tabel 8. 1
106 Analisis Fungsi dan Interpolasi
Turunan pertama dan kedua dari g(x) bisa kita hitung pula:
>> g1=polyder(g), g2=polyder(g1) g1
=
108 Analisis Fungsi dan Interpolasi
6 0 5 g2 =
12 0 yang masing-masing
mewakili
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
s(x)=cos2x−5x+2=0
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 xi
yang mendekati dengan akurasi tertentu diperoleh, di mana
|xmin − xi| cukup kecil.
Tabel 8. 3
Misalkan kita akan mencari minimum dari fungsi sinus pada interval
0 ≤ x ≤ 2π.
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
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
Dari gambar tersebut, kita coba tebakan awal pada titik (1,0):
8.4 Interpolasi
Pada fungsi yang memiliki sejumlah titik terbatas, dimungkinkan
untuk menentukan titik-titik perantaranya dengan interpolasi. Cara
114 Analisis Fungsi dan Interpolasi
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:
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’);
Analisis Fungsi dan Interpolasi 115
>> 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’
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
Mari kita coba dekati data tekanan udara seperti contoh sebelumnya
dengan polinomial orde tiga, empat, dan lima.
>> 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
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’)
Analisis Fungsi dan Interpolasi 117
Figure 3berfungsi
sebagai papan kunci
Gambar 8. 7 Tiga window pada Function Tool
Tabel 8. 6
Analisis Fungsi dan Interpolasi 119
Soal Latihan
120 Analisis Fungsi dan Interpolasi
r(x) x2 + x+1 x3 −
x2 + 1 x
2 2
2. Evaluasilah ketiga polinomial pada no.1 tersebut pada nilainilai x
= -1,5 , -1,2 , -0,9 , ... , 1,2 , 1,5
F(x)= x 2−+ 1
x 1
0 11 185 8
1 12 130 6
2 13 101 72 4
3 14 54 3
4 15 40 2
5 16 29 2
6 17 22 1
7 18 17 1
8 19 11 1
9 20 10 1
10
( )
N(x)= en(x) = exp Cx2 exp(Dx)expE
PERHITUNGAN INTEGRAL
q =∫ f (x)dx
a
Tabel 9. 1
Perhitungan Integral 123
∫e dx
−x3
0
y = exp(-x.^3);
124 Perhitungan Integral
00
z = exp(-x.^3-y);
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.
∫ ∫ ∫ x + y +z dzdydx
2 2 2
−2−2−2
function w = funxyz(x,y,z)
>> int_w = 0;
Perhitungan Integral 127
>> 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.
Integral_tripel =
122.9577
Soal Latihan
1. Hitunglah integral terbatas berikut ini dengan metode trapezoid
dan kuadratur:
128 Perhitungan Integral
10
y= ∫ 100−x2dx
−10
Bandingkan hasilnya dengan luas setengah lingkaran, yang
merupakan bentuk area yang dibatasi persamaan tersebut: y =
50π
2. Hitunglah integral lipat-2 berikut ini:
45
∫∫10−2x −y dydx
2 2
−4−5
www.mathworks.com/support
www.math.hmc.edu/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
Variabel
Pencatat waktu
flops tic, toc, jumlah flop (operasi floating point)
etime clock, menghidupkan dan mematikan pencatat waktu
date cputime waktu dan tanggal saat ini waktu sejak
MATLAB dimulai
Fungsi Matematik
Fungsi elementer:
abs nilai absolut
sign fungsi signum
sqrt akar kuadrat
pow2 kuadrat
exp fungsi eksponensial fungsi
log, log2, log10 logaritmik fungsi
sin, cos, tan, cot, sec, csc trigonometrik inversi fungsi
asin, acos, atan2, atan, trigonometrik
acot, asec, acsc sinh, cosh,
tanh, coth, asinh, acosh, fungsi hiperbolik dan invers-hiperbolik
atanh, acoth,
sech, csch, asech, acsch
Transformasi koordinat:
cart2pol, pol2cart kartesian dan polar
cart2sph, sph2cart kartesian dan bola
136 Referensi Cepat
Bilangan Kompleks
: operator indeks
linspace, logspace pembangkit vektor
eye matriks identitas
ones, zeros matriks satuan dan matriks nol
[] matriks kosong matriks
rand, randn random matriks diagonal
diag
matriks segitiga membentuk-
triu, tril
fliplr, flipud, rot90, reshape ulang matriks matriks-matriks
hilb, invhilb, toeplitz, compan, khusus
gallery, hadamard, hankel,
magic, pascal, rosser, vander,
wilkinson
Operasi Matriks
Referensi Cepat 137
+ − penjumlahan dan
* .* pengurangan
cross, perkalian
dot, pembagian dan
kron pembagian terbalik
/ \ transposisi, konjugasi
./ .\ pangkat
‘ .’ operator
^ .^ pembandingan
>, <, operator logika
>=,
<=,
==,
~=
and,
or,
not,
&, |,
~,
xor
Fungsi Matriks
Grafik
Mengatur grafik:
Suara
Pemrograman
Conditional statements:
140 Referensi Cepat
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
nargin global jumlah argumen input
nargout jumlah argumen output
Referensi Cepat 141
Integral
Im
z = a + ib
b
Re
a
Operasi Dasar
Operasi dasar dari bilangan kompleks didefinisikan berikut ini:
(a+ib)+(c+id)=(a+c)+i(b+d)
142 Pengenalan Bilangan Kompleks
(a+ib)−(c+id)=(a−c)+i(b−d)
(a+ib)(c+id)=(ac−bd)+i(bc+ad)
bcc2 −+add 2
Im
z = c + id
d
Re
c
-d
z* = c - id
Contoh:
(2+3i)(2−3i)= 4−6i+6i−9i2 = 4+9 =13
2+ 3i = 2− 3i = 4+9 = 13
Pengenalan Bilangan Kompleks 143
Bentuk Polar
Untuk z = a + ib , kita dapatkan:
a=rcosθ b=rsinθ
Im
z = a + ib
b
r
θ Re
a
Contoh:
eiπ = cosπ+isinπ=−1
3eiπ/2 = 3 cosπ+isinπ 3i
2 2
144 Pengenalan Bilangan Kompleks
π π
−2eiπ/6 =−2 cos +isin =− 3 −i
6 6
Perkalian dan pembagian bilangan kompleks dalam bentuk polar
menjadi lebih mudah. Jika z1 = r1eiθ 1 dan z2 = r2eiθ 2 maka:
r2
Contoh:
Untuk menghitung (1+i)8 , kita terlebih dahulu bisa menuliskan
(1+i) dalam bentuk polar sebagai 2eiπ/4 , kemudian:
( 2e ) =( 2) e
iπ/4
8 8
i8π/4 =16ei2π =16
(e ) =1⇔ e
iθ n inθ
=
ei(2πk)
π
⇔ nθ = 2πk ⇔θ = 2 k
n
(e ) =e
iθ n inθ
, dengan persamaan Euler, menghasilkan formula de
Moivre:
z=e n
Terdapat n buah akar yang berbeda, di mana akar-akar tersebut
terdistribusi merata pada lingkaran satuan dalam bidang kompleks.
Contoh:
Kita akan menghitung 3 1 .
33
untuk k = 0 diperoleh: e0 =1 untuk k = 1
diperoleh:
ei2π/3 = cos 2π+isin 2π=− +i
3 3
Bila kita gambarkan pada lingkaran satuan di bidang kompleks:
146 Pengenalan Bilangan Kompleks
Im
1 1
−2 + 2 3
i
120 o Re
120 o
120 o 1
1 1
− 2 −i 2 3
(
z= 5 32= 32ei2πk ) 1/5 =321/5ei2πk/5
untuk k = -2, -1, 0, 1, 2
untuk k = -2, diperoleh:
2 π 2 π
z4 = 2ei2π/5 = 2 cos 5 +isin 5 =
π 4 π
z5 = 2ei4π/5 = 2 cos +isin 5
=−1,618+1,176i
Digambarkan dalam bidang kompleks:
Im
z4
z5
72o Re
z3
z1
z2
LAMPIRAN 3
Bab 2:
1. >> 12/3.5, (3+5/4)^2
ans = 3.4286 ans
= 18.0625
>> Z = D^(A/B) + C
Z =
134.4340
5. >> clear
>> p = 9 + 16*i; q = -9 + 16*i; >> r=p*q, s=p/q, p-r r
= -337 s =
0.5193 - 0.8546i ans =
3.4600e+002 +1.6000e+001i
>> r+s, p^2, sqrt(q) ans =
-3.3648e+002 -8.5460e-001i ans =
-1.7500e+002 +2.8800e+002i ans = 2.1630 +
3.6985i
Bab 3:
>> vektor_2=[-5;
-15; -40] vektor_2 = -5
-15
-40
>> matriks=[1 3 5 0;
3 1 3 5;
5 3 1 3; 0 5 3 1] matriks = 1 3 5
0
3 1 3 5
5 3 1 3
0 5 3 1
2. >> A=[4 8;2 4], B=[1 1;1 –1] A =
4 8
2 4
150 Jawaban Soal Latihan
C =
1 1
1 -1
>> C=[A B]
D =
4 8 1 1
2 4 1 -1
-3 0 3 6 9
32 16 8 4 2
5 -5 5 -5 5
>> M(1,:) ans =
1 5 10 15 20
>> M(:,3) ans = 10
4
3
8
5
>> M(3:5,2:4) ans = 0 3
6
16 8 4
-5 5 -5
7. >> x = -10:10
>> y = 7.5:-0.5:0
>> z = 1:3:100
8. >> N = M(:,1:4)
N =
1 5 10 15
1 2 4 8
-3 0 3 6
32 16 8 4
5 -5 5 -5
>> fliplr(N)
>> flipud(N)
>> reshape(N,10,2)
>> reshape(N,4,5)
Bab 4:
Bab 5:
>> figure;
>> plot(x,y1,'k-',x,y2,'k--',x,y3,'k:',x,y4,'r-');
>> grid on; % membuat plot
>> xlabel(‘sumbu-X’), ylabel(‘sumbu-Y’)
>> legend(‘Y1’,’Y2’,’Y3’,’Y4’)
Jawaban Soal Latihan 155
3. >> clear
>> f=linspace(100,1e5,500); % finisikan frekuensi
>> F=4e3; % frekuensi cut-off
>> Vo_Vi = 1./(1+j*2*pi.*f./F); % menghitung Vo/Vi
>> figure;
>> subplot(2,1,1); semilogx(f,abs(Vo_Vi));
>> % plot respon amplituda
>> grid on; ylabel(‘|Vo/Vi|’);
4. >> phi=linspace(-pi/2,pi/2,100);
>> % definisikan rentang sudut phi
>> U = cos(phi).^3; % menghitung U
>> figure; polar(phi,U); grid on;
5. >> t = linspace(0,2*pi,100);
Jawaban Soal Latihan 157
6. >> clear;
>> x = linspace(-5,5,25); y=x;
>> % definisikan batas x dan y
>> [X,Y]=meshgrid(x,y);
>> % buat jalinan titik pada bidang xy
>> Z = X.^2 – Y.^2; % hitung z
7. >> clear;
>> x = linspace(0,4*pi,100); y=x;
>> [X,Y]=meshgrid(x,y);
>> Z = cos(X).*sin(2.*Y);
>> figure; contour(x,y,Z);
>> sound(suara,Fs);
>> wavwrite(suara,Fs,‘file_suara.wav’)
Bab 6:
Bab 7:
1525
b) >> sum(pend) ans =
10059
c) >> mean(pend), median(pend)
ans = 838.2500 ans =
939.5000
d) >> std(pend), var(pend) ans
= 418.4339 ans =
1.7509e+005
e) >> urut_asc = sort(pend)
urut_asc =
Columns 1 through 6
100 215 350 824 897 921 Columns 7
through 12
958 958 1008 1056 1247 1525
f) >> TT = reshape(T,1,24);
% bentuk ulang matriks T menjadi vektor TT >>
avg_T = mean(TT), med_T = median(TT) avg_T =
29.2042 med_T =
29.5500
164 Jawaban Soal Latihan
3. >> x = linspace(-1.5,1.5,100);
166 Jawaban Soal Latihan
y = (x-1)./(x.^2+1);
y = -1.* fungsi_Fx(x);
z = sin(x(1)).*sin(x(2)) + sin(x(1).*x(2));
Kita simpan dengan nama fungsi_Gxy.m dan kita plot:
>> x=linspace(-2,2,50); % menciptakan vektor x
>> % asumsikan y = x
>> for i = 1:50 % menghitung Gxy pada setiap titik
for j = 1:50
168 Jawaban Soal Latihan
z = -fungsi_Gxy(x);
Terlihat bahwa terdapat pula dua maksimum. Kita akan cari dengan
initial guess di (x,y) = (1,1) dan (-1,-1).
>> max_1 = fminsearch('minus_Gxy',[1,1]) max_1 =
1.3233 1.3233
>> max_2 = fminsearch('minus_Gxy',[-1,-1]) max_2 =
-1.3233 -1.3233
>> t = linspace(0,20,100);
Jawaban Soal Latihan 169
>> F1 = interp1(waktu,frek,t,’*linear’);
>> F2 = interp1(waktu,frek,t,’*nearest’);
>> figure;
>> plot(waktu,frek,’ko’,t,F1,’k-‘,t,F2,’k:’);
>> xlabel(‘waktu’), ylabel(‘frekuensi’)
>> legend(‘data’,’interp linier’,’interp nearest’)
( )
N(x)=en(x) =191,5exp 0,0027x2 exp(− 0,3314x)
K(x)=ek(x) =170,6exp(0,0003x3)exp(− 0,0075x2)exp(− 0,2523x)
>> figure;
>> plot(waktu,frek,’ko’,t,kurva_M,’k-‘, ...
t,kurva_N,’k:’,t,kurva_K,’k--’)
>> xlabel(‘waktu’), ylabel(‘frekuensi’)
>> legend(‘data’,’M(waktu)’,’N(waktu)’,’K(waktu)’)
Bab 9:
y = sqrt(100 – x.^2);
z = 10 – 2.*x.^2 – y.^2;