1. Dokumen ini membahas konsep dasar pemrograman MATLAB, meliputi operator-operator aritmatika, logika, logaritma, kuadrat, pangkat, dan perbandingan beserta contoh kode programnya.
Kode antara / Intermediate code merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi
Kode antara / Intermediate code merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi
Apakah program Sekolah Alkitab Liburan ada di gereja Anda? Perlukah diprogramkan? Jika sudah ada, apa-apa saja yang perlu dipertimbangkan lagi? Pak Igrea Siswanto dari organisasi Life Kids Indonesia membagikannya untuk kita semua.
Informasi lebih lanjut: 0821-3313-3315 (MLC)
#SABDAYLSA #SABDAEvent #ylsa #yayasanlembagasabda #SABDAAlkitab #Alkitab #SABDAMLC #ministrylearningcenter #digital #sekolahAlkitabliburan #gereja #SAL
1. 1
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
KONSEP DASAR PEMROGRAMAN MATLAB
Ir. Sihar, M.T.
Program studi T. Informatika / FTI
Bandung – 2012
Referensi:
[1]. ______Learning MATLAB 6, Student Version. MathWorks, Inc. 2001.
[2]. Simamora, S.N.M.P. “Diktat Pemrograman Dasar MATLAB”. Peminatan Embedded-Systems.
Politeknik TELKOM. Bandung. 2010.
[3]. Simamora, S.N.M.P. “Diktat Konsep Pemrograman MATLAB”. Dept. Sistem Komputer,
Fak. Teknik. ITHB. Bandung. 2002.
Kode-sintaks pada Matlab, yang umum diistilahkan dengan source-code atau source-program,
memiliki extentions *.m, dituliskan pada editor Matlab yang disebut M-Edit atau M-File.
Perhatikan gambar berikut ini:
prompt, tempat command-line text-based langsung dieksekusi
M-Edit
2. 2
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
1. Operator Arithmatika
Ada empat operator arithmatika dan satu operator pendukung, yakni: tambah (add), kurang
(substraction), kali (multiply), bagi (divide), dan sisa-bagi (modulo).
Contoh operator tambah (kode-sintaks symbol: +), perhatikan konstruksi-algoritma berikut
ini:
aT←0.25;
aT=aT+1.95;
tampilkan aT;
Source-code: cth1.m
aT=0.25;
aT=aT+1.95;
fprintf('%fn',aT);
Contoh operator kurang (kode-sintaks symbol: −), perhatikan konstruksi-algoritma berikut
ini:
var←(-0.95);
var=var−2.05;
tampilkan var;
Source-code: cth2.m
var=-0.95;
var=var-2.05;
fprintf('Hasil = %fn',var);
Contoh operator kali (kode-sintaks symbol: ∗), perhatikan konstruksi-algoritma berikut ini:
sns←0.25;
sns=2∗sns−(sns+1.25);
tampilkan sns;
Source-code: cth3.m
sns=0.25;
sns=2*sns-(sns+1.25);
disp(sns);
Contoh operator bagi (kode-sintaks symbol: /), perhatikan konstruksi-algoritma berikut ini:
YBS←π;
YBS=YBS÷180;
tampilkan YBS;
Source-code: cth4.m
YBS=pi;
YBS=YBS/180;
disp(YBS);
Contoh operator modulo (kode-sintaks symbol: mod), perhatikan konstruksi-algoritma
berikut ini:
Aju3←25;
3. 3
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
Aju3=Aju3%3;
tampilkan Aju3;
Disimulasikan secara algoritma sebagai berikut:
Aju3=25;
?=Aju3%3;
maka, 25 ÷ 3 = 8 sisa 1, bila dituliskan dalam bentuk bilangan pecahan =
3
1
8 ;
sehingga, 25 % 3 = 1;
dengan demikian, isi var: Aju3=1;
Source-code: cth5.m
Aju3=25;
Aju3=mod(25,3);
fprintf('Isi Aju3=%in',Aju3);
Tampilan jalannya program:
2. Operator Logika
Operator Logika bekerja berdasar Aljabar Boolean, yang dikelompokan menjadi: operator
AND, OR, XOR, dan NOT. Jika AND di-concatenate-kan dengan NOT disebut operator NAND;
jika OR di-concatenate-kan dengan NOT disebut operator NOR; XOR di-concatenate-kan
dengan NOT disebut operator XNOR;
Operator AND
Postulat: luaran bernilai 1 jika-dan-hanya jika kedua masukan bernilai 1;
Disimbolkan dalam konstruksi-algoritma dan truth-table: • atau &;
Dinotasikan dalam kode-sintaks Matlab: and(x,y); dimana x,y adalah nilai-masukan;
atau menggunakan kode-sintaks yang umum: &;
Disimbolkan pada sirkuit/rangkaian:
Contoh, perhatikan konstruksi-algoritma berikut ini:
x1←(03≥3h);
x2←(0xa≠DEC(10));
xR=x1•x2;
tampilkan xR;
Algoritma Matematika Informasi:
03=(3)8=(DEC(3));
4. 4
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
3h=(3)16=(DEC(3));
maka, jika (03≥3h) solusinya adalah TRUE atau bernilai 1, sehingga isi var: x1=1;
0xa=(10)16=(DEC(10));
DEC(10)=(10)10;
maka, jika (0xa≠DEC(10)) solusinya adalah FALSE atau bernilai 0, sehingga isi var:
x2=0;
Dengan demikian, xR = x1•x2; dan isi var: xR=0;
Source-code: cth6a.m
x1=(3>=3);
x2=(10~=10);
xR=and(x1,x2);
fprintf('Hasil = %in',xR);
Operator OR
Postulat: luaran bernilai 1 jika-dan-hanya salah-satu saja masukan bernilai 1;
Disimbolkan dalam konstruksi-algoritma dan truth-table: + atau |;
Dinotasikan dalam kode-sintaks Matlab: or(x,y); dimana x,y adalah nilai-masukan;
atau menggunakan kode-sintaks yang umum: |;
Disimbolkan pada sirkuit/rangkaian:
Contoh, perhatikan konstruksi-algoritma berikut ini:
x1←(0xc≤bh);
x2←(07=7h);
xR=x1|x2;
tampilkan xR;
Algoritma Matematika Informasi:
0xc=(12)16=(DEC(12));
bh=(11)16=(DEC(11));
maka, jika (0xc≤11h) solusinya adalah FALSE atau bernilai 0, sehingga isi var: x1=0;
07=(7)8=(DEC(7));
7h=(7)16=DEC(7);
maka, jika (07=7h) solusinya adalah TRUE atau bernilai 1, sehingga isi var: x2=1;
Dengan demikian, xR = x1|x2; dan isi var: xR=1;
Source-code: cth6b.m
x1=(12<=11);
x2=(7==7);
xR=or(x1,x2);
fprintf('Hasil = %in',xR);
5. 5
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
Operator XOR
Postulat: luaran bernilai 1 jika-dan-hanya jumlah kedua masukan (nilai 1 atau 0)
berkelipatan ganjil;
Disimbolkan dalam konstruksi-algoritma dan truth-table: ⊕ atau ∧;
Dinotasikan dalam kode-sintaks Matlab: xor(x,y); dimana x,y adalah nilai-masukan;
Disimbolkan pada sirkuit/rangkaian:
Contoh, perhatikan konstruksi-algoritma berikut ini:
a1←(0xE<012);
a2←(7ah>0xa7);
A=a1⊕a2;
tampilkan A;
Algoritma Matematika Informasi:
0xE=(14)16=(DEC(14));
012=(12)8=(DEC(10));
maka, jika (0xE<012) solusinya adalah FALSE atau bernilai 0, sehingga isi var: a1=0;
7ah=(7a)16=(DEC(122));
0xa7=(a7)16=DEC(167);
maka, jika (7ah>0xa7) solusinya adalah FALSE atau bernilai 0, sehingga isi var: a2=0;
Dengan demikian, A = a1⊕a2; dan isi var: A=0;
Source-code: cth6c.m
a1=(14<10);
a2=(122>167);
A=xor(a1,a2);
fprintf('Hasil = %in',A);
Operator NOT
Postulat: luaran bernilai 1 jika-dan-hanya nilai masukan bernilai 0, demikian juga
sebaliknya;
Disimbolkan dalam konstruksi-algoritma dan truth-table: ∼ atau ‘;
Dinotasikan dalam kode-sintaks Matlab: not(x); dimana x adalah nilai-masukan; atau
menggunakan kode-sintaks yang umum: ∼;
Disimbolkan pada sirkuit/rangkaian:
Contoh, perhatikan konstruksi-algoritma berikut ini:
xT←DEC(27);
xT←~(xT);
tampilkan xT;
6. 6
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
Perbedaan pada Matlab hal algoritma, untuk bahasa pemrograman lain seperti
JavaScript, C/C++, dan JAVA berlaku berikut ini:
Algoritma Matematika Informasi: Komplemen
Langkah-1: ubah DEC tersebut dengan panjang 16-bit;
DEC(27) = xxxx xxxx xxxx xxxx = 0000 0000 0001 1011
Langkah-2: tambah-kan BIN tersebut dengan (1)2;
0000 0000 0001 1011
0000 0000 0000 0001 +
0000 0000 0001 1100
Langkah-3: komplemen-kan BIN tersebut
0000 0000 0001 1100 ⇒ 1111 1111 1110 0011
Langkah-4: tambah-kan BIN tersebut dengan (1)2;
1111 1111 1110 0011
0000 0000 0000 0001 +
1111 1111 1110 0100
Langkah-5: nyatakan BIN tersebut dalam DEC
i. Komplemen-kan BIN tersebut
1111 1111 1110 0100 ⇒ 0000 0000 0001 1011
ii. Tambah-kan BIN tersebut dengan (1)2;
0000 0000 0001 1011
0000 0000 0000 0001 +
0000 0000 0001 1100
iii. Representasikan BIN tersebut dalam DEC
0000 0000 0001 1100 = DEC(28);
iv. Kali-kan DEC tersebut dengan (-1)10;
DEC(28) ∗ DEC(-1) = DEC(-28);
Dengan demikian, isi var: xT=DEC(-28);
Dituliskan dalam JavaScript:
Source-code: cth6d.htm
<script language=JavaScript>
xT=27;
xT=~(xT);
document.write("Hasil = ",xT);
</script>
Tampilan jalannya program:
Sedangkan pada Matlab berlaku algoritma berikut ini:
7. 7
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
xT←DEC(27);
apakah xT bernilai bukan 0? jika ya tampilkan 1, selain itu 0;
maka, isi var xT=1;
Source-code: cth6d.m
xT=27;
xT=~(xT);
fprintf('Hasil = %in',xT);
Tampilan jalannya program:
3. Operator Logaritma (khusus Basis Bilangan 10)
Untuk mendapatkan nilai logaritma basis bilangan 10 ada dua cara, yakni cara pertama
dengan method atau function log(x)÷log(10); sedangkan cara ke-2 dengan method/function
log10(x); dimana x adalah bilangan yang akan dicari nilai logaritma-nya.
Contoh, perhatikan konstruksi-algoritma berikut ini:
aZ←100000;
aZ←log(aZ);
tampilkan aZ;
Cara-1: Source-code: cth7a.m
aZ=100000;
aZ=(log(aZ))/(log(10));
fprintf('Hasil = %dn',aZ);
Cara-2: Source-code: cth7b.m
aZ=100000;
aZ=(log10(aZ));
fprintf('Hasil = %dn',aZ);
4. Operator Kuadrat (Pangkat 2)
Pada Matlab, operasi perpangkatan menggunakan kode-sintaks: ∧.
Misalkan: 22, dituliskan dalam syntax Matlab-script: 2∧2; hal yang sama juga berlaku untuk
pangkat di atas bilangan 2.
Contoh, perhatikan konstruksi-algoritma berikut ini:
aZ←0.4;
aZ←(aZ)2;
8. 8
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
tampilkan aZ;
Source-code: cth8a.m
aZ=0.4;
aZ=(aZ)^2;
fprintf('Hasil = %fn',aZ);
Contoh, perhatikan konstruksi-algoritma berikut ini:
a←2;
a←(a)10;
tampilkan a;
Source-code: cth8b.m
a=2;
a=(a)^10;
fprintf('Hasil = %in',a);
Contoh, perhatikan konstruksi-algoritma berikut ini:
a←2;
a1←(a)10;
a2←(a)11;
tampilkan a1,a2;
Source-code: cth8c.m
a=2;
a1=(a^10);
a2=(a^11);
disp(a1);
disp(a2);
5. Operator Pangkat n (xn)
Operator ini identik juga dengan x∧n; namun umum digunakan untuk operator akar-
pangkat n, yakni n
x dapat disebutkan akar-pangkat n dari x.
Misalkan, akan dicari 8
256 ; maka expression ini identik dengan ( ) 125.0
256 ; dengan
demikian dapat disebutkan bahwa
8
1
125.0 = ;
Kode-sintaks pada Matlab digunakan: power(x,y); dimana merujuk pada persamaan xy;
Contoh, perhatikan konstruksi-algoritma berikut ini:
aZ←1024;
aZ← ( )5 1024 ;
tampilkan aZ;
9. 9
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
Perhatikan, bahwa ( )5 1024 =( )5
1
1024 = (1024)0.2 ;
Source-code: cth9a.m
aZ=1024;
n=0.2;
aZ=power(aZ,n);
fprintf('Hasil = %fn',aZ);
Contoh, perhatikan persamaan matematika berikut ini:
( )
( )x
x
y
yxf
81
8
),(
0
−
= ;
Tentukan )2,3(f ;
Source-code: cth9b.m
x=(1/3);
y=2;
fxy=((power(8,x))-(power(y,0)))/(power(81,x));
fprintf('Hasil = %fn',fxy);
6. Operator Perbandingan
Operator ini identik dengan operator logika, namun hanya melibatkan AND dan OR.
Contoh, perhatikan konstruksi-algoritma berikut ini:
xL←(0xb≤ch)||(07=7h)&&(DEC(-15)>1h);
tampilkan xL;
Algoritma Matematika Informasi:
0xb=(11)16=(DEC(11));
ch=(12)16=(DEC(12));
maka, jika (0xb≤ch) solusinya adalah TRUE atau bernilai 1;
07=(7)8=(DEC(7));
7h=(7)16=DEC(7);
maka, jika (07=7h) solusinya adalah TRUE atau bernilai 1;
(DEC(-15))=(-15)10;
1h=(1)16=DEC(1);
maka, jika (DEC(-15)>1h) solusinya adalah FALSE atau bernilai 0;
10. 10
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
Dengan demikian, xL = 1||(1&&0); dan isi var: xL=1;
Source-code: cth10a.m
xL=(11<=12)||(7==7)&&(-15>1);
disp(xL);
Contoh, perhatikan konstruksi-algoritma berikut ini:
faith←(73≠73)&&(18.25<18)||(-91≥-91);
tampilkan faith;
Dimodelkan sebagai berikut:
Source-code: cth10b.m
faith=(73~=73)&&(18.25<18)||(-91>=-91);
fprintf('Hasil = %in',faith);
7. Struktur Kendali Proses: if-then-else
Blok proses ini dapat dimodelkan sebagai berikut:
jika( expression ) maka {
statement;
} selain itu {
statement;
}
Contoh, perhatikan konstruksi-algoritma berikut ini:
ama←(13≠-13)&&(1.825≥1.8)||(-91<-91);
jika (ama=1) {
tampilkan TRUE;
} selain itu {
tampilkan FALSE;
}
Source-code: cth11a.m
ama=(13~=-13)&&(1.825>=1.8)||(-91<-91);
if(ama==1)
fprintf('TRUEn');
else
fprintf('FALSEn');
end
11. 11
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
8. Struktur Kendali Proses: while
Model dalam pemrograman Matlab dituliskan sebagai berikut:
while( expression )
statement;
end
Contoh: buatlah deret bilangan dengan range -5 s.d 5 dengan selisih 0.5;
Apabila disimulasikan, maka akan terlihat sebagai berikut:
-5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Source-code: cth12a.m
i=0;
x=-5;
while(x<=5)
fprintf('%f ',x);
x=x+0.5;
i=i+1;
end
fprintf('n');
9. Struktur Kendali Proses: for
Model dalam pemrograman Matlab dituliskan sebagai berikut:
for( expression )
statement;
end
Contoh: buatlah deret bilangan dengan range -15 s.d 15 dengan selisih 3;
Apabila disimulasikan, maka akan terlihat sebagai berikut:
-15 -12 -9 -6 -3 0 3 6 9 12 15
Source-code: cth13a.m
for(x=-15:3:15)
fprintf('%i ',x);
end
fprintf('n');
Contoh: tampilkanlah secara vertikal kata ‘IF - Univ. BALE Bandung’ sebanyak 5 kali;
Source-code: cth13b.m
for(i=1:1:5)
fprintf('IF - Univ. BALE Bandungn');
end
12. 12
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
10. Struktur Kendali Proses: switch
Model dalam pemrograman Matlab dituliskan sebagai berikut:
switch( expression )
case 0
statement;
case 1
statement;
case 2
statement;
…
otherwise
statement;
end
Contoh: menampilkan pilihan 2 dari tiga pilihan yang telah dideklarasikan.
Dituliskan dengan Matlab script sebagai berikut:
Source-code: cth14b.m
x=2;
switch(x)
case 1
fprintf('%fn',0.5+1.75);
case 2
a=1.5;
disp(a);
case 3
fprintf('Belajar Matlabn');
end
Contoh: menampilkan pilihan sembarang dari lima pilihan yang disajikan kepada end-user.
Dituliskan dengan Matlab script sebagai berikut:
Source-code: cth14a.m
x=input('Pilihan(1 s.d 5)?: ');
switch(x)
case 1
fprintf('%fn',0.5+1.75);
case 2
a=1.5;
disp(a);
case 3
fprintf('Belajar Matlabn');
case 4
x=xor(0,89);
disp(x);
case 5
z=xor(2,-2);
disp(z);
otherwise
fprintf('Maaf, out-of-the-range...n');
end
13. 13
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
11. Operator Trigonometri
Operator trigonometri terbagi menjadi fungsi sin(x), cos(x), dan tan(x).
Model gelombang sine, cosine, dan tangent:
Oleh sebab nilai fungsi trigonometri pada Matlab (dan hampir semua bahasa
pemrograman/script) berlaku nilai radian bukan sudut, maka setiap nilai sudut harus
ditransformasikan ke dalam nilai radian. Hubungannya diturunkan dari fungsi analitik
pada lingkaran dengan konsep dasar satu putaran sempurna (yakni 2π) senilai 360o.
2π rad = 360o;
1o = (2π ÷ 360) rad;
atau
180
1
π
=o
Contoh-1: -carilah sin(30);
Konstruksi-algoritma:
zT←30;
zT=zT∗(π÷180);
zT=sin(zT);
tampilkan zT;
Source-code: cth15a.m
zT=30;
zT=zT*(pi/180);
zT=sin(zT);
disp(zT);
Contoh-2: -carilah cos(60);
Konstruksi-algoritma:
t←60;
t=t∗(π÷180);
zT=cos(t);
tampilkan zT;
14. 14
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
Source-code: cth15b.m
t=60;
t=t*(pi/180);
zT=cos(t);
fprintf('Hasil: %fn',zT);
Contoh-3: -carilah tan(45);
Konstruksi-algoritma:
t←45;
t=t∗(π÷180);
t=tan(t);
tampilkan t;
Source-code: cth15c.m
t=45;
t=t*(pi/180);
t=tan(t);
fprintf('Hasil: %fn',t);
Contoh-4: -bangkitkan gelombang sine dimana selisih (∆) ditetapkan 0.1 dengan range -2π
s.d 2π;
Solusi:
Konstruksi-algoritma:
batas_bawah←-2π;
batas_atas←2π;
selisih=0.1;
t=-2π s.d 2π;
f(t)=sin(t)
tampilkan (t,f(t));
Source-code: cth15d.m
t=[-2*pi:0.1:2*pi];
ft=sin(t);
plot(ft);
12. Operasi Matriks
Operasi matriks dalam bahasa pemrograman atau script umumnya diturunkan dari teknik
array (larik) 1D, matriks sendiri menggunakan teknik array (larik) 2D. Perbedaannya pada
Matlab, indeks dimulai dari urutan ke-1 bukan 0.
Contoh: isi var: xC adalah 0.15, -0.27, -1.5, 1.5, 1.5; maka bila ditampilkan secara array pada
Matlab adalah sebagai berikut:
xC[1]=0.15;
xC[2]=-0.27;
15. 15
Ir.SIhar, M.T. – IF – Univ.BALE Bandung
xC[3]=-1.5;
xC[4]=1.5;
xC[5]=1.5;
Dituliskan dengan Matlab script sebagai berikut:
Source-code: cth16a.m
xC=[0.15 -0.27 -1.5 1.5 1.5];
for(i=1:1:5)
fprintf('%f ',xC(i));
end
fprintf('n');
Source-code cth16a.m menggunakan pendekatan kolom, sedangkan cth16b.m berikut ini
menggunakan pendekatan baris; hasilnya sama saja.
Source-code: cth16b.m
xC=[0.15;-0.27;-1.5;1.5;1.5];
for(i=1:1:5)
fprintf('%f ',xC(i));
end
fprintf('n');
Contoh: deret data-numerik berikut: 9,-9,2.3,7,0.75,12.75; ditampungkan ke var: zR. Jika
zR[2] di-MUL-kan dengan 3, lalu hasilnya dipertukarkan dengan zR[6], maka tampilkan
kembali isi terbaru/termutahir zR. MUL: operasi multiply.
Solusi:
Konstruksi-algoritma
zR∈{9,-9,2.3,7,0.75,12.75};
zR[2]=zR[2]∗3;
x←zR[2];
zR[2]←zR[6];
zR[6]←x;
tampilkan zR;
Dituliskan dengan Matlab script sebagai berikut:
Source-code: cth16c.m
zR=[9 -9 2.3 7 0.75 12.75];
zR(2)=zR(2)*3;
x=zR(2);
zR(2)=zR(6);
zR(6)=x;
for(i=1:1:6)
fprintf('%f ',zR(i));
end
fprintf('n');
Contoh: deret data non-numerik berikut: ‘1’,’a’,’A’,’3’,’x’,’s’; ditampungkan ke var: a. Jika
a[1] dipertukarkan dengan a[5], maka tampilkan kembali isi terbaru/termutahir a.
Solusi: