38
BAB IV IMPLEMENTASI
Pada bagian ini, penulis akan memaparkan proses implementasi sistem pengujian yang telah dirancang ke dalam bahasa yang dapat dimengerti mesin.
Spesifikasi perangkat lunak yang digunakan dalam melakukan implementasi sistem pengujian adalah sebagai berikut :
1. Sistem operasi : Windows 7 Ultimate Edition.
2. MATLAB Version 7.10.0.499 R2010a.
4.1. Implementasi Proses
Subbab berikut akan menampilkan proses implementasi masing-masing proses utama yang terdapat dalam sistem pengujian, antara lain proses pembacaan
data ECG, penyandian data ECG, pengiriman data yang telah disandikan melalui kanal AWGN, dan pengawasandian data sandi yang diterima dari kanal.
4.1.1. Implementasi Proses Pembacaan Data ECG
Proses pembacaan data ECG merupakan proses yang akan mengolah data mentah, yaitu data ECG menjadi data-data yang siap dipakai di dalam tahap
penyandian data. Proses pembacaan data akan mengkonversi data ECG yang bertipe data unsigned integer menjadi data array bertipe integer. Proses
pembacaan data akan menggunakan tiga file yaitu file “.dat”, file “.hea”, dan file .”atr”. Setelah data berhasil dibaca, data disimpan ke dalam file “.mat”. Kode
program yang digunakan untuk membaca data ECG dapat dilihat pada lampiran 1. Data ECG yang digunakan untuk pengujian adalah data ECG yang
diunduh dari MIT-BIH Arryhtymia Database. Data ECG akan dibaca dengan fungsi yang diunduh dari physionet.org. Fungsi pada program dinamakan Rddata.
Rddata akan menghasilkan data seperti pada Lampiran 1. Data pada tabel tersebut akan menjadi data penguji untuk proses penyandian.
4.1.2. Implementasi Penyandian Data ECG
Setelah data ECG dibaca dan disimpan, selanjutnya data akan disandikan ke dalam sebuah Indeks. Pada bagian ini, data ECG hasil pembacaan akan
melewati beberapa proses, yaitu proses pengubahan data ECG menjadi data biner dan proses penyandian data dengan kode konvolusi. Proses penyandian akan
menggunakan tiga jenis rate, yaitu rate 1 2 � , 1 3
� , dan 1 4 � yang performanya akan
diuji dalam tugas akhir ini.
4.1.2.1. Proses Pengubahan Data ECG Menjadi Data Biner
Listing program berikut merupakan kode program dengan nama fungsi Convertdec2bin. Data ECG yang telah dibaca nilainya akan dibulatkan terlebih
dahulu. Kemudian data hasil pembulatan dikonversi menjadi data biner dengan ukuran 12 bit. Data hasil konversi tersebut kemudian diubah ke dalam bentuk
baris agar dapat masuk ke dalam penyandi.
function message=Convertdec2bindata data=int16data; proses pembulatan data
convertmessage=dec2bindata,12; proses konversi decimal menjadi biner dengan ukuran 12 bit
message=Ecgbarisconvertmessage; data diubah menjadi bentuk baris
4.1.2.2. Penyandian Data Dengan Kode Konvolusi
Rate � � �
Listing program berikut merupakan kode program pembangkit sandi konvolusi rate 1 2
� . Penyandi konvolusi rate 1 2 � menggunakan tiga register dan
generator polinomial yang dipakai adalah adalah �
1
= [101] dan �
2
= [111] . Hasil dari penyandian berupa deretan data biner bertipe “double”.
function [hasil1,hasil2]=Generator12isiRegister1,isiRegister2,isiRegister3
r1=isiRegister1; r2=isiRegister2;
r3=isiRegister3; u1=r1+r3;
u2=r1+r2+r3; h1=modu1,2;
h2=modu2,2; hasil1=h1;
hasil2=h2;
Penyandi konvolusi dengan rate � � � digunakan untuk menyandikan data
ECG yang berbetuk data biner. Satu data biner akan disandikan menjadi empat data, yang meliputi dua data sandi dan dua data paritas. Listing program berikut
merupakan kode program fungsi penyandi konvolusi dengan rate � � � .
function [hasil,jumlah]=Encoder12message m=message;
mp=Paritasm; R1=zeros;
R2=zeros; R3=zeros;
h=zeros; for i=1:sizemp,2
R3=R2; R2=R1;
R1=mp1,sizemp,2-i+1; [h1,h2]=Generator12R1,R2,R3;
hi,1=h1; hi,2=h2;
end ha=zeros;
count=1; for i=1:sizeh,1
ha1,count=hi,1;
count=count+1; ha1,count=hi,2;
count=count+1; end
jumlah=sizeha,2; hasil=ha1,1:end-4;
hasilpenyandian=hasil; savefile = hasilpenyandian12.mat;
savesavefile, hasilpenyandian;
4.1.2.3. Penyandian Data Dengan Kode Konvolusi
Rate � � �
Listing program berikut merupakan kode program pembangkit sandi konvolusi rate 1 3
� . Penyandi konvolusi rate 1 3 � menggunakan tiga register dan
generator polinomial yang dipakai adalah adalah �
1
= [101], �
2
= [111], dan �
3
= [111]. Hasil dari penyandian berupa deretan data biner bertipe “double”.
function [hasil1,hasil2,hasil3]=Generator13isiRegister1,isiRegister2,isiRe
gister3 r1=isiRegister1;
r2=isiRegister2; r3=isiRegister3;
u1=r1+r3; u2=r1+r2+r3;
u3=r1+r2+r3; h1=modu1,2;
h2=modu2,2; h3=modu3,2;
hasil1=h1; hasil2=h2;
hasil3=h3;
Penyandi konvolusi dengan rate � � � digunakan untuk menyandikan satu
data biner menjadi sembilan data. Sembilan data tersebut meliputi tiga data sandi
dan enam data paritas. Listing program dibawah ini merupakan fungsi penyandi konvolusi dengan rate � �
� .
function [hasil,jumlah]=Encoder13message m=message;
mp=Paritasm; R1=zeros;
R2=zeros; R3=zeros;
h=zeros; for i=1:sizemp,2
R3=R2; R2=R1;
R1=mp1,sizemp,2-i+1; [h1,h2,h3]=Generator13R1,R2,R3;
hi,1=h1; hi,2=h2;
hi,3=h3; end
ha=zeros; count=1;
for i=1:sizeh,1 ha1,count=hi,1;
count=count+1; ha1,count=hi,2;
count=count+1; ha1,count=hi,3;
count=count+1; end
jumlah=sizeha,2; hasil=ha1,1:end-6;
hasilpenyandian=hasil; savefile = hasilpenyandian13.mat;
savesavefile, hasilpenyandian;
4.1.2.4. Penyandian Data Dengan Kode Konvolusi
Rate � � �
Listing program berikut merupakan kode program pembangkit sandi konvolusi rate 1 4
� . Penyandi konvolusi rate 1 4 � menggunakan tiga register dan
generator polinomial yang dipakai adalah adalah �
1
= [101] , �
2
= [111] , �
3
= [111], dan �
4
= [111]. Hasil dari penyandian berupa deretan data biner bertipe “double”.
function [hasil1,hasil2,hasil3,hasil4]=Generator14isiRegister1,isiRegister
2,isiRegister3 r1=isiRegister1;
r2=isiRegister2; r3=isiRegister3;
u1=r1+r3; u2=r1+r2+r3;
u3=r1+r2+r3; u4=r1+r2+r3;
h1=modu1,2; h2=modu2,2;
h3=modu3,2; h4=modu4,2;
hasil1=h1; hasil2=h2;
hasil3=h3; hasil4=h4;
Penyandi konvolusi dengan rate 1 4 � digunakan untuk menyandikan satu
data biner menjadi dua belas data. Dua belas data tersebut meliputi empat data sandi dan delapan data paritas. Listing program dibawah ini merupakan fungsi
penyandi konvolusi dengan rate 1 4 � .
function [hasil,jumlah]=Encoder14message m=message;
mp=Paritasm; R1=zeros;
R2=zeros;
R3=zeros; h=zeros;
for i=1:sizemp,2 R3=R2;
R2=R1; R1=mp1,sizemp,2-i+1;
[h1,h2,h3,h4]=Generator14R1,R2,R3; hi,1=h1;
hi,2=h2; hi,3=h3;
hi,4=h4; end
ha=zeros; count=1;
for i=1:sizeh,1 ha1,count=hi,1;
count=count+1; ha1,count=hi,2;
count=count+1; ha1,count=hi,3;
count=count+1; ha1,count=hi,4;
count=count+1; end
jumlah=sizeha,2; hasil=ha1,1:end-8;
hasilpenyandian=hasil; savefile = hasilpenyandian14.mat;
savesavefile, hasilpenyandian;
4.1.3. Implementasi Pengiriman Data Sandi Menggunakan Kanal AWGN
Listing program berikut merupakan kode program untuk proses pengiriman menggunakan kanal AWGN. Masukan dari program ini berupa data
ECG yang telah disandikan dan nilai SNR yang digunakan untuk simulasi pengiriman data. Ukuran sinyal constellationí yang digunakan adalah sebesar 16
dan SNR yang digunakan yaitu 0 sampai 20. Jenis modulator yang digunakan
adalah QAM-16. Data sandi akan di kirim sebanyak 21 kali dengan nilai SNR yang menjadi masukan. Keluaran dari program ini berupa 21 baris data sandi yang
telah mendapat nilai error.
function [messagefromkanal,yrx,nsamp]=AWGNmessage,SNR tic
Setup Define parameters.
M = 16; Size of signal constellation k = log2M; Number of bits per symbol
n = 3e4; Number of bits to process nsamp = 1; Oversampling rate
hMod = modem.qammodM; Create a 16-QAM modulator [a,b]=strreadSNR,dd,delimiter,:;
snr=a:b; Signal Source
Create a binary data stream as a column vector. x = message; Random binary data stream
Bit-to-Symbol Mapping Convert the bits in x into k-bit symbols.
xsym = bi2dereshapex,k,lengthxk.,left-msb; Modulation
y = modulatemodem.qammodM,xsym; Modulate using 16-QAM. Transmitted Signal
ytx = y; hx = waitbar0,Harap tunggu ...;
steps = sizesnr,2; for i=1:steps
ynoisy = awgnytx,snr1,i,measured; Received Signal
yrx = ynoisy; Demodulation
Demodulate signal using 16-QAM. zsym = demodulatemodem.qamdemodM,yrx;
Symbol-to-Bit Mapping Undo the bit-to-symbol mapping performed earlier.
z = de2bizsym,left-msb; Convert integers to bits. Convert z from a matrix to a vector.
zTrans=z; dataTerimai,:=reshapezTrans,1,lengthzTrans1,:lengthzTran
s:,1; waitbaristeps;
end closehx;
messagefromkanal=dataTerima; message=messagefromkanal;
savefile = hasilpengiriman.mat; savesavefile, message;
toc
4.1.4. Implementasi Pengawasandi