Anda di halaman 1dari 32

PROGRAMMING DENGAN 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.

Contoh tampilan EDITOR adalah sebagtai berikut :


di mana warna-warna yang tertera dalam EDITOR menunjukkan suatu operasi
tertentu :

hijau : dengan diawali tanda % maka teks setelah tanda % tidak akan
diikutkan dalam perhitungan atau hanya berupa komentar.

hitam : seluruh teks yang berwarna hitam akan di execute dalam


program MATLAB.

biru : teks yang berwarna biru adalah perintah atau command dalam
program MATLAB.

ungu : teks yang berwarna ungu adalah argument dalam program


MATLAB.

KONTROL ALIR (FLOW CONTROL) dalam MATLAB

Kontrol Loop (Loop Control) for, while, continue, break

Fungsi dalam MATLAB yang berfungsi sebagai kontrol dalam perhitungan


berulang (loops). Perintahnya adalah :
For

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
0.5000 0.3333 0.2500 0.2000 0.1667 0.1429
0.3333 0.2500 0.2000 0.1667 0.1429 0.1250
0.2500 0.2000 0.1667 0.1429 0.1250 0.1111
0.2000 0.1667 0.1429 0.1250 0.1111 0.1000
0.1667 0.1429 0.1250 0.1111 0.1000 0.0909
Columns 7 through 10
0.1250 0.1111 0.1000 0.0909
0.1111 0.1000 0.0909 0.0833
0.1000 0.0909 0.0833 0.0769
0.0909 0.0833 0.0769 0.0714
0.0833 0.0769 0.0714 0.0667

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

Kontrol Konditional (Conditional Control)

Perintah dalam MATLAB yang digunakan untuk mengontrol program dengan


Konditional. Perintah tersebut yaitu :

if, else, and elseif

Pernyataan (statement) if mengevaluasi ekspresi logikal dan meng execute satu


kelompok pernyataan (statements) jika ekspresi yang dinyatakan setelah if
adalah benar.

Sementara pernyataan (statement) else dan elseif menyediakan pilihan


dalam meng execute of suatu kelompok pernyataan.

Keyword end harus selalu dimasuukan untuk keseluruhan perintah di atas yaitu
for, while, if, else and elseif untuk menghentikan pernyataan
setelah perintah-perintah tersebut.

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 :

Jalankan Program Bisection terlampir

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 (=).

Persamaan DISPERSI di bawah ini untuk mencari panjang gelombang L jika


diketahui perioda gelombang T dan kedalaman perairan h .

g 2 2h
L= T tanh
2 L

Contoh program dalam MATAB Editor

clear all membersihkan variable yang ada


close all menutup semua grafik yang ada

% Choose Period T, Gravitation g, and Water Depth h komentar anda

NIM = 43;
T = NIM/10;
g = 9.81;
Nh = 51
h = linspace(0,50,Nh);

% Pick no of iteration (Niter) komentar anda


Niter = 100; jumlah iterasi yang diberikan

for K = 1:Nh, Ada Nh=51 kedalaman h yang dipilih

% Choose Lower and Upper Limit (Xl and Xu)


Xl = 0.0;
Xu = 100.0;

for I = 1:Niter, looping iterasi dari 1 sampai Niter = 100

Xc(I) = 0.5*(Xl+Xu); % Bi-Section (Interval Halving)


Fungsi = Xc(I) - (g*T^2)/(2*pi)*tanh(2*pi*h(K)/Xc(I)); Jika Fungsi = 0 artinya
harga L diperoleh
if abs(Fungsi) < 1e-5 Fungsi tidak akan = 0 karena ada error
L(K) = Xc(I) Jika Fungsi < error, maka harga L diperoleh
Iterasi = I
break
elseif Fungsi < 0
Xl = Xc(I);
else
Xu = Xc(I);
end

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')

Hasil plotnya adalah sebagai berikut :

FUNCTION
Dalam MATLAB terdapat banyak sekali fungsi (function) seperti telah dijelaskan
sebelumnya. Fungsi dalam MATLAB telah dibuat untuk kenyamanan pengguna
sehingga pengguna tidak harus membuat perintah-perintah yang banyak
digunakan dalam perhitungan sehari-hari seperti fungsi sin, cos, mean, pi dan
lain-lain.

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.

Contoh : File dalam RAYS.m

clear all
close all

send = 100000; % arclength for rays

ntheta = 101; % number of rays


theta = pi / 180 * linspace( -15.0,15.0, ntheta );

zs = 1000.0; % source depth


c0 = 1525; % sound speed at source depth

for ith = 1:ntheta % loop over take-off angle

% ray initial condition:


x0 = [ 0.0 zs cos( theta( ith ) ) / c0 sin( theta( ith ) ) / c0 ];

% now solve the DE to trace the ray


[ s, x ] = ode45( 'RAYF', [0.0 send], x0 );

plot( x( : , 1 ), abs(x( : , 2 ) ));


% subplot(1,2,2), plot( x( : , 1 ), abs(x( : , 2 ) ));
hold on; % hold the old rays on screen when plotting new rays
end
hold off;

File dalam RAYF.m

function xdot = f( s, x )

% Munk sound speed profile

eps = 0.00737;
c0 = 1500;
z = x( 2 );
xt = 2 * ( z - 1300 ) / 1300;
c = c0 * ( 1 + eps * ( xt - 1 + exp( -xt ) ) );

c2 = c^2;
% we also need derivatives of sound speed

dxtdz = 2 / 1300;
cz= c0 * eps * dxtdz * ( 1 - exp( -xt ) );
cr = 0;

% here's the RHS

xdot = zeros( 4, 1 );

xdot( 1 ) = c * x( 3 );
xdot( 2 ) = c * x( 4 );
xdot( 3 ) = -cr / c2;
xdot( 4 ) = -cz / c2;
DATA ANALYSIS

Setiap analisa data memiliki komponen standard seperti :

Preprocessing seperti menyelidiki outliers dan nilai yang hilang,


dan data smoothing to identify possible models.
Peringkasan menghitung statistics untuk menunjukkan jumlah,
skala, dan bentuk dari data.
Visualisasi Plot data untuk mengidentifikasi pola dan trend.
Modeling Mendeskripsikan data trend yang sesuai untuk
memprediksi nilai yang baru.

Karena MATLAB dapat menampilkan data-data dalam bentuk Matriks, maka


MATLAB dapat melakukan proses analisa statistik. Sesuai kebiasaan, maka data
akan disimpan dalam kolom pada suatu matriks. Jika data-data yang ada
disimpan dalam baris maka untuk mempermudah akan dilakukan dengan proses
TRANSPOSE untuk mengubah orientasi dari baris menjadi kolom.

Loading Data

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' (boleh dicantumakan


atau tidak).
SHEET: Nama worksheet dalam workbook FILENAME jika terdapat lebih
dari satu worksheet dalam workbook.
A : Matriks n x m yang berisi data dalam workbook FILENAME yang
terdiri dari kolom dan baris

B : Matriks r x s yang berisi teks dalam workbook FILENAME yang


biasanya merupakan judul atau header dari setiap kolom.

Contoh :
[A,B]=XLSREAD('SUH01_sound_speed_vs_depth', 'SUH01')
A =
1.0e+003 *
0.0010 1.5402 0.0286 0.0326
0.0020 1.5402 0.0286 0.0326
0.0030 1.5402 0.0286 0.0326
0.0040 1.5403 0.0286 0.0326
0.0050 1.5403 0.0286 0.0326
0.0060 1.5403 0.0286 0.0326
0.0070 1.5403 0.0286 0.0326
0.0080 1.5403 0.0286 0.0326
0.0090 1.5403 0.0286 0.0326
.. ..
.. ..
0.1220 1.5245 0.0204 0.0347
0.1230 1.5245 0.0204 0.0348
0.1240 1.5245 0.0204 0.0348
0.1250 1.5245 0.0204 0.0348
0.1260 1.5245 0.0204 0.0348
0.1270 1.5244 0.0204 0.0348
0.1280 1.5244 0.0204 0.0347

B =
'Depth' 'C' 'T' 'S'
'(m)' '(m/s)' '(deg C)' '(ppt)'

Jika anda ingin mengubah variable A menjadi variable-variable yang lebih


familiar dengan anda, maka anda dapat melakukan seperti :
D = A(:,1); % Kedalaman, D (m)
C = A(:,2); % Kec Suara, C (m/s)
T = A(:,3); % Temperatur, T (deg C)
S = A(:,4); % Salinitas, S (ppt)

atau

load filename.txt

di mana :

FILENAME: Nama file yang memiliki format 'txt'.


Sehingga variable baru yang akan terbentuk adalah filename, kemudian anda
dapat mengganti nama variable tersebut ke dalam nama yang sesuai.

Contoh :

>> load test.txt


>> whos
Name Size Bytes Class
test 7799x4 249568 double array

Sehingga anda memiliki data test yang terdiri dari 7799 baris dan 4 kolom.

Jika anda ingin mengubah variable A menjadi variable-variable yang lebih


familiar dengan anda, maka anda dapat melakukan seperti :
D = test(:,1); % Kedalaman, D (m)
T = test(:,2); % Temperatur, T (deg C)
S = test(:,3); % Salinitas, S (ppt)
C = test(:,4); % Kec Suara, C (m/s)

Hasilnya adalah :

>> whos
Name Size Bytes Class
C 7799x1 62392 double array
D 7799x1 62392 double array
S 7799x1 62392 double array
T 7799x1 62392 double array
test 7799x4 249568 double array

Atau kadang-kadang data-data hasil survey atau penelitian biasanya akan


disimpan dalam format MAT yang merupakan format binary MATLAB yang
standard. Untuk mengakses file tersebut di atas, diperlukan perintah-perintah
seperti :
load filename.mat

Contoh :

>> load wave.mat % load data


>> whos
Name Size Bytes Class
data 8x20000 1280000 double array

yaitu data yang terdiri dari 8 baris. dan 20000 kolom.


Data yang Hilang

NaN (Not a Number) dalam MATLABbiasanya menyatakan data yang hilang.

Untuk mencek data yang hilang pada kolom ke 3 dari data yang anda load, maka
perintahnya adalah :

>> c3 = data(:,3)
c3 =
18925
19013
15642
19001
18906
19278
18698
19458
>> sum(isnan(c3))

ans =
0

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;

Data-data gelombang yang berada pada channel 5 dan 6 yang masing-masing


berisi 20.000 data yang berupa nilai dalam mvolt dan akan diubah tekanan dalam
Pascal.

mcol5=pcol5-mean(pcol5); % menghilangkan mean value


mcol6=pcol6-mean(pcol6);

Data-data gelombang yang berada pada channel 5 dan 6 yang masing-masing


berisi 20.000 data akan dihilangkan trendnya atau harga rata-ratanya (mean value)
dengan mengurangkan nilai dengan harga meannya atau dapat dilakukan dengan
perintah Detrend seperti di bawah ini :

mcol5 =detrend (pcol5);


mcol6 =detrend (pcol6);

Menentukan Lokasi
Menentukan lokasi dari data adalah menemukan nilai-nilai typical. Dalam
menentukan lokasi atau central tendency akan digunakan fungsi seperti
mean, median, and mode :

>> mean (data);

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 *

1.9100 1.9127 1.5991 1.9177 1.9092 1.9059


1.9072 1.9174

Artinya : harga mean dari data akan berjumlah 8 yang merupakan harga mean
dari 20.000 data (kolom) dalam 8 baris.

>> median (data);

Artinya : harga median dari data akan berjumlah 20.000 yang merupakan harga
median dari 8 data (baris) dalam 20.000 kolom.

>> median (data')

ans =

1.0e+004 *

1.9100 1.9126 1.5989 1.9167 1.9098


1.9065 1.9074 1.9170

Artinya : harga median dari data akan berjumlah 20.000 yang merupakan harga
median dari 8 data (baris) dalam 20.000 kolom.

Menghitung Nilai Maksimum, Minimum, Standard Deviasi, dan


Variance
Menghitung nilai-nilai typical dalam statistik seperti nilai-nilai maksimum
(max), minimum (min), standar deviasi (std) dan variance (var) dengan
mengunakan fungsi-fungsi seperti max, min, std dan var :

>> max (data')

ans =

22060 23518 18879 23130 21215


23732 22936 21642

>> min (data')

ans =

16466 14820 13096 15470 16211


14716 15407 16351

>> std (data')

ans =

635.9286 673.9284 613.1781 790.3452 495.3453 711.2759


650.1323 497.8237

>> var (data')

ans =

1.0e+005 *

4.0441 4.5418 3.7599 6.2465 2.4537 5.0591


4.2267 2.4783

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,:))

Visualizing Data
Anda dapat menggunakan berbagai jenis grafik dalam MATLAB untuk
menvisualisasi pola data dan trendnya. Plot Scatterdapat membantu untuk
menvisualisasikan data-data tersebut.

Contoh :

Scatter Plot 2-D :

A 2-D scatter plot, created with the scatter function, shows the relationship
between the traffic volume at the first two intersections:
>> c5 = data(5,:); % Data at channel 5
>> c6 = data(6,:); % Data at channel 6
>> scatter(c5,c6,'filled')
>> xlabel('Channel 5')
>> ylabel('Channel 6')

Plot :
Covariance
Untuk menghitung covariance, dapat menggunakan fungsi cov yang mengukur
bagaimana kekuatan hubungan linear antara dua variabel (bagaimana kedekatan antara
data yang terdapat pada garis least-squares yang melalui the scatter):

>> C56 = cov([c5 c6])


C56 =
1.0e+005 *
2.4537 -0.4908
-0.4908 5.0591

Hasil covariance ditampilkan dalam matriks square simetris, di mana covariance dari
variabel ke I dan j dalam posisi (i, j). Elemen pada diagonal ke I adalah variance dari
variable ke i.

Harga Covariance tergantung pada unit yang digunakan dalam mengukur variabel
individual. Anda dapat membagi covariance dengan standard deviasi untuk
menormalkannya menjadi antara +1 and 1.

Fungsi corrcoef dalam MATLAB akan menghitung koefisien korelasi sebagai berikut :

>> R56 = corrcoef([c5 c6])


R56 =

1.0000 -0.1393
-0.1393 1.0000

>> r56 = R56(1,2) % Correlation coefficient


R56 =
-0.1393

>> r56sq = r56^2 % Coefficient of determination


r56sq =
0.0194

Plot Scatter 3-D


Plot scatter 3-D akan menampilkan fungsi scatter3 yang menunjukkan hubungan
antara data-data pada channel 5, 6, dan 7 :

>> c5 = data(5,:); % Data at channel 5


>> c6 = data(6,:); % Data at channel 6
>> c7 = data(7,:); % Data at channel 7
>> figure
>> scatter3(c5,c6,c7,'filled')
>> xlabel('Channel 5')
>> ylabel('Channel 6')
>> zlabel('Channel 7')

Hasilnya :

Untuk mengetahui kekuatan hubungan linear di antara 3 channel dalam plot


scatter 3-D dapat dilakukan dengan menghitung eigenvalue dari matriks covariance
dengan perintah fungsi eig
:

>> vars = eig(cov([c5 c6 c7]))


vars =
1.0e+005 *
2.3432
3.9398
5.4565

>> explained = max(vars)/sum(vars)


explained =
0.4648

Plot Scatter berbentuk Matrix


Dengan menggunakan fasilitas fungsi plotmatrix , maka anda dapat
membandingkan hubungan antara data pada channel yang satu dengan data pada
channel yang lain:

PLOTMATRIX (data) akan memplot plot scatter antara kolom-kolom yang


berada pada data di mana pada bagian diagonal akan diisi oleh plot histrogram
dengan perintah HIST(data(:,i))

Contoh :

>> plotmatrix(data')

yaitu plot dari scatter dan histrogram dari semua channel pada data.

>> plotmatrix(data(1:3,:)')

yaitu plot dari scatter dan histrogram dari data pada channel 1 sampai 3.
Modeling Data
Umum
Model parametrik menterjemahkan pengertian tentang hubungan antar data ke dalam
suatu hubungan analitis atau matematis dengan menerapkan prakiraan pangkat dari
suatu persamaan. Polynomial merupakan pilihan yang tepat dalam mengikuti trend
dari data salinitas dan temperatur.

Polynomial Regression

Fungsi polyfit digunakan untuk mendapatkan koefisien dari suatu persamaan


polynomial yang berbentuk :

y = p1 x n + p 2 x n 1 + p 3 x n 2 + p 4 x n 3 + ....... + p n +1

[P,S] = POLYFIT(X,Y,N) akan mencari koefisien dari sebuah polinomial P(X)


berpangkat N yang dapat fit dengan data Y dengan error terkecil secara least-squares.

P adalah output dari Polyfit yang berisi vektor dalam baris yang berisi N+1 koefisien
polinomial in pangkat yang menurun : P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X +
P(N+1).

Contoh :

Pendekatan data-data temperature, salinitas, dan kecepatan suara dengan suatu


persamaan polynomial berpangkat N.
clear all
close all

% Baca EXCEL File


% A = Kedalaman, D (m) dan Temperature, T (degree C)
[A,B] = XLSREAD('suh01_sound_speed_vs_depth','SUH01');
D = A(:,1); % Kedalaman, D (m)
T = A(:,3); % Temperature, T (degree C)
% Polyfit (P(1)X^N + P(2)X^(N-1) + .......
% Orde N=6
% Polyfit Data dgn Persamaan Pangkat N
% CN = Sound Speed (m/s) dari Polyfit orde N

[P,S] = POLYFIT(D,T,12);
T12 = P(1)*D.^12+P(2)*D.^11+P(3)*D.^10+P(4)*D.^9+
P(5)*D.^8+P(6)*D.^7+P(7)*D.^6+P(8)*D.^5+P(9)*D.^4+
P(10)*D.^3+P(11)*D.^2+P(12)*D.^1+P(13)*D.^0;

[P,S] = POLYFIT(D,T,6);
T6 = P(1)*D.^6+P(2)*D.^5+P(3)*D.^4+P(4)*D.^3+P(5)*D.^2+
P(6)*D.^1+P(7)*D.^0;
[P,S] = POLYFIT(D,T,5);
T5 = P(1)*D.^5+P(2)*D.^4+P(3)*D.^3+P(4)*D.^2+P(5)*D.^1+
P(6)*D.^0;
% Plot T vs D
plot(T,D,'o',T12,D,'r',T5,D,'g',T6,D,'k')

axis ij
xlabel('Temperature, ^oC')
ylabel('Depth, D (m)')
legend('Data','N=12','N=5','N=6',4)

save test.txt P -ASCII


Plot :
clear all
close all
% Baca EXCEL File
% A = Kedalaman, D (m) dan Salinity, S (ppt)
[A,B] = XLSREAD('suh01_sound_speed_vs_depth','SUH01');
D = A(:,1); % Kedalaman, D (m)
SAL = A(:,4); % salinity, S (ppt)
% Polyfit (P(1)X^N + P(2)X^(N-1) + .......
% Orde N=6
% Polyfit Data dgn Persamaan Pangkat N
% CN = Sound Speed (m/s) dari Polyfit orde N

[P,S] = POLYFIT(D,SAL,12);
SAL12 = P(1)*D.^12+P(2)*D.^11+P(3)*D.^10+P(4)*D.^9+P(5)*D.^8+
P(6)*D.^7+P(7)*D.^6+P(8)*D.^5+P(9)*D.^4+P(10)*D.^3+
P(11)*D.^2+P(12)*D.^1+P(13)*D.^0;

[P,S] = POLYFIT(D,SAL,6);
SAL6 = P(1)*D.^6+P(2)*D.^5+P(3)*D.^4+P(4)*D.^3+P(5)*D.^2+
P(6)*D.^1+ P(7)*D.^0;
[P,S] = POLYFIT(D,SAL,5);
SAL5 = P(1)*D.^5+P(2)*D.^4+P(3)*D.^3+P(4)*D.^2+P(5)*D.^1+
P(6)*D.^0;
% Plot SAL vs D

plot(SAL,D,'o',SAL12,D,'r',SAL5,D,'g',SAL6,D,'k')
axis ij
xlabel('Salinity, ppt')
ylabel('Depth, D (m)')
legend('Data','N=12','N=5','N=6',4)
save test.txt P -ASCII

Plot :
Filtering Data

Umum

Filtering adalah suatu proses untuk memfilter data dari signal-signal yang tidak
diinginkan seperti data noise. Selain itu Filtering berfungsi juga untuk untuk
memisahkan data dengan frekuensi tertentu dari seluruh frekuensi domain dari data-
data yang dimiliki.

Fungsi Filter

Fungsi filter akan adalah merupakan fungsi filter digital 1-dimensi berdasarkan pada
vector A dan B yang diperoleh dari desain filter tertentu.

Y = FILTER(B,A,X)

Desain Filter

Desain filter akan menentukan nilai A dan B yang merupakan input pada fungsi filter .
Salah satunya adalah digital filter jenis Butterworth

[B,A] = BUTTER(N,Wn)

adalah desain filter digital Butterworth lowpass (default). Frequency cutoff Wn


harus berada di antara 0.0 < Wn < 1.0, di mana 1.0 menyatakan setengah (half) dari
sampling rate.

Jika Wn merupakan vector dengan 2 elemen seperti Wn = [W1 W2], maka BUTTER
akan melakukan filter bandpass with bandpassnya adalah : W1 < W < W2.

[B,A] = BUTTER(N,Wn,'high') adalah filter highpass.


[B,A] = BUTTER(N,Wn,'low') adalah filter lowpass.
[B,A] = BUTTER(N,Wn,'stop') adalah filter bandstop if Wn = [W1 W2].

Satu jenis digital filter lagi adalah Chebyshev

[B,A] = cheby1(N,R,Wn)

adalah desain filter digital Chebyshev lowpass (default) dengan R decibels dari ripple
peak-to-peak pada passband. Frequency cutoff Wn harus berada di antara 0.0 < Wn <
1.0, di mana 1.0 menyatakan setengah (half) dari sampling rate. Gunakan R=0.5
sebagai starting point, jika anda tidak yakin dalam menggunakan nilai R.
Jika Wn merupakan vector dengan 2 elemen seperti Wn = [W1 W2], maka BUTTER
akan melakukan filter bandpass with bandpassnya adalah : W1 < W < W2.

[B,A] = cheby1(N,R,Wn,'high') adalah filter highpass.


[B,A] = cheby1(N,R,Wn,'low') adalah filter lowpass.
[B,A] = cheby1(N,R,Wn,stop) adalah filter bandstop if Wn = [W1 W2].

Contoh : Anda dapat menjalankan program contoh_filter.m untuk melihat hasil filtering
data untuk low-pass, band-pass, dan high-pass

close all
clear all
load wave; % load data
col5 = data(5,:); % load channel 5
pcol5=col5/32768*100*.3; %scaling
mcol5=pcol5-mean(pcol5); % menghilangkan mean value
y5=mcol5;

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)')

Hasilnya adalah :
Koefisien Korelasi (Rxy )

Koefisien korelasi Rxy adalah koefisien yang menyatakan korelasi antara data A dan
B di mana harga yang maksimum menunjukkan korelasi yang paling maksimum..
Fungsinya adalah

Rxy = XCORR(A,B)

di mana :

XCORR(A) menyatakan korelasi antara data A dan A atau lebih dikenal dengan
fungsi auto-correlation.

XCORR(A,B) menyatakan korelasi antara data A dan B atau lebih dikenal dengan
fungsi cross-correlation.

XCORR(A), di mana A adalah matriks M N, akan berupa matriks besar dengan


baris 2*M-1 dimana kolom N^2 berisi harga auto-correlation data A.

XCORR(A,B), di mana A dan B adalah matriks M N, akan berupa matriks besar


dengan baris 2*M-1 dimana kolom N^2 berisi harga auto-correlation data A.

XCORR(.......,SCALEOPT), akan menormalkan koefisien korelasi sessuai dengan


data pilihan SCALEOPT :

'coeff' - normalisasi hasil sehingga koefisien auto-correlations pada lag ZERO


(nol) sama dengan 1.0.
'none' - tidak dinormalisasikan (ini adalah nilai default).

Contoh : Menghitung koefisien Auto-Correlation XCORR(A) atau XCORR(A,A)


Terlampir file contoh_auto_correlation.m :

close all
clear all

load wave; % load data


col5 = data(5,:); % load channel 5
col6 = data(6,:);

pcol5=col5/32768*100*.3; %scaling
pcol6=col6/32768*100*.3;

mcol5=pcol5-mean(pcol5); % menghilangkan mean value


mcol6=pcol6-mean(pcol6);

y5=mcol5;
y6=mcol6;
Fungsi Auto-Correlation antara data A dan A itu sendiri akan dilakukan per/setiap
time window (jendela waktu) di mana segmen jendela waktunya dipilih sepanjang
1000 t dengan data overlap sebesar 500 t. Kemudian segmen waktu tersebut
dibandingkan dengan keseluruhan data A untuk mendapatkan koefisien Auto-
Correlation (Rxx ).
Sehingga akan terdapat total (20000/500 1) = 39 data overlap, di mana hasil
data overlap atau koefisien korelasi adalah 2*M-1 atau (2*1000-1 = 1999).
Jadi anda akan memiliki data koefisien auto-correlation Rxx ( 39,1999) yaitu ada
39 data overlap dengan 1999 koefisien auto-correlation untuk setiap data
overlapnya.

% Fungsi Auto-Correlation (Rxx)


% 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

tau=linspace(-1000*1.25,999*1.25,1999); %tau spacing


tee=linspace(625,n*625,n)'; %t spacing
figure
waterfall(tau,tee,a);
title('Double-time Auto-correlation for Channel-5')
xlabel('\tau (microseconds)')
ylabel('t (microseconds)')
zlabel('Normalized R_x_x(\tau,t)')
%axis([-1250 1250 0 25000 -.7 1])
%view(2)
%colormap gray
%colorbar

Hasilnya adalah :
Keterangan :

Fungsi Waterfall adalah untuk memplot segmen per segmen di dalam satu grafik
3-Dimensi

waterfall(tau,tee,a)

Fungsi WATERFALL (...) adalah sama dengan MESH (...) hanya grafiknya tidak
digabungkan atau digambar per/setiap baris.

Contoh : Menghitung koefisien Cross-Correlation XCORR(A,B)


Perhitungan akan sama seperti di atas, hanya sekarang mencari koefisien
Cross-Correlation antara data A dan B.

Terlampir file contoh_auto_correlation.m :

close all
clear all

load wave; % load data


col5 = data(5,:); % load channel 5
col6 = data(6,:);
pcol5=col5/32768*100*.3; %scaling
pcol6=col6/32768*100*.3;

mcol5=pcol5-mean(pcol5); % menghilangkan mean value


mcol6=pcol6-mean(pcol6);

y5=mcol5;
y6=mcol6;

%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

tau=linspace(-1000*1.25,999*1.25,1999); %tau spacing


tee=linspace(625,n*625,n)'; %t spacing
waterfall(tau,tee,rxy);
title('Double-Time Cross-correlation between Channel-1 and
Channel-2')
xlabel('tau (microseconds)')
ylabel('t (microseconds)')
zlabel('Normalized Rxy(tau,t)')
axis([-1250 1250 0 25000 -.7 1])
%view(2)
colormap gray
%colorbar

Fungsi Fast Fourier Transform (FFT)


Fungsi Fast Fourier Transform (FFT) dapat digunakan untuk mengubah domain
time series dari data yang diperoleh menjadi domain frekuensi series.
Fungsi ini sangat bermanfaat untuk mencari frekuensi dominant pada data atau sinyal
di mana akan ditunjukkan pada energi yang ditampilkan pada sumbu vertical.

Sp = fft(mcol5)

di mana :

FFT(X) adalah Discrete Fourier transform (DFT) dari vektor X. Untuk


matriks, operasi FFT akan dilakukan pada setiap kolom.

FFT(X,N) adalah FFT dengan N-point artinya data akan diisi (padded) oleh
nol(zeros) jika X memiliki data kurang dari N dan akan dipotong jika X
memiliki lebih dari N.

Contoh :

%FFT Function

fs=800000; % Sampling Frequency


sp=fft(mcol5); % fft
mg=abs(sp); % Nilai ABS dari Energi krn ada imajiner
ms=mg.*mg; % Nilai Energi^2
p=nextpow2(mcol5);% Mencari 2^N yang melebihi jumlah data
freq=[0:2^(p-1)-1]*fs/(2^p); % Frequency akan dibagi dua karena
ada freq negatif dan positif

figure
plot(freq,ms(1:2^(p-1))) % Plot hanya diambil yang freq positif
title('2-sided spectral density')
ylabel('2-sided spectral density')
xlabel('Frequency (Hz)')
axis([0 20000 0 1500000])
%colormap gray
%colorbar ('vert')

Hasilnya :

Anda mungkin juga menyukai

  • Bahan Tayang WoG AB1
    Bahan Tayang WoG AB1
    Dokumen87 halaman
    Bahan Tayang WoG AB1
    Tharina Nursalika Adhyati
    100% (1)
  • Sni 1724-2015 PDF
    Sni 1724-2015 PDF
    Dokumen36 halaman
    Sni 1724-2015 PDF
    Tharina Nursalika Adhyati
    Belum ada peringkat
  • Tubes RBTA Tharina15012089
    Tubes RBTA Tharina15012089
    Dokumen78 halaman
    Tubes RBTA Tharina15012089
    Tharina Nursalika Adhyati
    Belum ada peringkat
  • Tugas OMP
    Tugas OMP
    Dokumen27 halaman
    Tugas OMP
    Tharina Nursalika Adhyati
    Belum ada peringkat
  • Admiralty
    Admiralty
    Dokumen12 halaman
    Admiralty
    Tharina Nursalika Adhyati
    Belum ada peringkat
  • Tugas OMP
    Tugas OMP
    Dokumen19 halaman
    Tugas OMP
    Tharina Nursalika Adhyati
    Belum ada peringkat
  • Tugas 1 Sinestesi
    Tugas 1 Sinestesi
    Dokumen4 halaman
    Tugas 1 Sinestesi
    Tharina Nursalika Adhyati
    Belum ada peringkat