Tutorial Matlab
Tutorial Matlab
Salah satu kelebihan dari MATLAB adalah kemampuan untuk membuat program
(programming) langsung dari windows MATLAB dengan menggunakan fasilitas
Editor seperti yang dapat dilihat dalam windows di bawah ini :
Di mana pada EDITOR tersebut, seluruh perintah operasi dapat dituliskan dan
disimpan atau di SAVE dengan suatu nama dengan extension m sehingga anda
tidak perlu untuk menulis ulang seluruh perintah setiap kali anda akan
menghitung.
hijau : dengan diawali tanda % maka teks setelah tanda % tidak akan
diikutkan dalam perhitungan atau hanya berupa komentar.
biru : teks yang berwarna biru adalah perintah atau command dalam
program MATLAB.
Loop yang menggunakan fungsi for akan mengulang satu kelompok perintah
antara for dan end sebanyak jumlah yang dibatasi oleh batas bawah dan batas
bawah. Contoh :
for n = 1:10
r(n) = 10+n;
end
>> r
r =
11 12 13 14 15 16 17 18 19 20
Untuk array 2-Dimensi seperti H(i,j) , maka dapat dilakukan lebih dari 1 loop
seperti contoh di bawah ini :
for i = 1:5
for j = 1:10
H(i,j) = 1/(i+j);
end
end
>> H
H =
Columns 1 through 6
Columns 7 through 10
While
Perintah while adalah perintah loop seperti for , tetapi bukan dibatasi oleh jumlah
langkahnya (indefinite) seperti pada for melainkan dibatasi dengan suatu
pernyataan (statements) sampai pernyataan itu tidak lagi dipenuhi.
a=10;b=5;
while (a-b) > 0.1
x = (a+b)/2
pause pause dan akan berjalan lagi jika menekan keyboard
a = x;
end
Outputnya adalah :
x =
7.5000
x =
6.2500
x =
5.6250
x =
5.3125
x =
5.1563
x =
5.0781
Jika keyword end tidak dimasukkan, maka akan ada ERROR message pada
MATLAB prompt.
Break
Perintah (statement) break akan menghentikan program dan keluar dari program
pada saat loop for atau loop while sedang berjalan
Pause
Perintah (statement) pause akan menghentikan sementara jalannya program
untuk kepentingan pengecheckan perhitungan dan program akan berjalan kembali
dengan menekan tombol keyboard.
Contoh :
Program Bisection adalah suatu program untuk mencari akar (root) dengan cara
membagi dua jarak antara batas bawah dan batas atas dari suatu persamaan di
mana variable (unknown) yang dicari berada di sebelah kiri dan kanan tanda
sama dengan (=).
g 2 2h
L T tanh
2 L
NIM = 43;
T = NIM/10;
g = 9.81;
Nh = 51
h = linspace(0,50,Nh);
end
end
% Plot h vs L
plot(h,L,'g^',h,L,'--')
xlabel('Kedalaman Perairan, h (m)')
ylabel('Panjang Gelombang,\lambda (m)')
title('Bisection Method')
Function ini harus ditulis dalam sebuah filename dengan extension '.m' . Pada
saat suatu program akan memanggil program, maka harus memanggil nama
filename dengan extension of '.m' tadi.
clear all
close all
function xdot = f( s, x )
eps = 0.00737;
c0 = 1500;
z = x( 2 );
xt = 2 * ( z - 1300 ) / 1300;
c = c0 * ( 1 + eps * ( xt - 1 + exp( -xt ) ) );
c2 = c^2;
dxtdz = 2 / 1300;
cz= c0 * eps * dxtdz * ( 1 - exp( -xt ) );
cr = 0;
xdot = zeros( 4, 1 );
xdot( 1 ) = c * x( 3 );
xdot( 2 ) = c * x( 4 );
xdot( 3 ) = -cr / c2;
xdot( 4 ) = -cz / c2;
DATA ANALYSIS
Data-data hasil survey atau penelitian biasanya akan disimpan dalam format XLS
atau TXT. Untuk mengubah format tersebut di atas, diperlukan perintah-perintah
khusus seperti :
[A,B] = XLSREAD(‘FILENAME’,’SHEET’)
di mana :
FILENAME: Nama file yang memiliki format 'xls' (xls boleh dicantumkan
atau tidak).
SHEET: Nama worksheet dalam workbook FILENAME jika terdapat lebih
dari satu worksheet dalam workbook.
Contoh :
[A,B] = XLSREAD('suh01_sound_speed_vs_depth','SUH01')
artinya :
A=
1.0e+003 *
>> whos
Name Size Bytes Class
yang telah memisah data-data untuk Depth, Kecepatan Suara, Temperatur, dan
Salinitas
Selain itu ada juga data-data hasil survey atau penelitian yang disimpan dalam
format mat.
Contoh :
Load data-data gelombang yang berada pada channel 1 sampai 8 yang masing-
masing berisi 20.000 data.
col5 = data(5,:); % load channel 5
col6 = data(6,:); % load channel 6
Load data-data gelombang yang berada pada channel 5 dan 6 yang masing-
masing berisi 20.000 data.
pcol5=col5/32768*100*.3; %scaling
pcol6=col6/32768*100*.3;
t5=linspace(0,25000,20000);
plot(t5,y5)
%Low-Pass Filter
[b1,a1]=butter(10,50/400);
%Band-Pass Filter
[b2,a2]=butter(10,[50/400 150/400]);
%High-Pass Filter
[b3,a3]=butter(10,150/400,'high');
%Plotting
yf1=filter(b1,a1,y5);
yf2=filter(b2,a2,y5);
yf3=filter(b3,a3,y5);
figure
%Plotting
subplot(3,1,1), plot(t5,yf1);
axis([0 25000 -3 3]);
title ('Low-Pass Filter - Channel 1')
xlabel('Time (microseconds)')
ylabel('Pressure (Pa)')
subplot(3,1,2), plot(t5,yf2);
axis([0 25000 -3 3]);
title ('Band-Pass Filter - Channel 1')
xlabel('Time (microseconds)')
ylabel('Pressure (Pa)')
ylabel('Pressure (Pa)')
subplot(3,1,3), plot(t5,yf3);
axis([0 25000 -3 3]);
title ('High-Pass Filter - Channel 1')
xlabel('Time (microseconds)')
figure
%Low-Pass Filter
[b1,a1]=butter(5,50/400);
%Band-Pass Filter
[b2,a2]=butter(5,[50/400 150/400]);
%High-Pass Filter
[b3,a3]=butter(5,150/400,'high');
%Plotting
yf1=filtfilt(b1,a1,y5);
yf2=filtfilt(b2,a2,y5);
yf3=filtfilt(b3,a3,y5);
%Plotting
t1=linspace(0,25000,20000);
subplot(3,1,1), plot(t1,yf1);
axis([0 25000 -3 3]);
title ('Low-Pass Filtfilt - Channel 1')
xlabel('Time (microseconds)')
ylabel('Pressure (Pa)')
subplot(3,1,2), plot(t1,yf2);
axis([0 25000 -3 3]);
title ('Band-Pass Filtfilt - Channel 1')
xlabel('Time (microseconds)')
ylabel('Pressure (Pa)')
subplot(3,1,3), plot(t1,yf3);
axis([0 25000 -3 3]);
title ('High-Pass Filtfilt - Channel 1')
xlabel('Time (microseconds)')
ylabel('Pressure (Pa)')
%figure
%Do loop for Time Windows
n=39;
for i=1:n
%Auto-correlation for time window between tau and tau+1000
a(i,1:1999)=xcorr(mcol5((((i-1)*500)+1):(((i-1)*500)+1000)),'coeff');
end
figure
%Do loop for Time Windows
n=39;
for i=1:n
%Cross-correlation for time window between tau and tau+1000
b=(mcol5((((i-1)*500)+1):(((i-1)*500)+1000)));
c=(mcol6((((i-1)*500)+1):(((i-1)*500)+1000)));
rxy(i,1:1999)=xcorr(b,c,'coeff');
end
figure
%Specgram Function
specgram(mcol5,256,800000);
title('Time-Frequency Structure for Channel-2')
xlabel('Time (seconds)')
ylabel('Frequency (Hz)')
colormap jet
colorbar ('vert')
%FFT Function
fs=800000;
sp=fft(mcol5);
mg=abs(sp);
ms=mg.*mg;
p=nextpow2(mcol5);
freq=[0:2^(p-1)-1]*fs/(2^p);
figure
plot(freq,ms(1:2^(p-1)))
title('2-sided spectral density')
ylabel('2-sided spectral density')
xlabel('Frequency (Hz)')
axis([0 20000 0 1500000])
%colormap gray
%colorbar ('vert')
mcol5_ifft=ifft(sp);
y5r = real(mcol5_ifft);
figure
plot(t5,y5r)
Artinya : harga mean dari data akan berjumlah 20.000 yang merupakan harga
mean dari 8 data (baris) dalam 20.000 kolom.
>> mean (data')
ans =
1.0e+004 *
Artinya : harga mean dari data akan berjumlah 8 yang merupakan harga mean
dari 20.000 data (kolom) dalam 8 baris.
Artinya : harga median dari data akan berjumlah 20.000 yang merupakan harga
median dari 8 data (baris) dalam 20.000 kolom.
ans =
1.0e+004 *
Artinya : harga median dari data akan berjumlah 20.000 yang merupakan harga
median dari 8 data (baris) dalam 20.000 kolom.
ans =
ans =
ans =
ans =
1.0e+005 *
Bentuk Distribusi
Bentuk dari sebuah distribusi lebih sulit untuk dihitung daripada lokasi atau skala.
MATLAB memiliki fungsi hist yang akan memplot sebuah histogram yang akan
memperlihatkan visualisasi dari data :
>> hist(data(:,5))
>> hist(data(5,:))