Diktat Praktikum DSP PDF
Diktat Praktikum DSP PDF
Teknik Telekomunikasi
Jurusan Teknik Elektro
Politeknik Negeri Jakarta (PNJ)
Copyright © 2013
Politeknik Negeri Jakarta 2013
KATA PENGANTAR
Segala puji kita panjatkan kepada Allah SWT yang telah memberikan rahmat dan
hidayah-Nya sehingga kami dapat menyelesaikan Diktat Praktikum Pengolahan Sinyal
Digital dengan baik sesuai dengan waktu yang telah kita tentukan. Bersama ini kami juga
menyampaikan terima kasih kepada semua pihak yang telah membantu hingga
terselesaikannya diktat ini.
Semoga segala yang telah kita kerjakan merupakan bimbingan yang lurus dari Yang
Maha Kuasa. Proses penyusunan diktat ini tentu jauh dari sempurna, oleh karena itu segala
kritik dan saran sangat diharapkan demi perbaikan dan penyempurnaan tugas ini dan untuk
pelajaran bagi kita semua masa mendatang. Semoga dengan adanya diktat ini kita dapat
belajar bersama demi kemajuan kita dan kemajuan ilmu pengetahuan.
Depok,
Penyusun
DAFTAR ISI
Halaman
KATA PENGANTAR …………………………………..………...……….................... 1
DAFTAR ISI ………………...…………………….……………………….................... 2
BAB 1 Pengenalan Matlab ……………….………………………...................... 3
BAB 2 Operasi Dasar MATLAB……………….………………………............. 19
BAB 3 Matriks ……………….………………………......................................... 26
BAB 4 M-File dan Pemrograman MATLAB ……………….………………….. 35
BAB 5 Grafik Dua Dimensi ……………….……………………….................... 49
BAB 6 Grafik Tiga Dimensi ……………….………………………................... 62
BAB 7 Diferensial dan Integral ……………….………………………............... 75
BAB 8 Transformasi Z dan Laplace ……………….………………………........ 84
BAB 9 Transformasi Fourier ……………….………………………................... 95
BAB 10 Fungsi, Interpolasi, dan Statistik……………….……………………….. 107
BAB 11 IIR dan FIR Filter ……………….………………………........................ 120
BAB 12 Graphical User Interface ……………….……………………….............. 128
BAB 13 Simulink ……………….………………………...................................... 139
DAFTAR PUSTAKA ..………………………………………..…………...................... 144
BAB 1
Pengenalan Matlab
– www.mathworks.com/products/matlab
MATLAB (Matrix Laboratory) adalah bahasa tingkat tinggi dan interaktif yang
memungkinkan untuk melakukan komputasi secara intensif. MATLAB telah berkembang
menjadi sebuah environment pemrograman yang canggih yang berisi fungsi-fungsi builtin
untuk melakukan pengelolahan sinyal, aljabar linear dan kalkulasi matematis lainnya.
MATLAB juga berisi toolbox yang berisi fungsi fungsi tambahan untuk aplikasi khusus.
Penggunaan MATLAB meliputi bidang-bidang :
Command window
Digunakan untuk menjalankan fungsi-fungsi MATLAB. Pada command window,
semua perintah matlab dituliskan dan diekskusi. Kita dapat menuliskan perintah
perhitungan sederhana, memanggil fungsi, mencari informasi tentang sebuah fungsi
dengan aturan penulisannya (help), demo program, dan sebagainya. Setiap penulisan
perintah selalu diawali dengan prompt „>>‟. Misal, mencari nilai sin 60, maka pada
command window kita dapat mengetikkan :
>> sin(30*pi/180)
ans =
0.5000
Command history
Digunakan untuk menyimpan baris-baris perintah yang telah diketikkan di command
window. Kita dapat melihat fungsi-fungsi yang digunakan sebelumnya, mengkopi dan
menjalankannya kembali dari command history. Jendela ini berisi informasi tentang
perintah yang pernah dituliskan sebelumnya. Kita dapat mengambil kembali perintah
dengan menekan tombol panah ke atas atau mengklik perintah pada jendela histori,
kemudian melakukan copypaste ke command window.
MATLAB. Misalkan kita akan menjumlahkan dua buah bilangan, maka pada
command window kita dapat mengetikkan:
>> bilangan1=7
bilangan1 =
7
>> bilangan2=9
bilangan2 =
9
>> hasil=bilangan1+bilangan2
hasil =
16
Maka pada workspace akan menampilkan variable yang sedang digunakan.
>> who
Your variables are:
bilangan1 bilangan2 hasil
Launch pad
Menyediakan akses yang mudah ke tools, demo dan dokumentasi.
Array editor
Menampilkan isi array dalam format tabel dan dapat digunakan untuk mengedit
isi array.
Editor/Debugger
Digunakan untuk membuat, mengedit, dan men-debug M-files, yakni program
yang dibuat untuk menjalankan fungsi-fungsi MATLAB.
Figure
Figure adalah jendela untuk menampilkan gambar grafik seperti perintah plot
dan sejenisnya. Gambar pada jendela figure ini dapat disimpan ke dalam sebuah file
yang sewaktu-waktu dapat dipanggil kembali.
Salah satu yang cukup menarik dari matlab ini adalah kemudahan dan kejelasannya
dalam memahami contoh dan demo serta help yang ada pada matlab. Kita akan berkenalan
lebih dekat dengan yang satu ini. Kita bisa lihat dari demo ini ternyata begitu banyak
persoalan yang dapat dibangun dengan matlab dengan cara lebih mudah dan lebih singkat,
tanpa mengurangi kepahaman kita pada suatu persoalan(bisa dibandingkan dengan bahasa C,
pascal, delphi atau visual lainnya).
1.6 Simulink
Simulink adalah platform didalam MATLAB yang digunakan untuk mensimulasikan
sistem dinamik secara realtime. Didalam simulink terdapat berbagai macam toolbox yang
dapat digunakan untuk merangkai sistem dinamik.
Namun dengan Mfile, 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.
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.
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: File Save atau
File Save 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.
MATLAB juga dapat kita pergunakan untuk mencari akar-akar polinomial. Misalkan akar-
akar dari:
y = x4 – 10x2 + 9
>> akar=roots([1 0 –10 0 9])
akar =
3.0000
-3.0000
1.0000
-1.0000
y = 0.0038x4-0.1245X3+1.2396x2-3.2370x+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)
>> u=linspace(-4,4,50);
>> [U,V]=meshgrid(u,u);
>> W=cos(U).*cos(V/3);
>> surf(U,V,W)
BAB 2
Operasi Dasar MATLAB
Kita juga bisa menciptakan variabel untuk menyimpan nilai, baik berupa bilangan
ataupun teks. Contoh berikut ini untuk menciptakan variabel :
>> 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
Untuk menghapus beberapa atau semua variabel kita gunakan command clear. Misalkan
untuk menghapus variabel total.
>> clear total
dan untuk menghapus semua variabel sekaligus
>> clear
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
Terlihat bahwa mengoperasikan variabel berisi teks bisa memunculkan hasil
perhitungan yang “salah”.
Jawab :
>> x=pi/6; y=.001;
>> sqrt(y), exp(-x), sin(x)
ans =
0.0316
ans =
0.5924
ans =
0.5000
BAB 3
Matriks
vektor1 =
3 5 7
>> vektor2=[2;4;6]
vektor2 =
2
4
6
3. 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 1×1), dan vektor bisa dianggap sebagai
matriks 1-dimensi: satu baris – n kolom, atau n baris – 1 kolom (matriks 1×n atau n×1).
Semua perhitungan di MATLAB dilakukan dengan matriks, sehingga disebut MATrix
LABoratory. Berikutnya kita coba contoh berikut untuk mendefinisikan matriks 3×3.
>> 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.
mat_1 =
5 5 5 5
5 5 5 5
2. Matriks Nol
Matriks yang elemennya bilangan nol
Bentuk umum :
>> zeros(n,m)
Contoh :
>> mat_2=zeros(2,4)
mat_2 =
0 0 0 0
0 0 0 0
3. Matriks Identitas
Bentuk umum :
>>eye(n)
Contoh :
>> eye(4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
5. Matriks Acak
Matriks yang memiliki nilai acak berdasarkan distribusi statistic pada
elemnnya.
Bentuk umum :
>>rand(n,m)
Contoh :
>> rand(3,2)
ans =
0.9501 0.4860
0.2311 0.8913
0.6068 0.7621
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.
ans =
20
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 : Tetapi akan lebih efisien jika deret diciptakan menggunakan operator
titik-dua. Formulanya ialah:
>> 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.
>> 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
Perkalian Matriks 1
>> A,B
A =
0 1
2 3
B =
4 5
6 7
MultAB =
6 7
26 31
MultBA =
10 19
14 27
Perkalian Matriks 2
>> 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
untuk mencari solusi dari persamaan tersebut dapat digunakan fungsi-fungsi matriks sebagai
berikut.
2. 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
w = 0,001 , 0,01 , 0,1 , 1 , 10 , ... , 106
3. Pecahkan persamaan linier dengan tiga variabel berikut ini.
Jawab :
4. Pertama, definisikan matriks A yang berisi koefisien yang melekat pada variabel x, y, z.
>> A=[1 2 –3; 4 5 6; 7 8 9];
Kedua, definisikan vektor b yang merupakan ruas kanan dari persamaan.
>> b=[-7; 11; 17]
>> x=inv(A)*b
x =
1.0000
-1.0000
2.0000
Sehingga diperoleh: x = 1, y = -1, z = 2.
BAB 4
M-File dan Pemrograman MATLAB
4.3 M-file
Program adalah suatu kumpulan pernyataan, fungsi atau perintah yang diatur
sedemikian sehingga mempunyai logika tertentu. Semua pernyataan, fungsi dan perintah
dapat diberikan langsung di MATLAB Command Window yang digunakan untuk menyusun
sebuah program. MATLAB menyediakan bahasa pemrograman yang lengkap yang
memungkinkan Anda menulis perintah-perintah MATLAB ke dalam sebuah file dan
menjalankannya dengan sebuah perintah saja. m-file dapat berupa script yang secara
sederhana mengeksekusi barisan perintah-perintah MATLAB, atau m-file dapat berupa
fungsi yang menerima argumen input dan menghasilkan output. M-file dibuat dengan
menggunakan teks editor.
Mfile merupakan sederetan perintah matlab yang dituliskan secara berurutan sebagai
sebuah file. Nama file yang tersimpan akan memiliki ekstensi .m yang menandakan bahwa
file yang dibuat adalah file matlab. Mfile dapat ditulis sebagai sebuah script atau dapat pula
ditulis sebagai sebuah fungsi yang menerima argument atau masukan yang menghasilkan
output. Program Matlab yang disimpan dalam berkas M-file dapat dikelompokkan menjadi
dua macam, yakni: (1) Skrip Matlab (Matlab script) dan (2) Fungsi Matlab. Perbedaan antara
script dan fungsi terlihat sebagai berikut.
Skrip Matlab mempunyai ciri-riri:
1. hanya berisi kumpulan perintah-perintah Matlab;
2. tidak diawali dengan perintah function;
3. untuk menjalankannya tidak diperlukan masukan (input);
4. tidak menghasilkan nilai yang dapat disimpan ke variabel lain.
Fungsi Matlab mempunyai ciri-ciri:
1. harus diawali dengan kata function dengan tata tulis:
2. function var_hasil=nama_fungsi(input)
3. memuat rumus untuk menghitung nilai fungsi (var_hasil) berdasarkan nilai-nilai
input;
4. untuk menjalankan sebuah fungsi diperlukan masukan nilai-nilai yang sesuai;
5. Nilai-nilai yang dihasilkan oleh sebuah fungsi dapat disimpan ke dalam satu atau
beberapa variabel (matriks).
Untuk menuliskan skrip M-file, Anda bisa mulai dengan membuka file baru. Dengan
editor ini, kita bisa membuka sejumlah M-file, melakukan editing, ataupun mencoba
menjalankannya dan melakukan debuging (mencari kesalahan di dalam skrip).
Catatan : Teks yang diawali tanda “%” menunjukkan komentar, dan tidak akan dieksekusi
oleh MATLAB.
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
>> 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:
1. 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.
2. 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:
a. hijau untuk komentar
b. hitam untuk variabel dan command
c. 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
Lalu simpan dengan nama segi3.m. Sekarang kita panggil M-file tersebut
>> segi3
Sisi_C =
5
Luas =
6
Keliling =
12
Sekarang Anda dapat mencoba script sederhana menghitunga akar menggunakan matlab :
%menghitung akar dari
%persamaan kuadrat y=ax^2 + bx + c
a=input('masukkan konstanta a=')
b=input('masukkan konstanta b=')
c=input('masukkan konstanta c=')
x1=(b+sqrt(b^2-4*a*c))/(2*a)
x2=(b-sqrt(b^2-4*a*c))/(2*a)
Selajutnya kita akan membuat fungsi untuk menghitung sisi miring, luas, dan keliling
segitiga; seperti program yang ada pada contoh sebelumnya.
>> clear
>> [Hyp,Area,Circum]=segitiga(12,16)
Hyp =
20
Area =
96
Circum =
48
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
Jawab :
>> x=-1:0.01:1;
for i=1:length(x)
if x(i) < 0.5
F(i) = x(i)^2;
else
F(i) = 0.25;
end
end
>> plot(x,F,‟-k‟)
plot(x,y);
hold on;
end
grid on;
Maka grafik yang akan dihasilkan
Selain itu, statement for-end juga dapat dpergunakan untuk membuat matriks :
>> A = [1,5,-3;2,4,0;-1,6,9]
A =
1 5 -3
2 4 0
-1 6 9
>> for i=1:3
for j=1:3
A2(i,j) = A(i,j)^2;
end
end
>> A2
A2 =
1 25 9
4 16 0
1 36 81
Jawab
1. Menghitung Volume
% Program untuk menghitung volume &
% luas permukaan balok: prog_balok.m
panjang=5; lebar=3; tinggi=6.5;
volume = panjang * lebar * tinggi
luas = 2* (panjang*lebar + panjang*tinggi + lebar*tinggi)
Kita jalankan program tersebut:
>> prog_balok
volume =
97.5000
luas =
134
2. Menghitung Volume
% Fungsi untuk menghitung volume &
% luas permukaan balok: hitung_balok.m
function [vol,area] = hitung_balok(p,l,t)
vol = p*l*t; % hitung volume
area = 2*(p*l + p*t + l*t); % luas permukaan
Kita jalankan fungsi tersebut:
>> [V,L] = hitung_balok(10,5,3)
V =
150
L =
190
3. Menghitung Volume
% Fungsi untuk menghitung volume &
% luas permukaan prisma segi-4: hitung_prisma.m
function [vol,area] = hitung_prisma(p,l,t)
vol = 1/3*p*l*t; % hitung volume
% hitung tinggi segitiga pada sisi lebar alas
BAB 5
Grafik Dua Dimensi
plot(x,y)
>> x=0:0.25:10;
stairs(x,sin(x));
5. Grafik Polar, mencetak fungsi perkalina sin dan cos dalam bentuk polar.
>> t=0:.01:2*pi;
>> polar(t,abs(sin(2*t).*cos(2*t)));
ezplot('sin(t)*cos(t)/t','sin(t)^2/t',[-6*pi,6*pi])
>> fplot('[cos(x),1-x^2/2,1-x^2/2+x^4/24]',[-pi,pi,-1,1])
11. Subplot. Memplot gelombang sinus, cosinus, kotak, dan gigi gergaji dengan melibatkan
command..
>> figure
t=0:0.05:10;
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')
2. Syntax matlabnya :
>> x = linspace(-10,10,150); % definisikan x
y1= sqrt(100 + x.^2); % hitung y1 s.d. y4
y2= sqrt(100 + 2.*x.^2);
y3= sqrt(100 + 4.*x.^2);
y4= sqrt(100 + 16.*x.^2);
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')
BAB 6
Grafik Tiga Dimensi
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])
2. Plot Helix
Mari kita mulai dengan plot garis di dalam ruang 3-dimensi.
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‟);
3. Plot Permukaan 1
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.
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);
>> 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);
6. Menggunakan esurf
Sebuah permukaan dapat dinyatakan sebagai sebuah fungsi dua variabel bebas,
( ) ( )
ezsurf('x*y*exp(-(x^2+y^2))')
8. Multi dimensional
>> [x,y] = meshgrid(-3:.1:3,-3:.1:3);
>> z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)- 10*(x/5 - x.^3 -
y.^5).*exp(-x.^2-y.^2)- 1/3*exp(-(x+1).^2 - y.^2);
>> surf(z)
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')
>> title('Peaks')
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
figure; surf(X,Y,Z);
grid on; xlabel(„x‟), ylabel(„y‟), zlabel(„z‟)
BAB 7
Diferensial dan Integral
elemen. Jika elemen bersifat numerik maka akan dicari differensial dari ekspresi tersebut. Di
bawah ini akan ditunjukkan penggunaan Matlab dalam rumus-rumus differensial .
1. Diferensial 1
Kerjakan diferensial berikut ini.
dy
y 2x4 2.4 x 41 8.x 3
dx
2. Diferensial 2
Kerjakan diferensial berikut ini.
dy
2x4 6x 5 8x3 6
dx
3. Diferensial 3
Kerjakan diferensial berikut ini.
dy
f ' ( x) g ' ( x)
dx
y x 2 ( x 2 2)
f ( x) x 2 f ' ( x) 2 x
g ( x) ( x 2) g ' ( x) 2 x
2
y ' 2 x( x 2 2) 2 x( x 2 )
4 x3 4 x
4. Diferensial 4
Kerjakan diferensial berikut ini.
y e 2 x 1
f ( x) 2 x 1 f ' ( x) 2
dy
e 2 x 1.2 2e 2 x 1
dx
5. Diferensial 5
Kerjakan diferensial berikut ini.
y sin( x 2 1)
f ( x) x 2 1 f ' 2 x
dy
[cos( x 2 1)].2 x 2 x cos( x 2 1)
dx
dengan program Matlab dapat dikerjakan sebagai berikut
>> syms x;
y=sin(x^2+1);
z=diff(y)
z =
2*x*cos(x^2 + 1)
Metode 2
Dengan command quad, kita terlebih dahulu harus mendefinisikan fungsi dalam M-file:
function y = myfun(x)
y = exp(-x.^3);
Kita hitung integral tersebut dengan toleransi yang berbeda: pergunakan m-fle editor
>> format long; % format bilangan “long”
>> int_1 = quad(„myfun‟,0,2,0.001), ...
int_2 = quad(„myfun‟,0,2,0.00001)
int_1 =
0.893097075892141
int_2 =
0.892952253878937
Metode 2
Dengan command quad8,
Kita bandingkan akurasinya dengan quad8:
>> int_3 = quadl(„myfun‟,0,2)
int_3 =
0.892953514295467
Ini adalah hasil paling akurat yang bisa diperoleh MATLAB.
∫ ∫
Metode 1 Trapz
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
for i = 1:50 % hitung integral unt setiap x(i)
integral(i) = quad('fungsiku',0,1,[],[],x(i));
end
Integral2 = trapz(x,integral)
[X,Y] = meshgrid(x,x);
Z = fungsiku(X,Y);
surf(X,Y,Z)
Integral2 =
0.510462132119748
Metode 2 dblquad
Cara lain yang lebih praktis untuk menghitung integral lipat-2 ialah menggunakan command
berikut ini dblquad.
Integral_dobel = dblquad('fungsiku',0,1,0,1)
Integral_dobel =
0.510444416971909
3. Hitung nilai 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:
∫ ∫ ∫ √
Buat fungsi terlebih dahulu. Harus dibuat. Simpan dengan nama funxyz.m
function w = funxyz(x,y,z)
w = sqrt(x.^2 + y.^2 + z.^2);
Metode 1
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
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 =
1.229346100129595e+002
Metode 2
Cara lain yang lebih praktis ialah menggunakan command berikut ini. 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
b. y x 1
2
f ( x) x 2 1 f ' ( x) 2 x
1
y x 1 ( x 1)
2 2 2
1 1
dy 1 2 1 x
x 1 (2 x) x[ x 1] 2
2 2
dx 2 x 1
2
c. y ln( x 2 1)
f ( x) x 2 1 f ' ( x) 2 x
dy 1 2x
2 .2x 2
dx x 1 x 1
1 sin x
d. f ( x)
cos x
2. Hitunglah integral terbatas berikut ini dengan metode trapezoid dan kuadratur:
∫ √
∫ ∫
BAB 8
Transformasi Z dan Laplace
8.3 Transformasi Z
Beberepa kegunaan dari transformasi-z adalah sebagai berikut:
a. Untuk menyelesaikan sistem persamaan.
b. Konvolusi dua buah sinyal
Matlab menyediakan function untuk mendapatkan transformasi-z dari suatu fungsi diskrit,
yaitu menggunakan ztrans. Lakukan langkah-langkah percobaan untuk mendapatkan
transformasi-z dari suatu fungsi sebagai berikut. Sebagai contoh :
1. Transformasi Z
Tentukan transformasi z dari y = 4n menggunakan MATLAB.
Hasilnya adalah
>> syms n
f=4^n;
F=ztrans(f)
F =
z/(z - 4)
Apabila dimodifikasi menjadi bentuk matematika maka :
>> pretty(F)
z
-----
z - 4
Sementara apabila di sederhanakan maka :
>> simplify(F)
ans =
4/(z - 4) + 1
2. Transformasi Z
Tentukan transformasi z dari y = e-n+n menggunakan MATLAB.
>> syms n
>> f=exp(-n)+n;
>> F=ztrans(f)
F =
z/(z - 1)^2 + z/(z - 1/exp(1))
3. Transformasi Z
Tentukan transformasi z dari y = e-n + sin n menggunakan MATLAB.
>> syms n
>> f=exp(-n)*sin(n);
>> F=ztrans(f)
F =
(z*exp(1)*sin(1))/(exp(2)*z^2 - 2*cos(1)*exp(1)*z + 1)
4. Invers Transformasi Z
Tentukan transformasi z dari persamaan berikut menggunakan MATLAB.
5. Invers Transformasi Z
Tentukan transformasi z dari persamaan berikut menggunakan MATLAB.
( )
( )( )
Maka syntaxnya adalah :
>> syms z n
f=iztrans((2*z^2)/((z-1)*(z-0.905)))
f =
400/19 - (362*(181/200)^n)/19
Sebab bentuk integral merupakan fungsi dalam parameter s, maka notasi lain yang biasa
digunakan adalah F(s) = L (f(t)).
1. Transformasi Laplace
Tentukan transformasi laplace dari f(t) = -1,25 + 3,5te-2t +1,25 e-2t menggunakan MATLAB.
Maka syntaxnya adalah :
>> syms t s
f=-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t);
F=laplace(f,t,s)
F =
5/(4*(s + 2)) + 7/(2*(s + 2)^2) - 5/(4*s)
Apabila hendak disederhanakan :
>> simplify(F)
ans =
(s - 5)/(s*(s + 2)^2)
2. Transformasi Laplace
Tentukan transformasi laplace dari f(t) = 3e-2t sin 5t + 4 e-2t cos 5t menggunakan MATLAB.
Maka syntaxnya adalah :
>> syms t s;
f = 3*exp(-2*t)*sin(5*t)+ 4*exp(-2*t)*cos(5*t);
F = laplace(f)
F =
(4*(s + 2))/((s + 2)^2 + 25) + 15/((s + 2)^2 + 25)
Apabila akan menyederhanakannya maka,
>> simplify (F)
ans =
(4*s + 23)/(s^2 + 4*s + 29)
/ sin(t) \
4 | cos(t) - ------ |
\ 2 /
4 - ---------------------
exp(2 t)
( )
y =
4/exp(2*t) + 6
>> pretty (y)
4
-------- + 6
exp(2 t)
( )
62 12 cos(4 t) 6 sin(4 t)
---------- - ----------- + ----------
5 exp(2 t) 5 5
( ) ( )
y =
cos((14^(1/2)*t)/3)/exp(t/3) +
(31*14^(1/2)*sin((14^(1/2)*t)/3))/(14*exp(t/3)) + 4
( )
( ) ( )
BAB 9
Transformasi Fourier
9.3 Transformasi Z
Fourier transform merupakan operasi matematika yang bertujuan untuk dekomposisi
dari suatu sinyal (umumnya bentuk time-domain) ke unsur pokok berdasarkan frekuensi yang
terkandung. Pada artikel ini akan diberikan ilustrasi Fourier transform dengan menggunakan
Matlab. 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:
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);
S = fft(sinyal,Fs);
plot(abs(S));
xlabel('frekuensi (Hz)'); ylabel('magnitude')
Plot grafik 1
subplot(2,1,1);
plot(t,y); grid on
axis([0 et -8 8]);
xlabel('Time (s)');
ylabel('Amplitude');
Fourier Transform
Y = fft(y);
n = size(y,2)/2;
amp_spec = abs(Y)/n;
Plot grafik 2
subplot(2,1,2);
freq = (0:79)/(2*n*dt);
plot(freq,amp_spec(1:80)); grid on
xlabel('Frequency (Hz)');
ylabel('Amplitude');
Y = fft(y,L);
Y = fftshift(Y);
Ys = Y.*conj(Y);
f = 1e6/L*(-(L/2):L/2-1);
plot(f,Ys)
xlim([-0.5e5 0.5e5])
xlabel('Frequensi (Hz)')
ylabel('Power')
title('Spektrum: fc=2e4 Hz, fm=1e3 Hz,index modulasi = 0.75')
figure(2);
plot(t,y);
xlim([0 2])
xlabel('Time (s)')
ylabel('Amplitudo')
title('Gelombang Hasil Modulasi')
ylabel('Magnitudo')
title('Spektrum AM: fc = 25 Hz, fm = 1 Hz, indek modulasi =
0.8')
f = 1e4/L*(-(L/2):L/2-1);
plot(f,Ys)
xlim([-20 20])
xlabel('Frequensi (Hz)')
ylabel('Magnitudo')
title('Spektrum: fc = 25 Hz, fm = 1 Hz, Indeks Modulasi =
0.8')
ylabel('Magnitudo')
title('Spektrum: fc = 25 Hz, fm = 1 Hz, indek modulasi = 0.8')
S=fft(s,512);
w=(0:255)/256*(Fs/2);
subplot(2,1,2)
plot(w,abs(S(1:256)))
xlabel('frequency')
BAB 10
Fungsi, Interpolasi, dan Statistik
Jika kita kalikan kedua polinomial tersebut, akan diperoleh sebuah polinomial baru:
>> p = conv(g,h)
p =
12 0 16 -6 -35 7
x1 =
0.0011
x2 =
0.7320
x3 =
1.2805
end
meshc(x,x,Z); % plot grafik 3-D plus kontur
>> meshc(x,x,Z); % plot grafik 3-D plus kontur
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‟)
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). 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];
p3 = polyfit(t,pres,3)
p4 = polyfit(t,pres,4)
p5 = polyfit(t,pres,5)
Maka jawabannya :
p3 =
0.5857 -6.9967 -38.3200 727.0393
p4 =
-0.3022 7.8645 -60.4717 77.6181 704.1170
p5 =
1.0e+003 *
0.0006 -0.0183 0.1908 -0.8055 1.0783 0.6648
10.8 Statistik
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
fungsifungsi statistik semacam ini telah ada dan bisa digunakan secara fleksibel.
Misalkan kita gunakan rata-rata data tinggi badan mahasiswa.
x=[175 177 173 165 160 170 174 177 168 170];
nilai_tengah = median(x), deviasi = std(x), variansi = var(x)
nilai_tengah =
171.5000
deviasi =
5.4661
variansi =
29.8778
Kita bisa mengurutkan data (sortir) di MATLAB dengan command berikut ini:
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
Histogram dan diagram batang yang kerap digunakan untuk menggambarkan data statistik
juga bisa ditampilkan dengan MATLAB dengan command berikut ini:
Mari kita coba gunakan data tinggi badan yang ada 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‟);
BAB 11
IIR dan FIR Filter
pole-pole yang ada diluar lingkaran, hal ini secara fisis memberikan arti bahwa filter yang
dihasilkan tidak stabil.
1. Filter IIR 1
Kita akan mencoba merancang sebuah low pass filter (LPF) IIR dengan memanfaatkan filter
Butterworth. Frekuensi cut off ditetapkan sebesar 2000 Hz. Dalam hal ini frekuensi sampling
adalah 10000 Hz. Langkah realisasi dalam Matlab adalah sebagai berikut.
clear all;
R=0.2;
N=16;
Wn=0.2;
figure(1);
[B,A] = butter(N,Wn);
[H,w]=freqz(B,A,N);
len_f=length(H);
f=1/len_f:1/len_f:1;
plot(f,20*log10(abs(H)),'linewidth',2)
grid on
2. Filter IIR 2
Desain low pass butterwoth IIR filter dengan cut off frekuensi 300 Hz yang berorde 5 dan
frekuensi sampling 1000 Hz. Gunakan metode standar, impulse invariant method dan
bilinear method.
1. Filter FIR 1
Kita akan merancang sebuah LPF dengan frekuensi cut off sebesar 2000 Hz.
Frekuensi sampling yang ditetapkan adalah 10000 Hz. Orde filter ditetapkan sebesar 32.
Maka langkah pembuatan programnya adalah sebagai berikut:
fs=10000;
Wn = .20;
N = 32;
LP = fir1(N,Wn);
[H_x,w]=freqz(LP);
len_f=length(H_x);
f=1/len_f:1/len_f:1;
plot(f,20*log10(abs(H_x)))
grid on
2. Filter FIR 2
Kita akan merancang sebuah Band Pass Filter (BPF) dengan frekuensi cut off sebesar
2000 Hz (untuk daerah rendah) dan 5000 Hz (untuk daerah tinggi). Frekuensi sampling yang
ditetapkan adalah 10000 Hz. Orde filter ditetapkan sebesar 32. Beberapa bagian program
diatas perlu modifikasi seperti berikut.
fs=10000;
Wn1 = [.20, .50];
N = 32;
BP = fir1(N,Wn1);
[H_x,w]=freqz(BP);
len_f=length(H_x);
f=1/len_f:1/len_f:1;
plot(f,20*log10(abs(H_x)))
grid on
plot(f,20*log10(abs(H_x)))
grid on
BAB 12
Graphical User Interface
Pada Quick Start dialog, select Blank GUI (Default) template. Click OK maka akan
menampilakn Layout Editor, terlihat dibawah ini.
Untuk memudahkan pemahaman, buatlah GUI sederhana berikut. Pembuatan GUI ini
di bagi dalam 3 tahap yakni :
1. Perancangan GUI akan lebih baik jika tampilan GUI digambar terlebih dahulu dalam
kertas
2. Penempatan dan pengaturan objek seperti pushbutton, axis dll
3. Pemrograman GUI membuat program bagi objek-objek GUI di M-File
Ketika kita membuat layout GUI kemudian menyimpannya, maka MATLAB akan
membuat M-File secara otomatis yang nantinya akan digunakan untuk pemrograman. Nama
M-File harus sama dengan nama figure dari GUI tersebut.
Langkah-langkah :
1. Silahkan anda membuat plot seperti dibawah ini.
a. 3 buah push button
b. 1 buah axes
c. 1 buah static text
d. 1 buah pop-up menu
2. Rapihkan push button dengan menekan CRTL dan menclick push button ketiganya.
Kemudian pilih Tools dan Align Object.
Atur align object sehingga mengikuti gambar dibawah ini. Set spacing 20 pixel.
Click 2 kali : Push Button 1 lalu pilih string.. Ganti Push Button 1 menjadi Surf
Click 2 kali : Push Button 2 lalu pilih string.. Ganti Push Button 2 menjadi Mesh
Click 2 kali : Push Button 3 lalu pilih string.. Ganti Push Button 3 menjadi Contour
Click 2 kali : Pop-up Menu lalu pilih string.. Ganti Pop-up Menu menjadi
Peaks
Membrane
Sinc
Click 2 kali : Static Text lalu pilih string.. Ganti Static Text menjadi Select Data
2. Create data for the GUI to plot by adding the following code to the opening function
immediately after the comment that begins % varargin...
% Create the data to plot.
handles.peaks=peaks(35);
handles.membrane=membrane;
[x,y] = meshgrid(-8:.5:8);
r = sqrt(x.^2+y.^2) + eps;
sinc = sin(r)./r;
handles.sinc = sinc;
% Set the current data value.
handles.current_data = handles.peaks;
surf(handles.current_data)
Kemudian click RUN maka akan menujukan tampilan
2 Add the following code to the callback immediately after the comment that
begins % handles...
3 Repeat steps 1 and 2 to add similar code to the Mesh and Contour push
button callbacks.
• Add this code to the Mesh push button callback, pushbutton2_Callback:
% Display mesh plot of the currently selected data.
mesh(handles.current_data);
BAB 13
Simulink
13.3 Simulink
Simulink adalah salah satu bagian dari MatLab. Simulink dapat digunakan untuk
mensimulasi sistem artinya mengamati dan menganalisa perilaku dari TIRUAN sistem.
Tiruan sistem diharapkan mempunyai perilaku yang sangat mirip dengan sistem fisik. Jika
digunakan dengan benar, simulasi akan membantu proses analisis dan desain sistem.
Simulink mendukung banyak simulasi diantaranya :
a. sistem linier,
b. sistem kontrol,
c. sistem yang menggunakan logika,
d. jaringan syaraf tiruan,
e. telekomunikasi, dan lain-lain.
Simulink dapat digunakan sebagai sarana pemodelan, simulasi dan analisis dari sistem
dinamik dengan menggunakan antarmuka grafis (GUI). Simulink terdiri dari beberapa
kumpulan toolbox yang dapat digunakan untuk analisis sistem linier dan non-linier. Beberapa
library yang sering digunakan dalam sistem kontrol antara lain math, sinks, dan sources.
Pada gambar 13.4 terlihat perbandingan transmiter dan receiver terdapat satu buah bit error
hal itu juga terlihat pada gambar 13.5 dibawah ini.
DAFTAR PUSTAKA