Simulasi dan Perbandingan Waktu Penkodean Antara Algoritma Peterson-Gorenstein-Zierler dan Berlekamp-Massey Pada Kode Reed-Solomon.

(1)

i

Universitas Kristen Maranatha

SIMULASI DAN PERBANDINGAN WAKTU PENDEKODEAN ANTARA

ALGORITMA PETERSON-GORENSTEIN-ZIERLER DAN

BERLEKAMP-MASSEY PADA KODE REED-SOLOMON

Disusun oleh :

Februyanto Maranda Sagala (0722010)

Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha,

Jl.Prof.Drg.Suria Sumantri, MPH no.65, Bandung, Indonesia,

e-mail : februyanto.sagala@gmail.com

ABSTRAK

Pada sistem komunikasi, proses pengiriman data dari sumber ke tujuan

dapat dikatakan baik bila data yang diterima sama dengan data yang dikirim. Pada

kenyataannya selama proses pengiriman data, data yang dikirim seringkali

mengalami gangguan yang dapat menyebabkan data yang diterima tidak sama

dengan data yang dikirim. Pada Tugas Akhir ini dibahas metode Reed-Solomon

untuk memperbaiki error yang mungkin terjadi pada proses pengiriman. Proses

pengkodean dan pendekodean kode Reed-Solomon telah berhasil disimulasikan

pada Tugas Akhir ini. Untuk mendekodekan kode Reed-Solomon digunakan dua

dekoder dengan algoritma berbeda. Algoritma yang digunakan untuk dekoder

adalah Berlekamp-Massey (BMA) dan Peterson-Gorenstein-Zierler (PGZ). Waktu

proses pendekodean dengan kedua algoritma tersebut dibandingkan. Hasil

simulasi dan analisa data diketahui bahwa kedua dekoder memiliki kemampuan

yang sama dalam mengoreksi error dengan batas maksimal berjumlah t simbol.

Perbedaan waktu pendekodean rata-rata kedua dekoder adalah 0,115 s

untuk nilai t dari 1 sampai 5 simbol. Dekoder PGZ lebih lama sekitar 10 kali,120

kali, dan 960 kali dibanding dekoder BMA untuk nilai t=6,7, dan 8 berdasarkan

nilai t untuk setiap nilai m (jumlah bit tiap 1 simbol). Perbedaan waktu

pendekodean rata-rata untuk nilai t dari 1 sampai 7 simbol secara berturut-turut

adalah 0,04 s, 0,048 s, 0,058 s, 0,054 s, 0,259s, 1,605 s, dan 14,606 s berdasarkan

nilai m untuk setiap nilai t. Dekoder PGZ kurang efisien dari segi waktu proses

pendekodean dibandingkan dekoder BMA untuk nilai t>5 simbol.

Kata kunci: Kode Reed-Solomon, Algoritma Berlekamp-Massey, Algoritma

Peterson-Gorenstein-Zierler.


(2)

ii

Universitas Kristen Maranatha

SIMULATION AND DECODING TIME COMPARISON BETWEEN

PETERSON-GORENSTEIN-ZIERLER ALGORITHM AND

BERLEKAMP-MASSEY ALGORITHM ON REED-SOLOMON CODE

Composed by :

Februyanto Maranda Sagala (0722010)

Electrical Engineering Department, Maranatha Christian University,

Jl.Prof.Drg.Suria Sumantri, MPH no.65, Bandung, Indonesia,

e-mail: februyanto.sagala@gmail.com

ABSTRACT

In the communication system, the process of sending data from source to

destination can be said to be good when the data is sent equal with the data

received. In fact during the process of sending data, the data sent is often

susceptible to interference which can cause the received data does not match with

data sent. In this final project, to fix the error which may occur when data sent is

used Reed-Solomon method. Process of encoding and decoding Reed-Solomon

code have been successfully simulated in this final project. For decoding

Reed-Solomon code was used by two decoders with different algorithms. The algorithm

that used for the decoder is Berlekamp-Massey Algorithm (BMA) and

Peterson-Gorenstein-Zierler Algorithm (PGZ). The duration of decoding process by two

decoders are compared. In this simulation results and analysis of data was known

that two decoder has the same capability in error correcting maximum up to t

symbols.

The decoding time differences of the two decoders for t from 1 to 5

symbols in the average is 0.115 second. PGZ decoder longer about 10 times, 120

times and 960 times compared to the value decoder BMA for t= 6,7, and 8 based

on the value of t for each value of m. The decoding time difference in the average

for value of t from 1 to 7 symbols in a row is 0.04 s, 0.048 s, 0.058 s, 0.054 s,

0.259 s, 1.605 s and 14.606 s based on the value of m for each value of t. PGZ

decoder is less efficient in terms of processing time compared to decoding use

BMA decoder for the value of t > 5 symbols.

Keywords : Reed-Solomon Code, Berlekamp-Massey Algorithm,

Peterson-Gorenstein-Zierler Algorithm.


(3)

v

Universitas Kristen Maranatha

DAFTAR ISI

ABSTRAK ... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR GAMBAR ... viii

DAFTAR TABEL ... x

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Identifikasi Masalah ... 2

1.3 Tujuan ... 2

1.4 Pembatasan Masalah ... 3

1.5 Sistematika Penulisan ... 3

BAB II LANDASAN TEORI ... 4

2.1 Pendahuluan ... 4

2.2 Klasifikasi Kode Reed-Solomon ... 5

2.3 Aritmatika Galois Field- GF(2) ... 6

2.3.1 Operasi Penjumlahan dan Pengurangan ... 6

2.3.2 Operasi Perkalian dan Pembagian ... 7

2.3.3 Polinomial Galois Field ... 7

2.3.4 Polinomial Primitif ... 8

2.4 Proses Pengkodean Kode Reed-Solomon ... 11

2.4.1 Pembentukan Polinomial Generator ... 11


(4)

vi

Universitas Kristen Maranatha

2.5 Proses Pendekodean Kode Reed-Solomon ... 13

2.5.1 Menghitung Nilai Sindrom ... 14

2.5.2 Menghitung Polinomial Lokasi Error ... 15

2.5.3 Metode Pencarian Chien ... 17

2.5.4 Menghitung Error Magnitude ... 19

BAB III SIMULASI PENGKODEAN DAN PENDEKODEAN ... 20

3.1 Enkoder Kode Reed-Solomon... 20

3.2 Dekoder Kode Reed-Solomon ... 24

3.2.1 Menghitung Sindrom ... 26

3.2.2Mencari Error Locator Polynomial (Algoritma Berlekamp-Massey) .. 27

3.2.3 Mencari Error Locator Polynomial (Algoritma PGZ)... 29

3.2.4 Menghitung Akar Error Locator Polynomial (Chien Search) ... 33

3.2.5 Mencari LokasiError ... 34

3.2.6 Menghitung Error MagnitudePada Dekoder BMA ... 35

3.2.7 Menghitung Error Magnitude Pada dekoder PGZ... 36

3.2.8 Perbaikan Error ... 37

BAB IV DATA PENGAMATAN DAN PERBANDINGAN ... 38

4.1

Data Pengamatan Dekoder BMA ... 39

4.1.1 Analisa DataPada Dekoder BMA ... 41

4.2 Data Pengamatan Pada Dekoder PGZ... 46

4.2.1 Analisa Data Pada Dekoder PGZ ... 48

4.3 Perbandingan Dekoder BMA dengan PGZ ... 53

4.3.1 Perbandingan Berdasarkan Nilai t ... 53

4.3.2 Perbandingan Berdasarkan Nilai m ... 55

4.3.3 Perbandingan Berdasarkan Nilai k dan Jumlah Error... 57


(5)

vii

Universitas Kristen Maranatha

BAB V KESIMPULAN DAN SARAN ... 63

5.1 Kesimpulan ... 63

5.2 Saran ... 63

DAFTAR PUSTAKA ... 64

LAMPIRAN A ... A.1-A.32


(6)

viii

Universitas Kristen Maranatha

DAFTAR GAMBAR

Gambar 2.1 Diagram blok kode Reed-Solomon ... 4

Gambar 2.2 Diagram Kode Reed-Solomon (n,k) ... 5

Gambar 2.3 Tahap-tahap pada dekoder Reed Solomon ... 13

Gambar 3.1 Diagram alir proses pembentukan kode RS...21

Gambar 3.2 Subroutine pembentukan Galois field GF(2

m

) ... 21

Gambar 3.3 Diagram alir subroutine pembentukan polinomial generator ... 22

Gambar 3.4 Diagram alir pembentukan kode RS ... 23

Gambar 3.5 Diagram alir pendekodean dengan algoritma BMA ... 24

Gambar 3.6 Diagram alir pedekodean dengan algoritma PGZ ... 25

Gambar 3.7 Diagram alir proses menghitung sindrom ... 26

Gambar 3.8 Diagram alir subroutine mencari error locator polynomial (BMA) 27

Gambar 3.9 Diagram alir subroutine mencari error locator polynomial-BMA

(lanjutan) ... 28

Gambar 3.10 Diagram alir subroutineerror locator polynomial (PGZ) ... 29

Gambar 3.11 Diagram alir subroutine jika t = 1 ... 30

Gambar 3.12 Diagram alir subroutine jika t = 2 ... 30

Gambar 3.13 Diagram alir subroutine jika t = 3 ... 31

Gambar 3.14 Diagram alir subroutine jika t = 4 ... 32

Gambar 3.15 Diagram alir subroutine mencari akar error locator polynomial ... 33

Gambar 3.16 Diagram alir subroutine mencari lokasi error... 34

Gambar 3.17 Diagram alir subroutine menghitung error magnitude (BMA) ... 35

Gambar 3.18 Diagram alir subroutine menghitung error magnitude (PGZ) ... 36

Gambar 3.19 Diagram alir subroutine perbaikan error ... 37

Gambar 4.1 Tampilan program simulasi pada MATLAB...38

Gambar 4.2 Tampilan program menghitung waktu proses pendekodean ... 41

Gambar 4.3 Grafik waktu pendekodean rata-rata pada dekoder BMA (m= 4) .. 45

Gambar 4.4 Grafik waktu pendekodean rata-rata pada dekoder BMA (m= 5) .. 45

Gambar 4.5 Grafik waktu pendekodean rata-rata pada dekoder BMA (m= 6) .. 46


(7)

ix

Universitas Kristen Maranatha

Gambar 4.7 Grafik waktu pendekodean rata-rata pada dekoder PGZ (m= 5) .... 52

Gambar 4.8 Grafik waktu pendekodean rata-rata pada dekoder PGZ (m= 6) .... 53

Gambar 4.9 Grafik perbandingan untuk nilai m=4 ... 54

Gambar 4.10 Grafik perbandingan untuk nilai m=5 ... 54

Gambar 4.11 Grafik perbandingan untuk nilai m=6 ... 54

Gambar 4.12 Grafik perbandingan untuk nilai t=1 ... 55

Gambar 4.13 Grafik perbandingan untuk nilai t=2 ... 55

Gambar 4.14 Grafik perbandingan untuk nilai t=3 ... 56

Gambar 4.15 Grafik perbandingan untuk nilai t=4 ... 56

Gambar 4.16 Grafik perbandingan untuk nilai t=5 ... 56

Gambar 4.17 Grafik perbandingan untuk nilai t=6 ... 57

Gambar 4.18 Grafik perbandingan untuk nilai t=7 ... 57

Gambar 4.19 Grafik perbandingan kedua dekoder untuk nilai m=4 ... 58

Gambar 4.20 Grafik perbandingan kedua dekoder untuk nilai m=5 ... 59


(8)

x

Universitas Kristen Maranatha

DAFTAR TABEL

Tabel 2.1 Polinomial primitif pada GF(2

m

) ... 9

Tabel 2.2 Pembentukan Galois field (16) ... 10

Tabel 4.1 Waktu proses pendekodean rata-rata berdasarkan nilai m dan t...42

Tabel 4.2 Waktupendekodean rata-rata pada dekoder BMA (m=4 dan m=5) .... 43

Tabel 4.3 Waktu proses pendekodean pada dekoder BMA (m=6) ... 44

Tabel 4.4 Waktu proses pendekodean rata-rata berdasarkan nilai m dan t ... 49

Tabel 4.5 Waktu pendekodean rata-ratapada dekoder PGZ (m=4 dan m=5) ... 50


(9)

LAMPIRAN A

MATLAB


(10)

Universitas Kristern Maranatha

%---Simulasi

Error Correcting Code

dengan algoritma

---%

%--- Berlekamp-Massey atau Peterson-Gorenstein-Zierler ----%

%--- Pada kode Reed-Solomon ---%

%*** Parameter Kode RS ***

m = 4 %Jumlah bit dalam 1 simbol, GF(2^m) n = 2^m - 1 %Panjang kode RS

k = 3 %Jumlah data dalam satu kode RS h = n-k %Panjang parity tiap kode RS

t = h/2 %Jumlah maksimum error yang dapat dikoreksi

%****Membangkitkan Galois Field dan Generator polynomial***%

% Membentuk Galois Field

field = gftuple([-1:2^m-2]', m, 2);

%Membangkitkan polinomial generator

c = [1 0]; p(1) = c(1);

for i = 1:h-1

p(1) = gfmul(p(1),1,field); p(2) = 0;

c = gfconv(c,p,field); end

g = c;

%**************** Pengkodean Reed-Solomon *****************%

%Membangkitkan data acak integer

DATA_IN = randint(1,k,[0 n-1]);

%Membentuk kode RS

parity = RS_ENC4(DATA_IN,n,k,g,field); RS_CODE = [parity DATA_IN];

%************************ Channel *************************%

RECEIVED = RS_CODE

%************Menambahkan error secara manual***************%

%*********dengan nilai acak di sembarang posisi************%

RECEIVED(3) = gfadd(RECEIVED(3),randint(1,1,[-1 n-1]),field); RECEIVED(5) = gfadd(RECEIVED(3),randint(1,1,[-1 n-1]),field);

%****************

%***** Pendekodean dengan algoritma Berlekamp-Massey ******%

DECODED = RS_E_DEC(RECEIVED,n,k,t,h,g,field);

%*Pendekodean dengan algoritma Peterson-Gorenstein-Zierler*%


(11)

Universitas Kristern Maranatha

%****************

if all(DECODED == RS_CODE) disp('Decoding Success') else

disp('Decoding Failure') end

%---Subroutine pembentukan kode Reed-Solomon---%

function R = RS_ENC(code,n,k,g,field)

for ii = 1:n-k

shiftpol(ii)= -inf; end

shiftpol(n-k+1)=0;

shiftcode=gfconv(code,shiftpol,field);

[Q, R]=gfdeconv(shiftcode,g,field); while length(R)< n-k

R=[R -inf]; end

%--Subroutine pendekodean dgn algoritma Berlekamp-Massey---%

function DECODED = RS_E_DEC(received,n,k,t,h,g,field);

%******************Menghitung nilai sindrom**********************% S = [];

%Substitusi nilai alpha^i dari tiap polinomial yg diterima for ii = 1:2*t

S(ii)= -Inf; for cc = 1:n

S(ii) = gfadd(S(ii),gfmul(received(cc),gfpow(ii,cc-1,n),field) ,field); %Sum all the terms

end end

%Periksa apakah nilai semua sindrom = 0,

%Jika semua nilai sindrom 0, artinya tidak terjadi error for i = 1:2*t

pol_tes(i) = -Inf; end

if all (S == pol_tes)

message = received; else

%*Hitung Error Locator Polynomial dgn algoritma Berlekamp-Massey*% sigma = BMA(n,k,t,S,field);

%*Mencari nilai akar dr error locator polynomial dg Chien search*% akar_polinomial = [];

kk = 0; for ii = 0:n-1 error_r = -Inf;


(12)

Universitas Kristern Maranatha for cc = 1:length(sigma)

error_r = gfadd(error_r,gfmul(sigma(cc),gfpow(ii,cc-1,n),field) ,field); %Sum all the terms

end

if error_r == -Inf kk = kk + 1;

akar_polinomial(kk) = ii; end

end

% Mengecek nilai akar apakah bernilai real

% Membentuk kembali error locator polynomial dgn mengalikan tiap % akar yg didapat

% Lalu bagi error locator polynomial dgn polinomial_tes

% Jika panjang sisa hasil bagi lbh dr 1 maka akar tidak real pol_tes = 0;

for ii = 1:length(akar_polinomial)

pol_tes = gfconv(pol_tes,[akar_polinomial(ii) 0],field);

end

[QQ,RR] = gfdeconv(sigma,pol_tes,field); if length(QQ) > 1

DECODED = received; return

end

%******************** Mencari posisi error *********************% lokasi_error = [];

for ii = 1:length(akar_polinomial)

lokasi_error(ii) = gfdiv(0,akar_polinomial(ii),field); end

%********Menghitung Error Magnitude dgn algoritma Forney********%

%Hitung polinomial error magnitude: %1. Membentuk fungsi [1 + S(x)] SS(1) = 0;

for ii = 1: 2*t

SS(ii+1) = S(ii); end

%2. Membentuk persamaan (x)= ?(x) [1 + S(x)] OMEGA = gfconv(sigma,gfadd(0,SS,field),field); %3. OMEGA = (SS * sigma)mod(x^(2t+1))

%3.1. Bentuk fungsi := x^(2t+1) for ii = 1: (2*t)

DIV(ii)= -Inf; end

DIV(2*t+1) = 0;

%3.2. OMEGA = (SS * sigma)mod(x^(2t+1)) [DUMMY, OMEGA] = gfdeconv(OMEGA,DIV,field);


(13)

Universitas Kristern Maranatha %OMEGA

%4. Differentiate the key equation with respect to x sigma_diff = gfdiff(sigma);

%Menghitung error magnitude

%Substitusi nilai invers ke sigma_diff for ii = 1:length(lokasi_error)

ERR_DEN= gfsubstitute(sigma_diff,gfdiv(0,lokasi_error(ii),field), length(sigma_diff),n,field);

ERR_NUM= gfsubstitute(OMEGA,gfdiv(0,lokasi_error(ii),field),length (OMEGA),n,field);

ERR_NUM= gfmul(ERR_NUM,lokasi_error(ii),field);

ERR(ii) = gfmul(ERR_NUM,gfdiv(0,ERR_DEN,field),field); end

%Menyusun polinomial error sesuai lokasi dan error magnitude for ii = 1:n

ERR_p(ii) = -Inf; end

for ii = 1:length(lokasi_error) pp = lokasi_error(ii); ERR_p(pp+1) = ERR(ii); end

% kode RS yang diterima lalu dijumlahkan dengan polinomial error message = gfadd(received,ERR_p,field);

end

DECODED = message;

%---Subroutine mencari error locator polynomial dgn BMA----%

function sigma = BMA(n,k,t,S,field)

%Step 2: Inisialisasi variabel kk = 0;

for i = 1:n

Kappa(1,i) = -Inf; end

Kappa(1,1) = 0; %Kappa=>?(0)(x)=1 %shift register L = 0;

%C(x)= x C = [-inf 0]; done = 0; %Step 3:

while (done ~= 1) kk = kk + 1;


(14)

Universitas Kristern Maranatha sum = -Inf;

for i = 1:L %Kappa(kk,i+1) %S(kk-i)

sum = gfadd(sum,gfmul(Kappa(kk,i+1),S(kk-i),field),field); end

%discrepancy ->pers.2.14

discrepancy(kk) = gfadd(S(kk),sum,field);

%Step 4:

if (discrepancy(kk) == -Inf) for i = 1:n

Kappa(kk+1,i) = Kappa(kk,i); end

end

if (discrepancy(kk) ~= -Inf) for i = 1:n

Kappa_i(i) = Kappa(kk-1+1,i); end

Kappa_k = gfadd(Kappa_i,gfconv(discrepancy(kk),C,field),field);

while length(Kappa_k) < n Kappa_k = [Kappa_k -Inf]; end

for i = 1:length(Kappa_k)

Kappa(kk+1,i) = Kappa_k(i); end

%Step 7: if (2*L < kk)

L = kk - L; for i = 1:n

Kappa_k(i) = Kappa(kk+1-1,i); end

C = gfconv(Kappa_k,gfdiv(0,discrepancy(kk),field),field); end

end

%Step 8:

C = gfconv([-Inf 0],C,field);

%step 9: if kk >= 2*t done = 1; end

end

for i = 1:n

sigma(i) = Kappa(kk+1,i); end

%---Subroutine pendekodean dgn algoritma PGZ---%


(15)

Universitas Kristern Maranatha %*****************Menghitung nilai sindrom***********************% S = [];

%Substitusi nilai alpha^i dari tiap polinomial yg diterima for ii = 1:2*t

S(ii)= -Inf; for cc = 1:n

S(ii) = gfadd(S(ii),gfmul(received(cc),gfpow(ii,cc-1,n),field) ,field); %Sum all the terms

end end

%Periksa apakah nilai semua sindrom = 0,Jika semua nilai sindrom 0, artinya tidak terjadi error

for i = 1:2*t

pol_tes(i) = -Inf; end

if all (S == pol_tes) message = received; else

%******Hitung Error Locator Polynomial dengan algoritma PGZ******% sigma= PGZ(n,k,t,S,field);

%*Mencari nilai akar dr error locator polynomial dgn Chien search% akar_polinomial = [];

kk = 0;

for ii = 0:n-1 error_r = -Inf;

for cc = 1:length(sigma)

error_r = gfadd(error_r,gfmul(sigma(cc),gfpow(ii,cc-1,n),field), field); %Sum all the terms

end

if error_r == -Inf kk = kk + 1;

akar_polinomial(kk) = ii; end

end

% Mengecek nilai akar adalah real dengan Membentuk kembali error % locator polynomial dgn mengalikan tiap akar yg didapat

% Lalu bagi error locator polynomial dgn polinomial_tes

% Jika panjang sisa hasil bagi lbh dr 1 maka akar tidak real pol_tes = 0;

for ii = 1:length(akar_polinomial)

pol_tes = gfconv(pol_tes,[akar_polinomial(ii) 0],field);

end

[QQ,RR] = gfdeconv(sigma,pol_tes,field); if length(QQ) > 1

DECODED = received; return


(16)

Universitas Kristern Maranatha end

%Mencari posisi error lokasi_error = [];

for ii = 1:length(akar_polinomial)

lokasi_error(ii) = gfdiv(0,akar_polinomial(ii),field); end

%disusun dari posisi terendah lokasi_error=sort(lokasi_error);

%*******Menghitung Error Magnitude dgn menyusun Matriks Be*******% for ii=1:length(akar_polinomial)

for jj=1:length(akar_polinomial)

Be(ii,jj)=mod(lokasi_error(jj)*ii,n); end

end

%Mencari besar error jika hanya terjadi 1 error if(length(akar_polinomial)==1)

besar_error(1)=gfdiv(S(1),sigma(2),field);

else

determinan=deter(Be,field); kofaktor=kofak(Be,field); Adj=kofaktor';

mydets=abs(determinan);

%Nilai invers matriks [q,z]=size(Be);

for a=1:q for d=1:z

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

%Mencari besar error dari brp banyak error yg terjadi if(length(akar_polinomial)==2)

besar_error(1)=gfadd(gfconv(Adj(1,1),S(1),field),gfconv(Adj(1,2),S (2),field),field);

besar_error(2)=gfadd(gfconv(Adj(2,1),S(1),field),gfconv(Adj(2,2),S (2),field),field);

else if(length(akar_polinomial)==3)

besar_error(1)=gfadd(gfadd(gfconv(Adj(1,1),S(1),field),gfconv(Adj( 1,2),S(2),field),field),gfconv(Adj(1,3),S(3),field),field); besar_error(2)=gfadd(gfadd(gfconv(Adj(2,1),S(1),field),gfconv(Adj( 2,2),S(2),field),field),gfconv(Adj(2,3),S(3),field),field); besar_error(3)=gfadd(gfadd(gfconv(Adj(3,1),S(1),field),gfconv(Adj( 3,2),S(2),field),field),gfconv(Adj(3,3),S(3),field),field);


(17)

Universitas Kristern Maranatha else if(length(akar_polinomial)==4)

besar_error(1)=gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(1),field),gfcon v(Adj(1,2),S(2),field),field),gfconv(Adj(1,3),S(3),field),field),g fconv(Adj(1,4),S(4),field),field);

besar_error(2)=gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(1),field),gfcon v(Adj(2,2),S(2),field),field),gfconv(Adj(2,3),S(3),field),field),g fconv(Adj(2,4),S(4),field),field);

besar_error(3)=gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(1),field),gfcon v(Adj(3,2),S(2),field),field),gfconv(Adj(3,3),S(3),field),field),g fconv(Adj(3,4),S(4),field),field);

besar_error(4)=gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(1),field),gfcon v(Adj(4,2),S(2),field),field),gfconv(Adj(4,3),S(3),field),field),g fconv(Adj(4,4),S(4),field),field);

else if(length(akar_polinomial)==5)

besar_error(1)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(1),field) ,gfconv(Adj(1,2),S(2),field),field),gfconv(Adj(1,3),S(3),field),fi eld),gfconv(Adj(1,4),S(4),field),field),gfconv(Adj(1,5),S(5),field ),field);

besar_error(2)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(1),field) ,gfconv(Adj(2,2),S(2),field),field),gfconv(Adj(2,3),S(3),field),fi eld),gfconv(Adj(2,4),S(4),field),field),gfconv(Adj(2,5),S(5),field ),field);

besar_error(3)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(1),field) ,gfconv(Adj(3,2),S(2),field),field),gfconv(Adj(3,3),S(3),field),fi eld),gfconv(Adj(3,4),S(4),field),field),gfconv(Adj(3,5),S(5),field ),field);

besar_error(4)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(1),field) ,gfconv(Adj(4,2),S(2),field),field),gfconv(Adj(4,3),S(3),field),fi eld),gfconv(Adj(4,4),S(4),field),field),gfconv(Adj(4,5),S(5),field ),field);

besar_error(5)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(1),field) ,gfconv(Adj(5,2),S(2),field),field),gfconv(Adj(5,3),S(3),field),fi eld),gfconv(Adj(5,4),S(4),field),field),gfconv(Adj(5,5),S(5),field ),field);

else if(length(akar_polinomial)==6)

besar_error(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(1), field),gfconv(Adj(1,2),S(2),field),field),gfconv(Adj(1,3),S(3),fie ld),field),gfconv(Adj(1,4),S(4),field),field),gfconv(Adj(1,5),S(5) ,field),field),gfconv(Adj(1,6),S(6),field),field);

besar_error(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(1), field),gfconv(Adj(2,2),S(2),field),field),gfconv(Adj(2,3),S(3),fie ld),field),gfconv(Adj(2,4),S(4),field),field),gfconv(Adj(2,5),S(5) ,field),field),gfconv(Adj(2,6),S(6),field),field);

besar_error(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(1), field),gfconv(Adj(3,2),S(2),field),field),gfconv(Adj(3,3),S(3),fie ld),field),gfconv(Adj(3,4),S(4),field),field),gfconv(Adj(3,5),S(5) ,field),field),gfconv(Adj(3,6),S(6),field),field);


(18)

Universitas Kristern Maranatha besar_error(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(1), field),gfconv(Adj(4,2),S(2),field),field),gfconv(Adj(4,3),S(3),fie ld),field),gfconv(Adj(4,4),S(4),field),field),gfconv(Adj(4,5),S(5) ,field),field),gfconv(Adj(4,6),S(6),field),field);

besar_error(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(1), field),gfconv(Adj(5,2),S(2),field),field),gfconv(Adj(5,3),S(3),fie ld),field),gfconv(Adj(5,4),S(4),field),field),gfconv(Adj(5,5),S(5) ,field),field),gfconv(Adj(5,6),S(6),field),field);

besar_error(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1),S(1), field),gfconv(Adj(6,2),S(2),field),field),gfconv(Adj(6,3),S(3),fie ld),field),gfconv(Adj(6,4),S(4),field),field),gfconv(Adj(6,5),S(5) ,field),field),gfconv(Adj(6,6),S(6),field),field);

else if(length(akar_polinomial)==7)

besar_error(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1) ,S(1),field),gfconv(Adj(1,2),S(2),field),field),gfconv(Adj(1,3),S( 3),field),field),gfconv(Adj(1,4),S(4),field),field),gfconv(Adj(1,5 ),S(5),field),field),gfconv(Adj(1,6),S(6),field),field),gfconv(Adj (1,7),S(7),field),field);

besar_error(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1) ,S(1),field),gfconv(Adj(2,2),S(2),field),field),gfconv(Adj(2,3),S( 3),field),field),gfconv(Adj(2,4),S(4),field),field),gfconv(Adj(2,5 ),S(5),field),field),gfconv(Adj(2,6),S(6),field),field),gfconv(Adj (2,7),S(7),field),field);

besar_error(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1) ,S(1),field),gfconv(Adj(3,2),S(2),field),field),gfconv(Adj(3,3),S( 3),field),field),gfconv(Adj(3,4),S(4),field),field),gfconv(Adj(3,5 ),S(5),field),field),gfconv(Adj(3,6),S(6),field),field),gfconv(Adj (3,7),S(7),field),field);

besar_error(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1) ,S(1),field),gfconv(Adj(4,2),S(2),field),field),gfconv(Adj(4,3),S( 3),field),field),gfconv(Adj(4,4),S(4),field),field),gfconv(Adj(4,5 ),S(5),field),field),gfconv(Adj(4,6),S(6),field),field),gfconv(Adj (4,7),S(7),field),field);

besar_error(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1) ,S(1),field),gfconv(Adj(5,2),S(2),field),field),gfconv(Adj(5,3),S( 3),field),field),gfconv(Adj(5,4),S(4),field),field),gfconv(Adj(5,5 ),S(5),field),field),gfconv(Adj(5,6),S(6),field),field),gfconv(Adj (5,7),S(7),field),field);

besar_error(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1) ,S(1),field),gfconv(Adj(6,2),S(2),field),field),gfconv(Adj(6,3),S( 3),field),field),gfconv(Adj(6,4),S(4),field),field),gfconv(Adj(6,5 ),S(5),field),field),gfconv(Adj(6,6),S(6),field),field),gfconv(Adj (6,7),S(7),field),field);

besar_error(7)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(7,1) ,S(1),field),gfconv(Adj(7,2),S(2),field),field),gfconv(Adj(7,3),S( 3),field),field),gfconv(Adj(7,4),S(4),field),field),gfconv(Adj(7,5


(19)

Universitas Kristern Maranatha ),S(5),field),field),gfconv(Adj(7,6),S(6),field),field),gfconv(Adj (7,7),S(7),field),field);

else if(length(akar_polinomial)==8)

besar_error(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(1,1),S(1),field),gfconv(Adj(1,2),S(2),field),field),gfconv(Adj(1 ,3),S(3),field),field),gfconv(Adj(1,4),S(4),field),field),gfconv(A dj(1,5),S(5),field),field),gfconv(Adj(1,6),S(6),field),field),gfco nv(Adj(1,7),S(7),field),field),gfconv(Adj(1,8),S(8),field),field);

besar_error(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(2,1),S(1),field),gfconv(Adj(2,2),S(2),field),field),gfconv(Adj(2 ,3),S(3),field),field),gfconv(Adj(2,4),S(4),field),field),gfconv(A dj(2,5),S(5),field),field),gfconv(Adj(2,6),S(6),field),field),gfco nv(Adj(2,7),S(7),field),field),gfconv(Adj(2,8),S(8),field),field);

besar_error(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(3,1),S(1),field),gfconv(Adj(3,2),S(2),field),field),gfconv(Adj(3 ,3),S(3),field),field),gfconv(Adj(3,4),S(4),field),field),gfconv(A dj(3,5),S(5),field),field),gfconv(Adj(3,6),S(6),field),field),gfco nv(Adj(3,7),S(7),field),field),gfconv(Adj(3,8),S(8),field),field);

besar_error(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(4,1),S(1),field),gfconv(Adj(4,2),S(2),field),field),gfconv(Adj(4 ,3),S(3),field),field),gfconv(Adj(4,4),S(4),field),field),gfconv(A dj(4,5),S(5),field),field),gfconv(Adj(4,6),S(6),field),field),gfco nv(Adj(4,7),S(7),field),field),gfconv(Adj(4,8),S(8),field),field);

besar_error(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(5,1),S(1),field),gfconv(Adj(5,2),S(2),field),field),gfconv(Adj(5 ,3),S(3),field),field),gfconv(Adj(5,4),S(4),field),field),gfconv(A dj(5,5),S(5),field),field),gfconv(Adj(5,6),S(6),field),field),gfco nv(Adj(5,7),S(7),field),field),gfconv(Adj(5,8),S(8),field),field);

besar_error(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(6,1),S(1),field),gfconv(Adj(6,2),S(2),field),field),gfconv(Adj(6 ,3),S(3),field),field),gfconv(Adj(6,4),S(4),field),field),gfconv(A dj(6,5),S(5),field),field),gfconv(Adj(6,6),S(6),field),field),gfco nv(Adj(6,7),S(7),field),field),gfconv(Adj(6,8),S(8),field),field);

besar_error(7)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(7,1),S(1),field),gfconv(Adj(7,2),S(2),field),field),gfconv(Adj(7 ,3),S(3),field),field),gfconv(Adj(7,4),S(4),field),field),gfconv(A dj(7,5),S(5),field),field),gfconv(Adj(7,6),S(6),field),field),gfco nv(Adj(7,7),S(7),field),field),gfconv(Adj(7,8),S(8),field),field);

besar_error(8)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Ad j(8,1),S(1),field),gfconv(Adj(8,2),S(2),field),field),gfconv(Adj(8 ,3),S(3),field),field),gfconv(Adj(8,4),S(4),field),field),gfconv(A dj(8,5),S(5),field),field),gfconv(Adj(8,6),S(6),field),field),gfco nv(Adj(8,7),S(7),field),field),gfconv(Adj(8,8),S(8),field),field); end

end end end end


(20)

Universitas Kristern Maranatha end

end end

%Menyusun polinomial error sesuai lokasi dan error magnitude for ii = 1:n

ERR_p(ii) = -Inf; end

for ii = 1:length(lokasi_error) pp = lokasi_error(ii);

ERR_p(pp+1) = besar_error(ii); end

% kode RS yang diterima lalu dijumlahkan dengan polinomial error

% untuk mendapatkan kode RS yang sama dengan yg dikirim message = gfadd(received,ERR_p,field);

end

DECODED = message;

%*Subroutine mencari error locator polynomial dgn algoritma PGZ**% function sigma= PGZ(n,k,t,S,field)

%Menyusun matriks sindrom c=0;

for i = 1:t for j = 1:t

M(i,j)=S(j+c); end

c=c+1; end

for i = 1:n

Kappa(1,i) = -Inf; end

Kappa(1,1)=0;

%******************************* if (t==1)

Sigma(1) = gfdeconv(S(2),S(1),field); Kappa(1,2)=Sigma(1);

elseif(t==2)

%Hitung nilai determinan matriks 2x2 determinan = deter(M,field);

if (determinan==-inf)

Sigma(1)=gfdeconv(S(2),S(1),field); Kappa(1,2)=Sigma(1);

else

%****mencari nilai invers matriks sindrom****% kofaktor=kof(M,S,field);

Adj=kofaktor'; %adjoin adalah tranpose kofaktornya mydets=abs(determinan);


(21)

Universitas Kristern Maranatha Adj(1,1)=gfdeconv(Adj(1,1),mydets,field);

Adj(2,2)=gfdeconv(Adj(2,2),mydets,field); Adj(1,2)=gfdeconv(Adj(1,2),mydets,field);

Adj(2,1)=gfdeconv(Adj(2,1),mydets,field);

Sigma(2)=gfadd(gfconv(Adj(1,1),S(3),field),gfconv(Adj(1,2),S(4),fi eld),field);

Sigma(1)=gfadd(gfconv(Adj(2,1),S(3),field),gfconv(Adj(2,2),S(4),fi eld),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); end

elseif(t==3)

%hitung nilai determinan 3x3 determinan = deter(M,field); if(determinan==-inf)

[n,m]=size(M); n1=n-1;

m1=m-1;

B=zeros(2,2); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B; %Matriks 2x2

determinan=deter(M,field);

if(determinan==-inf)

Sigma(1)=gfdeconv(S(2),S(1),field); Kappa(1,2)=Sigma(1);

else

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan);

Adj(1,1)=gfdeconv(Adj(1,1),mydets,field); Adj(2,2)=gfdeconv(Adj(2,2),mydets,field); Adj(1,2)=gfdeconv(Adj(1,2),mydets,field);

Adj(2,1)=gfdeconv(Adj(2,1),mydets,field); Sigma(2)=gfadd(gfconv(Adj(1,1),S(3),field),gfconv(Adj(1,2),S(4),fi

eld),field);

Sigma(1)=gfadd(gfconv(Adj(2,1),S(3),field),gfconv(Adj(2,2),S(4),fi eld),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); end else

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:3

for d=1:3

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end


(22)

Universitas Kristern Maranatha end

Sigma(3)=gfadd(gfadd(gfconv(Adj(1,1),S(4),field),gfconv(Adj(1,2),S (5),field),field),gfconv(Adj(1,3),S(6),field),field);

Sigma(2)=gfadd(gfadd(gfconv(Adj(2,1),S(4),field),gfconv(Adj(2,2),S (5),field),field),gfconv(Adj(2,3),S(6),field),field);

Sigma(1)=gfadd(gfadd(gfconv(Adj(3,1),S(4),field),gfconv(Adj(3,2),S (5),field),field),gfconv(Adj(3,3),S(6),field),field); Kappa(1,2)=Sigma(1);

Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); end

elseif(t==4)

%hitung nilai determinan 4x4 determinan = deter(M,field); if(determinan==-inf)

[n,m]=size(M); n1=n-1;

m1=m-1;

B=zeros(3,3); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B;

determinan=deter(M,field); if(determinan==-inf) [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(2,2); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B; %Matrik 2x2

determinan=deter(M,field);

if(determinan==-inf) Sigma(1)=gfdeconv(S(2),S(1),field); Kappa(1,2)=Sigma(1);

else

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan);

Adj(1,1)=gfdeconv(Adj(1,1),mydets,field); Adj(2,2)=gfdeconv(Adj(2,2),mydets,field); Adj(1,2)=gfdeconv(Adj(1,2),mydets,field);

Adj(2,1)=gfdeconv(Adj(2,1),mydets,field); Sigma(2)=gfadd(gfconv(Adj(1,1),S(3),field),gfconv(Adj(1,2),S(4),fi


(23)

Universitas Kristern Maranatha Sigma(1)=gfadd(gfconv(Adj(2,1),S(3),field),gfconv(Adj(2,2),S(4),fi eld),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); end

else

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:3

for d=1:3

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(3)=gfadd(gfadd(gfconv(Adj(1,1),S(4),field),gfconv(Adj(1,2),S (5),field),field),gfconv(Adj(1,3),S(6),field),field);

Sigma(2)=gfadd(gfadd(gfconv(Adj(2,1),S(4),field),gfconv(Adj(2,2),S (5),field),field),gfconv(Adj(2,3),S(6),field),field);

Sigma(1)=gfadd(gfadd(gfconv(Adj(3,1),S(4),field),gfconv(Adj(3,2),S (5),field),field),gfconv(Adj(3,3),S(6),field),field); Kappa(1,2)=Sigma(1);

Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); end else

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:4

for d=1:4

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(4)=gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(5),field),gfconv(Adj( 1,2),S(6),field),field),gfconv(Adj(1,3),S(7),field),field),gfconv( Adj(1,4),S(8),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(5),field),gfconv(Adj( 2,2),S(6),field),field),gfconv(Adj(2,3),S(7),field),field),gfconv( Adj(2,4),S(8),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(5),field),gfconv(Adj( 3,2),S(6),field),field),gfconv(Adj(3,3),S(7),field),field),gfconv( Adj(3,4),S(8),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(5),field),gfconv(Adj( 4,2),S(6),field),field),gfconv(Adj(4,3),S(7),field),field),gfconv( Adj(4,4),S(8),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); end


(24)

Universitas Kristern Maranatha elseif(t==5)

%hitung nilai determinan 5x5 determinan = deter(M,field);

if(determinan==-inf) %Ubah jadi matriks 4x4 [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(4,4); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field); if(determinan==-inf) [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(3,3); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B;

%Matrik 2x2

determinan=deter(M,field); if(determinan==-inf)

[n,m]=size(M); n1=n-1;

m1=m-1;

B=zeros(2,2); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B;

determinan=deter(M,field); if(determinan==-inf)

Sigma(1)=gfdeconv(S(2),S(1),field); Kappa(1,2)=Sigma(1); else %terdapat 2 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan);

Adj(1,1)=gfdeconv(Adj(1,1),mydets,field); Adj(2,2)=gfdeconv(Adj(2,2),mydets,field); Adj(1,2)=gfdeconv(Adj(1,2),mydets,field);

Adj(2,1)=gfdeconv(Adj(2,1),mydets,field); Sigma(2)=gfadd(gfconv(Adj(1,1),S(3),field),gfconv(Adj(1,2),S(4),fi

eld),field);

Sigma(1)=gfadd(gfconv(Adj(2,1),S(3),field),gfconv(Adj(2,2),S(4),fi eld),field);


(25)

Universitas Kristern Maranatha Kappa(1,3)=Sigma(2);

end

else %terdapat 3 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:3

for d=1:3

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(3)=gfadd(gfadd(gfconv(Adj(1,1),S(4),field),gfconv(Adj(1,2),S (5),field),field),gfconv(Adj(1,3),S(6),field),field);

Sigma(2)=gfadd(gfadd(gfconv(Adj(2,1),S(4),field),gfconv(Adj(2,2),S (5),field),field),gfconv(Adj(2,3),S(6),field),field);

Sigma(1)=gfadd(gfadd(gfconv(Adj(3,1),S(4),field),gfconv(Adj(3,2),S (5),field),field),gfconv(Adj(3,3),S(6),field),field); Kappa(1,2)=Sigma(1);

Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); end

else %terdapat 4 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:4

for d=1:4

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(4)=gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(5),field),gfconv(Adj( 1,2),S(6),field),field),gfconv(Adj(1,3),S(7),field),field),gfconv( Adj(1,4),S(8),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(5),field),gfconv(Adj( 2,2),S(6),field),field),gfconv(Adj(2,3),S(7),field),field),gfconv( Adj(2,4),S(8),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(5),field),gfconv(Adj( 3,2),S(6),field),field),gfconv(Adj(3,3),S(7),field),field),gfconv( Adj(3,4),S(8),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(5),field),gfconv(Adj( 4,2),S(6),field),field),gfconv(Adj(4,3),S(7),field),field),gfconv( Adj(4,4),S(8),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); end

else %terdapat 5 error kofaktor=kof(M,S,field); Adj=kofaktor';


(26)

Universitas Kristern Maranatha for a=1:5

for d=1:5

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(6),field),gfcon v(Adj(1,2),S(7),field),field),gfconv(Adj(1,3),S(8),field),field),g fconv(Adj(1,4),S(9),field),field),gfconv(Adj(1,5),S(10),field),fie ld);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(6),field),gfcon v(Adj(2,2),S(7),field),field),gfconv(Adj(2,3),S(8),field),field),g fconv(Adj(2,4),S(9),field),field),gfconv(Adj(2,5),S(10),field),fie ld);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(6),field),gfcon v(Adj(3,2),S(7),field),field),gfconv(Adj(3,3),S(8),field),field),g fconv(Adj(3,4),S(9),field),field),gfconv(Adj(3,5),S(10),field),fie ld);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(6),field),gfcon v(Adj(4,2),S(7),field),field),gfconv(Adj(4,3),S(8),field),field),g fconv(Adj(4,4),S(9),field),field),gfconv(Adj(4,5),S(10),field),fie ld);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(6),field),gfcon v(Adj(5,2),S(7),field),field),gfconv(Adj(5,3),S(8),field),field),g fconv(Adj(5,4),S(9),field),field),gfconv(Adj(5,5),S(10),field),fie ld);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); end

elseif(t==6)

determinan = deter(M,field);

if(determinan==-inf) %Ubah jadi matriks 5x5 [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(5,5); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B;

determinan=deter(M,field); if(determinan==-inf) [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(4,4); for i=1:n1


(27)

Universitas Kristern Maranatha for j=1:m1

B(i,j)=M(i,j); end

end M=B;

%Matrik 3x3

determinan=deter(M,field); if(determinan==-inf)

[n,m]=size(M); n1=n-1;

m1=m-1;

B=zeros(3,3); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

if(determinan==-inf) [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(2,2); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field);

if(determinan==-inf) %hanya terdapat 1 error Sigma(1)=gfdeconv(S(2),S(1),field);

Kappa(1,2)=Sigma(1);

\

else %terdapat 2 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan);

Adj(1,1)=gfdeconv(Adj(1,1),mydets,field); Adj(2,2)=gfdeconv(Adj(2,2),mydets,field); Adj(1,2)=gfdeconv(Adj(1,2),mydets,field); Adj(2,1)=gfdeconv(Adj(2,1),mydets,field);

Sigma(2)=gfadd(gfconv(Adj(1,1),S(3),field),gfconv(Adj(1,2),S(4),fi eld),field);

Sigma(1)=gfadd(gfconv(Adj(2,1),S(3),field),gfconv(Adj(2,2),S(4),fi eld),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); end

else %terdapat 3 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:3

for d=1:3


(28)

Universitas Kristern Maranatha end

end

Sigma(3)=gfadd(gfadd(gfconv(Adj(1,1),S(4),field),gfconv(Adj(1,2),S (5),field),field),gfconv(Adj(1,3),S(6),field),field);

Sigma(2)=gfadd(gfadd(gfconv(Adj(2,1),S(4),field),gfconv(Adj(2,2),S (5),field),field),gfconv(Adj(2,3),S(6),field),field);

Sigma(1)=gfadd(gfadd(gfconv(Adj(3,1),S(4),field),gfconv(Adj(3,2),S (5),field),field),gfconv(Adj(3,3),S(6),field),field); Kappa(1,2)=Sigma(1);

Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); end

else %terdapat 4 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:4

for d=1:4

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(4)=gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(5),field),gfconv(Adj( 1,2),S(6),field),field),gfconv(Adj(1,3),S(7),field),field),gfconv( Adj(1,4),S(8),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(5),field),gfconv(Adj( 2,2),S(6),field),field),gfconv(Adj(2,3),S(7),field),field),gfconv( Adj(2,4),S(8),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(5),field),gfconv(Adj( 3,2),S(6),field),field),gfconv(Adj(3,3),S(7),field),field),gfconv( Adj(3,4),S(8),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(5),field),gfconv(Adj( 4,2),S(6),field),field),gfconv(Adj(4,3),S(7),field),field),gfconv( Adj(4,4),S(8),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); end

else %terdapat 5 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:5

for d=1:5

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(6),field),gfcon v(Adj(1,2),S(7),field),field),gfconv(Adj(1,3),S(8),field),field),g fconv(Adj(1,4),S(9),field),field),gfconv(Adj(1,5),S(10),field),fie ld);


(29)

Universitas Kristern Maranatha

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(6),field),gfcon v(Adj(2,2),S(7),field),field),gfconv(Adj(2,3),S(8),field),field),g fconv(Adj(2,4),S(9),field),field),gfconv(Adj(2,5),S(10),field),fie ld);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(6),field),gfcon v(Adj(3,2),S(7),field),field),gfconv(Adj(3,3),S(8),field),field),g fconv(Adj(3,4),S(9),field),field),gfconv(Adj(3,5),S(10),field),fie ld);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(6),field),gfcon v(Adj(4,2),S(7),field),field),gfconv(Adj(4,3),S(8),field),field),g fconv(Adj(4,4),S(9),field),field),gfconv(Adj(4,5),S(10),field),fie ld);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(6),field),gfcon v(Adj(5,2),S(7),field),field),gfconv(Adj(5,3),S(8),field),field),g fconv(Adj(5,4),S(9),field),field),gfconv(Adj(5,5),S(10),field),fie ld);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5);

end else %terdapat 6 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:6

for d=1:6

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(7),field) ,gfconv(Adj(1,2),S(8),field),field),gfconv(Adj(1,3),S(9),field),fi eld),gfconv(Adj(1,4),S(10),field),field),gfconv(Adj(1,5),S(11),fie ld),field),gfconv(Adj(1,6),S(12),field),field);

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(7),field) ,gfconv(Adj(2,2),S(8),field),field),gfconv(Adj(2,3),S(9),field),fi eld),gfconv(Adj(2,4),S(10),field),field),gfconv(Adj(2,5),S(11),fie ld),field),gfconv(Adj(2,6),S(12),field),field);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(7),field) ,gfconv(Adj(3,2),S(8),field),field),gfconv(Adj(3,3),S(9),field),fi eld),gfconv(Adj(3,4),S(10),field),field),gfconv(Adj(3,5),S(11),fie ld),field),gfconv(Adj(3,6),S(12),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(7),field) ,gfconv(Adj(4,2),S(8),field),field),gfconv(Adj(4,3),S(9),field),fi eld),gfconv(Adj(4,4),S(10),field),field),gfconv(Adj(4,5),S(11),fie ld),field),gfconv(Adj(4,6),S(12),field),field);


(30)

Universitas Kristern Maranatha ,gfconv(Adj(5,2),S(8),field),field),gfconv(Adj(5,3),S(9),field),fi eld),gfconv(Adj(5,4),S(10),field),field),gfconv(Adj(5,5),S(11),fie ld),field),gfconv(Adj(5,6),S(12),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1),S(7),field) ,gfconv(Adj(6,2),S(8),field),field),gfconv(Adj(6,3),S(9),field),fi eld),gfconv(Adj(6,4),S(10),field),field),gfconv(Adj(6,5),S(11),fie ld),field),gfconv(Adj(6,6),S(12),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); Kappa(1,7)=Sigma(6); end

elseif(t==7)

determinan = deter(M,field);

if(determinan==-inf) %Ubah jadi matriks 6x6 [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(6,6); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B;

determinan=deter(M,field); if(determinan==-inf) [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(5,5); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B;

%Matrik 4x4

determinan=deter(M,field); if(determinan==-inf)

[n,m]=size(M); n1=n-1;

m1=m-1;

B=zeros(4,4); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field);


(31)

Universitas Kristern Maranatha [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(3,3); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field);

if(determinan==-inf) %ubah jadi matrik 2x2 [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(2,2); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field); if(determinan==-inf) %hanya terdapat 1 error

Sigma(1)=gfdeconv(S(2),S(1),field);%Hanya 1 error yg terjadi

Kappa(1,2)=Sigma(1); else %terdapat 2 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan);

Adj(1,1)=gfdeconv(Adj(1,1),mydets,field); Adj(2,2)=gfdeconv(Adj(2,2),mydets,field); Adj(1,2)=gfdeconv(Adj(1,2),mydets,field); Adj(2,1)=gfdeconv(Adj(2,1),mydets,field);

Sigma(2)=gfadd(gfconv(Adj(1,1),S(3),field),gfconv(Adj(1,2),S(4),fi eld),field);

Sigma(1)=gfadd(gfconv(Adj(2,1),S(3),field),gfconv(Adj(2,2),S(4),fi eld),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); end

else %terdapat 3 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:3

for d=1:3

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(3)=gfadd(gfadd(gfconv(Adj(1,1),S(4),field),gfconv(Adj(1,2),S (5),field),field),gfconv(Adj(1,3),S(6),field),field);

Sigma(2)=gfadd(gfadd(gfconv(Adj(2,1),S(4),field),gfconv(Adj(2,2),S (5),field),field),gfconv(Adj(2,3),S(6),field),field);


(32)

Universitas Kristern Maranatha

Sigma(1)=gfadd(gfadd(gfconv(Adj(3,1),S(4),field),gfconv(Adj(3,2),S (5),field),field),gfconv(Adj(3,3),S(6),field),field); Kappa(1,2)=Sigma(1);

Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); end

else %terdapat 4 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:4

for d=1:4

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(4)=gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(5),field),gfconv(Adj( 1,2),S(6),field),field),gfconv(Adj(1,3),S(7),field),field),gfconv( Adj(1,4),S(8),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(5),field),gfconv(Adj( 2,2),S(6),field),field),gfconv(Adj(2,3),S(7),field),field),gfconv( Adj(2,4),S(8),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(5),field),gfconv(Adj( 3,2),S(6),field),field),gfconv(Adj(3,3),S(7),field),field),gfconv( Adj(3,4),S(8),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(5),field),gfconv(Adj( 4,2),S(6),field),field),gfconv(Adj(4,3),S(7),field),field),gfconv( Adj(4,4),S(8),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); end

else %terdapat 5 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:5

for d=1:5

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(6),field),gfcon v(Adj(1,2),S(7),field),field),gfconv(Adj(1,3),S(8),field),field),g fconv(Adj(1,4),S(9),field),field),gfconv(Adj(1,5),S(10),field),fie ld);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(6),field),gfcon v(Adj(2,2),S(7),field),field),gfconv(Adj(2,3),S(8),field),field),g fconv(Adj(2,4),S(9),field),field),gfconv(Adj(2,5),S(10),field),fie ld);


(33)

Universitas Kristern Maranatha v(Adj(3,2),S(7),field),field),gfconv(Adj(3,3),S(8),field),field),g fconv(Adj(3,4),S(9),field),field),gfconv(Adj(3,5),S(10),field),fie ld);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(6),field),gfcon v(Adj(4,2),S(7),field),field),gfconv(Adj(4,3),S(8),field),field),g fconv(Adj(4,4),S(9),field),field),gfconv(Adj(4,5),S(10),field),fie ld);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(6),field),gfcon v(Adj(5,2),S(7),field),field),gfconv(Adj(5,3),S(8),field),field),g fconv(Adj(5,4),S(9),field),field),gfconv(Adj(5,5),S(10),field),fie ld);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); end

else %terdapat 6 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:6

for d=1:6

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(7),field) ,gfconv(Adj(1,2),S(8),field),field),gfconv(Adj(1,3),S(9),field),fi eld),gfconv(Adj(1,4),S(10),field),field),gfconv(Adj(1,5),S(11),fie ld),field),gfconv(Adj(1,6),S(12),field),field);

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(7),field) ,gfconv(Adj(2,2),S(8),field),field),gfconv(Adj(2,3),S(9),field),fi eld),gfconv(Adj(2,4),S(10),field),field),gfconv(Adj(2,5),S(11),fie ld),field),gfconv(Adj(2,6),S(12),field),field);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(7),field) ,gfconv(Adj(3,2),S(8),field),field),gfconv(Adj(3,3),S(9),field),fi eld),gfconv(Adj(3,4),S(10),field),field),gfconv(Adj(3,5),S(11),fie ld),field),gfconv(Adj(3,6),S(12),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(7),field) ,gfconv(Adj(4,2),S(8),field),field),gfconv(Adj(4,3),S(9),field),fi eld),gfconv(Adj(4,4),S(10),field),field),gfconv(Adj(4,5),S(11),fie ld),field),gfconv(Adj(4,6),S(12),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(7),field) ,gfconv(Adj(5,2),S(8),field),field),gfconv(Adj(5,3),S(9),field),fi eld),gfconv(Adj(5,4),S(10),field),field),gfconv(Adj(5,5),S(11),fie ld),field),gfconv(Adj(5,6),S(12),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1),S(7),field) ,gfconv(Adj(6,2),S(8),field),field),gfconv(Adj(6,3),S(9),field),fi


(34)

Universitas Kristern Maranatha eld),gfconv(Adj(6,4),S(10),field),field),gfconv(Adj(6,5),S(11),fie ld),field),gfconv(Adj(6,6),S(12),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); Kappa(1,7)=Sigma(6); end

else %terdapat 7 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:7

for d=1:7

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(7)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(8), field),gfconv(Adj(1,2),S(9),field),field),gfconv(Adj(1,3),S(10),fi eld),field),gfconv(Adj(1,4),S(11),field),field),gfconv(Adj(1,5),S( 12),field),field),gfconv(Adj(1,6),S(13),field),field),gfconv(Adj(1 ,7),S(14),field),field);

Sigma(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(8), field),gfconv(Adj(2,2),S(9),field),field),gfconv(Adj(2,3),S(10),fi eld),field),gfconv(Adj(2,4),S(11),field),field),gfconv(Adj(2,5),S( 12),field),field),gfconv(Adj(2,6),S(13),field),field),gfconv(Adj(2 ,7),S(14),field),field);

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(8), field),gfconv(Adj(3,2),S(9),field),field),gfconv(Adj(3,3),S(10),fi eld),field),gfconv(Adj(3,4),S(11),field),field),gfconv(Adj(3,5),S( 12),field),field),gfconv(Adj(3,6),S(13),field),field),gfconv(Adj(3 ,7),S(14),field),field);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(8), field),gfconv(Adj(4,2),S(9),field),field),gfconv(Adj(4,3),S(10),fi eld),field),gfconv(Adj(4,4),S(11),field),field),gfconv(Adj(4,5),S( 12),field),field),gfconv(Adj(4,6),S(13),field),field),gfconv(Adj(4 ,7),S(14),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(8), field),gfconv(Adj(5,2),S(9),field),field),gfconv(Adj(5,3),S(10),fi eld),field),gfconv(Adj(5,4),S(11),field),field),gfconv(Adj(5,5),S( 12),field),field),gfconv(Adj(5,6),S(13),field),field),gfconv(Adj(5 ,7),S(14),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1),S(8), field),gfconv(Adj(6,2),S(9),field),field),gfconv(Adj(6,3),S(10),fi eld),field),gfconv(Adj(6,4),S(11),field),field),gfconv(Adj(6,5),S( 12),field),field),gfconv(Adj(6,6),S(13),field),field),gfconv(Adj(6 ,7),S(14),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(7,1),S(8), field),gfconv(Adj(7,2),S(9),field),field),gfconv(Adj(7,3),S(10),fi eld),field),gfconv(Adj(7,4),S(11),field),field),gfconv(Adj(7,5),S(


(35)

Universitas Kristern Maranatha 12),field),field),gfconv(Adj(7,6),S(13),field),field),gfconv(Adj(7 ,7),S(14),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); Kappa(1,7)=Sigma(6); Kappa(1,8)=Sigma(7); end

elseif(t==8)

%hitung nilai determinan 8x8 determinan = deter(M,field);

if(determinan==-inf) %Ubah jadi matriks 7x7 [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(7,7); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field); if(determinan==-inf) [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(6,6); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end M=B;

%Matrik 5x5

determinan=deter(M,field); if(determinan==-inf)

[n,m]=size(M); n1=n-1;

m1=m-1;

B=zeros(5,5); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field);

if(determinan==-inf) %ubah jadi matrik 4x4 [n,m]=size(M);

n1=n-1; m1=m-1;


(36)

Universitas Kristern Maranatha for i=1:n1

for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field);

if(determinan==-inf) %ubah jadi matrik 3x3 [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(3,3); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field);

if(determinan==-inf) %ubah jadi matrik 2x2 [n,m]=size(M);

n1=n-1; m1=m-1;

B=zeros(2,2); for i=1:n1 for j=1:m1

B(i,j)=M(i,j); end

end

M=B;

determinan=deter(M,field); if(determinan==-inf) %hanya terdapat 1 error

Sigma(1)=gfdeconv(S(2),S(1),field);%Hanya 1 error yg terjadi

Kappa(1,2)=Sigma(1);

else %terdapat 2 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan);

Adj(1,1)=gfdeconv(Adj(1,1),mydets,field); Adj(2,2)=gfdeconv(Adj(2,2),mydets,field); Adj(1,2)=gfdeconv(Adj(1,2),mydets,field); Adj(2,1)=gfdeconv(Adj(2,1),mydets,field);

Sigma(2)=gfadd(gfconv(Adj(1,1),S(3),field),gfconv(Adj(1,2),S(4),fi eld),field);

Sigma(1)=gfadd(gfconv(Adj(2,1),S(3),field),gfconv(Adj(2,2),S(4),fi eld),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); end

else %terdapat 3 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:3


(37)

Universitas Kristern Maranatha for d=1:3

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(3)=gfadd(gfadd(gfconv(Adj(1,1),S(4),field),gfconv(Adj(1,2),S (5),field),field),gfconv(Adj(1,3),S(6),field),field);

Sigma(2)=gfadd(gfadd(gfconv(Adj(2,1),S(4),field),gfconv(Adj(2,2),S (5),field),field),gfconv(Adj(2,3),S(6),field),field);

Sigma(1)=gfadd(gfadd(gfconv(Adj(3,1),S(4),field),gfconv(Adj(3,2),S (5),field),field),gfconv(Adj(3,3),S(6),field),field); Kappa(1,2)=Sigma(1);

Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); end

else %terdapat 4 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:4

for d=1:4

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(4)=gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(5),field),gfconv(Adj( 1,2),S(6),field),field),gfconv(Adj(1,3),S(7),field),field),gfconv( Adj(1,4),S(8),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(5),field),gfconv(Adj( 2,2),S(6),field),field),gfconv(Adj(2,3),S(7),field),field),gfconv( Adj(2,4),S(8),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(5),field),gfconv(Adj( 3,2),S(6),field),field),gfconv(Adj(3,3),S(7),field),field),gfconv( Adj(3,4),S(8),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(5),field),gfconv(Adj( 4,2),S(6),field),field),gfconv(Adj(4,3),S(7),field),field),gfconv( Adj(4,4),S(8),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); end

else %terdapat 5 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:5

for d=1:5

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end


(38)

Universitas Kristern Maranatha v(Adj(1,2),S(7),field),field),gfconv(Adj(1,3),S(8),field),field),g fconv(Adj(1,4),S(9),field),field),gfconv(Adj(1,5),S(10),field),fie ld);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(6),field),gfcon v(Adj(2,2),S(7),field),field),gfconv(Adj(2,3),S(8),field),field),g fconv(Adj(2,4),S(9),field),field),gfconv(Adj(2,5),S(10),field),fie ld);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(6),field),gfcon v(Adj(3,2),S(7),field),field),gfconv(Adj(3,3),S(8),field),field),g fconv(Adj(3,4),S(9),field),field),gfconv(Adj(3,5),S(10),field),fie ld);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(6),field),gfcon v(Adj(4,2),S(7),field),field),gfconv(Adj(4,3),S(8),field),field),g fconv(Adj(4,4),S(9),field),field),gfconv(Adj(4,5),S(10),field),fie ld);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(6),field),gfcon v(Adj(5,2),S(7),field),field),gfconv(Adj(5,3),S(8),field),field),g fconv(Adj(5,4),S(9),field),field),gfconv(Adj(5,5),S(10),field),fie ld);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5);

end else %terdapat 6 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:6

for d=1:6

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(7),field) ,gfconv(Adj(1,2),S(8),field),field),gfconv(Adj(1,3),S(9),field),fi eld),gfconv(Adj(1,4),S(10),field),field),gfconv(Adj(1,5),S(11),fie ld),field),gfconv(Adj(1,6),S(12),field),field);

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(7),field) ,gfconv(Adj(2,2),S(8),field),field),gfconv(Adj(2,3),S(9),field),fi eld),gfconv(Adj(2,4),S(10),field),field),gfconv(Adj(2,5),S(11),fie ld),field),gfconv(Adj(2,6),S(12),field),field);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(7),field) ,gfconv(Adj(3,2),S(8),field),field),gfconv(Adj(3,3),S(9),field),fi eld),gfconv(Adj(3,4),S(10),field),field),gfconv(Adj(3,5),S(11),fie ld),field),gfconv(Adj(3,6),S(12),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(7),field) ,gfconv(Adj(4,2),S(8),field),field),gfconv(Adj(4,3),S(9),field),fi


(39)

Universitas Kristern Maranatha eld),gfconv(Adj(4,4),S(10),field),field),gfconv(Adj(4,5),S(11),fie ld),field),gfconv(Adj(4,6),S(12),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(7),field) ,gfconv(Adj(5,2),S(8),field),field),gfconv(Adj(5,3),S(9),field),fi eld),gfconv(Adj(5,4),S(10),field),field),gfconv(Adj(5,5),S(11),fie ld),field),gfconv(Adj(5,6),S(12),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1),S(7),field) ,gfconv(Adj(6,2),S(8),field),field),gfconv(Adj(6,3),S(9),field),fi eld),gfconv(Adj(6,4),S(10),field),field),gfconv(Adj(6,5),S(11),fie ld),field),gfconv(Adj(6,6),S(12),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); Kappa(1,7)=Sigma(6); end

else %terdapat 7 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:7

for d=1:7

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(7)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1),S(8), field),gfconv(Adj(1,2),S(9),field),field),gfconv(Adj(1,3),S(10),fi eld),field),gfconv(Adj(1,4),S(11),field),field),gfconv(Adj(1,5),S( 12),field),field),gfconv(Adj(1,6),S(13),field),field),gfconv(Adj(1 ,7),S(14),field),field);

Sigma(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1),S(8), field),gfconv(Adj(2,2),S(9),field),field),gfconv(Adj(2,3),S(10),fi eld),field),gfconv(Adj(2,4),S(11),field),field),gfconv(Adj(2,5),S( 12),field),field),gfconv(Adj(2,6),S(13),field),field),gfconv(Adj(2 ,7),S(14),field),field);

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1),S(8), field),gfconv(Adj(3,2),S(9),field),field),gfconv(Adj(3,3),S(10),fi eld),field),gfconv(Adj(3,4),S(11),field),field),gfconv(Adj(3,5),S( 12),field),field),gfconv(Adj(3,6),S(13),field),field),gfconv(Adj(3 ,7),S(14),field),field);

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1),S(8), field),gfconv(Adj(4,2),S(9),field),field),gfconv(Adj(4,3),S(10),fi eld),field),gfconv(Adj(4,4),S(11),field),field),gfconv(Adj(4,5),S( 12),field),field),gfconv(Adj(4,6),S(13),field),field),gfconv(Adj(4 ,7),S(14),field),field);

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1),S(8), field),gfconv(Adj(5,2),S(9),field),field),gfconv(Adj(5,3),S(10),fi eld),field),gfconv(Adj(5,4),S(11),field),field),gfconv(Adj(5,5),S(


(40)

Universitas Kristern Maranatha 12),field),field),gfconv(Adj(5,6),S(13),field),field),gfconv(Adj(5 ,7),S(14),field),field);

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1),S(8), field),gfconv(Adj(6,2),S(9),field),field),gfconv(Adj(6,3),S(10),fi eld),field),gfconv(Adj(6,4),S(11),field),field),gfconv(Adj(6,5),S( 12),field),field),gfconv(Adj(6,6),S(13),field),field),gfconv(Adj(6 ,7),S(14),field),field);

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(7,1),S(8), field),gfconv(Adj(7,2),S(9),field),field),gfconv(Adj(7,3),S(10),fi eld),field),gfconv(Adj(7,4),S(11),field),field),gfconv(Adj(7,5),S( 12),field),field),gfconv(Adj(7,6),S(13),field),field),gfconv(Adj(7 ,7),S(14),field),field);

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); Kappa(1,7)=Sigma(6); Kappa(1,8)=Sigma(7); end else %terdapat 8 error

kofaktor=kof(M,S,field); Adj=kofaktor';

mydets=abs(determinan); for a=1:8

for d=1:8

Adj(a,d)=gfdeconv(Adj(a,d),mydets,field); end

end

Sigma(8)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(1,1) ,S(9),field),gfconv(Adj(1,2),S(10),field),field),gfconv(Adj(1,3),S (11),field),field),gfconv(Adj(1,4),S(12),field),field),gfconv(Adj( 1,5),S(13),field),field),gfconv(Adj(1,6),S(14),field),field),gfcon v(Adj(1,7),S(15),field),field),gfconv(Adj(1,8),S(16),field),field) ;

Sigma(7)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(2,1) ,S(9),field),gfconv(Adj(2,2),S(10),field),field),gfconv(Adj(2,3),S (11),field),field),gfconv(Adj(2,4),S(12),field),field),gfconv(Adj( 2,5),S(13),field),field),gfconv(Adj(2,6),S(14),field),field),gfcon v(Adj(2,7),S(15),field),field),gfconv(Adj(2,8),S(16),field),field) ;

Sigma(6)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(3,1) ,S(9),field),gfconv(Adj(3,2),S(10),field),field),gfconv(Adj(3,3),S (11),field),field),gfconv(Adj(3,4),S(12),field),field),gfconv(Adj( 3,5),S(13),field),field),gfconv(Adj(3,6),S(14),field),field),gfcon v(Adj(3,7),S(15),field),field),gfconv(Adj(3,8),S(16),field),field) ;

Sigma(5)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(4,1) ,S(9),field),gfconv(Adj(4,2),S(10),field),field),gfconv(Adj(4,3),S (11),field),field),gfconv(Adj(4,4),S(12),field),field),gfconv(Adj( 4,5),S(13),field),field),gfconv(Adj(4,6),S(14),field),field),gfcon


(41)

Universitas Kristern Maranatha v(Adj(4,7),S(15),field),field),gfconv(Adj(4,8),S(16),field),field) ;

Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1) ,S(9),field),gfconv(Adj(5,2),S(10),field),field),gfconv(Adj(5,3),S (11),field),field),gfconv(Adj(5,4),S(12),field),field),gfconv(Adj( 5,5),S(13),field),field),gfconv(Adj(5,6),S(14),field),field),gfcon v(Adj(5,7),S(15),field),field),gfconv(Adj(5,8),S(16),field),field) ;

Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1) ,S(9),field),gfconv(Adj(6,2),S(10),field),field),gfconv(Adj(6,3),S (11),field),field),gfconv(Adj(6,4),S(12),field),field),gfconv(Adj( 6,5),S(13),field),field),gfconv(Adj(6,6),S(14),field),field),gfcon v(Adj(6,7),S(15),field),field),gfconv(Adj(6,8),S(16),field),field) ;

Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(7,1) ,S(9),field),gfconv(Adj(7,2),S(10),field),field),gfconv(Adj(7,3),S (11),field),field),gfconv(Adj(7,4),S(12),field),field),gfconv(Adj( 7,5),S(13),field),field),gfconv(Adj(7,6),S(14),field),field),gfcon v(Adj(7,7),S(15),field),field),gfconv(Adj(7,8),S(16),field),field) ;

Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(8,1) ,S(9),field),gfconv(Adj(8,2),S(10),field),field),gfconv(Adj(8,3),S (11),field),field),gfconv(Adj(8,4),S(12),field),field),gfconv(Adj( 8,5),S(13),field),field),gfconv(Adj(8,6),S(14),field),field),gfcon v(Adj(8,7),S(15),field),field),gfconv(Adj(8,8),S(16),field),field) ;

Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); Kappa(1,7)=Sigma(6); Kappa(1,8)=Sigma(7); Kappa(1,9)=Sigma(8);

end end

%Menyusun error locator polynomial for i = 1:n

sigma(i) = Kappa(1,i); end


(42)

1

Universitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1 Latar Belakang

Pada sistem komunikasi, proses pengiriman data dari sumber ke tujuan

dapat dikatakan baik bila data yang diterima sama dengan data yang dikirim. Pada

kenyataannya selama proses pengiriman data, data yang dikirim seringkali

mengalami gangguan yang dapat menyebabkan data yang diterima tidak sama

dengan data yang dikirim.

Oleh sebab itu diperlukan suatu metode untuk menanggulangi error akibat

gangguan pada proses pengiriman. Salah satu cara yang digunakan untuk

mengatasi permasalahan tersebut adalah Error Correcting Code (ECC). Metode

ini merupakan proses menambahkan “

redundant bit

setelah data.

Pada tugas akhir ini akan disimulasikan suatu teknik pengkodean beserta

teknik untuk memperbaiki error agar dapat membantu mahasiswa lebih

memahami proses pengkodean pada sistem komunikasi digital. Salah satu metode

ECC yang telah digunakan secara luas adalah metode Reed-Solomon.

Kode Reed-Solomon merupakan teknik non-binary Error Correcting

Code (ECC). Pada teknik ini data yang akan dikirim ditambahkan parity check

dan kemudian dikirimkan secara bersamaan. Data yang mungkin rusak, baik

akibat noise ataupun yang lainnya, kemudian diperbaiki di penerima agar data

yang diterima sama dengan data yang dikirimkan.

Pada

kode

Reed-Solomon

terdapat

beberapa

algoritma

untuk

mendekodekan kode tersebut. Pada Tugas Akhir Andi Atmadja (0122003) telah

dibahas pendekodean dengan menggunakan algoritma Berlekamp-Massey. Oleh

karena itu, pada Tugas Akhir ini dibandingkan dua dekoder yang menggunakan

algoritma yang berbeda. Pada Tugas Akhir ini ditambahkan dekoder dengan

algoritma Peterson-Gorenstein-Zierler. Perbandingan yang dilakukan adalah

waktu proses pendekodean pada sisi penerima antara kedua dekoder dalam

mengoreksi error pada kode Reed-Solomon.


(43)

2

Universitas Kristen Maranatha

1.2 Identifikasi Masalah

1. Bagaimana membuat simulasi enkoder dan dekoder yang menggunakan

algoritma Peterson-Gorenstein-Zierler atau Berlekamp-Massey untuk kode

Reed-Solomon.

2. Bagaimana hasil yang didapat dan perbandingan waktu proses

pendekodean antara algoritma Peterson-Gorenstein-Zierler dengan

Berlekamp-Massey pada kode Reed-Solomon.

1.3 Tujuan

Tujuan Tugas Akhir ini adalah :

1.

Mensimulasikan pengkodean data dan pendekodean kode Reed-Solomon

untuk mendeteksi dan mengoreksi error menggunakan algoritma

Peterson-Gorenstein-Zierler atau Berlekamp-Massey pada software

MATLAB.

2.

Memperlihatkan hasil serta perbandingan waktu proses pendekodean

antara algoritma Peterson-Gorenstein-Zierler dengan Berlekamp-Massey

pada kode Reed-Solomon.

1.4 Pembatasan Masalah

Dalam Tugas Akhir ini akan dibatasi pada beberapa hal berikut :

1.

Simulasi dilakukan dengan menggunakan software MATLAB 7.12

2.

Algoritma yang dipakai pada dekoder adalah algoritma

Peterson-Gorenstein-Zierler atau Berlekamp-Massey.

3.

Data yang dimasukkan merupakan data acak integer.

4.

Tidak membahas proses modulasi dan demodulasi.

5.

Dekoder dengan algoritma PGZ dirancang maksimal mengoreksi error

berjumlah 8 simbol.


(44)

3

Universitas Kristen Maranatha

1.5 Sistematika Penulisan

Sistematika penulisan Tugas Akhir ini sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisikan latar belakang masalah, identifikasi masalah, tujuan,

pembatasan masalah, dan sistematika penulisan.

BAB II LANDASAN TEORI

Bab ini berisiteori proses pengkodean dan pendekodean kode Reed-Solomon

secara matematis.

BAB III SIMULASI PENGKODEAN DAN PENDEKODEAN

Bab ini berisi flowchart untuk mensimulasikan pengkodean dan pendekodean

kode Reed-Solomon menggunakan algoritma Peterson-Gorenstein-Zierler atau

Berlekamp-Massey .

BAB IV DATA PENGAMATAN DAN PERBANDINGAN

Bab ini berisi data pengamatan dan perbandingan waktu proses pendekodean

antara kedua dekoder yang dipakai untuk mendekodekan kode Reed-Solomon

yang diperoleh dari hasil simulasi menggunakan software Matlab.

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan saran yang diperoleh dari hasil Tugas Akhir yang

telah dilakukan.


(1)

Universitas Kristern Maranatha v(Adj(4,7),S(15),field),field),gfconv(Adj(4,8),S(16),field),field) ; Sigma(4)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(5,1) ,S(9),field),gfconv(Adj(5,2),S(10),field),field),gfconv(Adj(5,3),S (11),field),field),gfconv(Adj(5,4),S(12),field),field),gfconv(Adj( 5,5),S(13),field),field),gfconv(Adj(5,6),S(14),field),field),gfcon v(Adj(5,7),S(15),field),field),gfconv(Adj(5,8),S(16),field),field) ; Sigma(3)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(6,1) ,S(9),field),gfconv(Adj(6,2),S(10),field),field),gfconv(Adj(6,3),S (11),field),field),gfconv(Adj(6,4),S(12),field),field),gfconv(Adj( 6,5),S(13),field),field),gfconv(Adj(6,6),S(14),field),field),gfcon v(Adj(6,7),S(15),field),field),gfconv(Adj(6,8),S(16),field),field) ; Sigma(2)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(7,1) ,S(9),field),gfconv(Adj(7,2),S(10),field),field),gfconv(Adj(7,3),S (11),field),field),gfconv(Adj(7,4),S(12),field),field),gfconv(Adj( 7,5),S(13),field),field),gfconv(Adj(7,6),S(14),field),field),gfcon v(Adj(7,7),S(15),field),field),gfconv(Adj(7,8),S(16),field),field) ; Sigma(1)=gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfadd(gfconv(Adj(8,1) ,S(9),field),gfconv(Adj(8,2),S(10),field),field),gfconv(Adj(8,3),S (11),field),field),gfconv(Adj(8,4),S(12),field),field),gfconv(Adj( 8,5),S(13),field),field),gfconv(Adj(8,6),S(14),field),field),gfcon v(Adj(8,7),S(15),field),field),gfconv(Adj(8,8),S(16),field),field) ; Kappa(1,2)=Sigma(1); Kappa(1,3)=Sigma(2); Kappa(1,4)=Sigma(3); Kappa(1,5)=Sigma(4); Kappa(1,6)=Sigma(5); Kappa(1,7)=Sigma(6); Kappa(1,8)=Sigma(7); Kappa(1,9)=Sigma(8); end end

%Menyusun error locator polynomial

for i = 1:n

sigma(i) = Kappa(1,i); end


(2)

1 Universitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1 Latar Belakang

Pada sistem komunikasi, proses pengiriman data dari sumber ke tujuan dapat dikatakan baik bila data yang diterima sama dengan data yang dikirim. Pada kenyataannya selama proses pengiriman data, data yang dikirim seringkali mengalami gangguan yang dapat menyebabkan data yang diterima tidak sama dengan data yang dikirim.

Oleh sebab itu diperlukan suatu metode untuk menanggulangi error akibat gangguan pada proses pengiriman. Salah satu cara yang digunakan untuk mengatasi permasalahan tersebut adalah Error Correcting Code (ECC). Metode

ini merupakan proses menambahkan “redundant bit” setelah data.

Pada tugas akhir ini akan disimulasikan suatu teknik pengkodean beserta teknik untuk memperbaiki error agar dapat membantu mahasiswa lebih memahami proses pengkodean pada sistem komunikasi digital. Salah satu metode ECC yang telah digunakan secara luas adalah metode Reed-Solomon.

Kode Reed-Solomon merupakan teknik non-binary Error Correcting Code (ECC). Pada teknik ini data yang akan dikirim ditambahkan parity check dan kemudian dikirimkan secara bersamaan. Data yang mungkin rusak, baik akibat noise ataupun yang lainnya, kemudian diperbaiki di penerima agar data yang diterima sama dengan data yang dikirimkan.

Pada kode Reed-Solomon terdapat beberapa algoritma untuk mendekodekan kode tersebut. Pada Tugas Akhir Andi Atmadja (0122003) telah dibahas pendekodean dengan menggunakan algoritma Berlekamp-Massey. Oleh karena itu, pada Tugas Akhir ini dibandingkan dua dekoder yang menggunakan algoritma yang berbeda. Pada Tugas Akhir ini ditambahkan dekoder dengan algoritma Peterson-Gorenstein-Zierler. Perbandingan yang dilakukan adalah waktu proses pendekodean pada sisi penerima antara kedua dekoder dalam mengoreksi error pada kode Reed-Solomon.


(3)

2

Universitas Kristen Maranatha 1.2 Identifikasi Masalah

1. Bagaimana membuat simulasi enkoder dan dekoder yang menggunakan algoritma Peterson-Gorenstein-Zierler atau Berlekamp-Massey untuk kode Reed-Solomon.

2. Bagaimana hasil yang didapat dan perbandingan waktu proses pendekodean antara algoritma Peterson-Gorenstein-Zierler dengan Berlekamp-Massey pada kode Reed-Solomon.

1.3 Tujuan

Tujuan Tugas Akhir ini adalah :

1. Mensimulasikan pengkodean data dan pendekodean kode Reed-Solomon untuk mendeteksi dan mengoreksi error menggunakan algoritma Peterson-Gorenstein-Zierler atau Berlekamp-Massey pada software MATLAB.

2. Memperlihatkan hasil serta perbandingan waktu proses pendekodean antara algoritma Peterson-Gorenstein-Zierler dengan Berlekamp-Massey pada kode Reed-Solomon.

1.4 Pembatasan Masalah

Dalam Tugas Akhir ini akan dibatasi pada beberapa hal berikut : 1. Simulasi dilakukan dengan menggunakan software MATLAB 7.12 2. Algoritma yang dipakai pada dekoder adalah algoritma

Peterson-Gorenstein-Zierler atau Berlekamp-Massey.

3. Data yang dimasukkan merupakan data acak integer. 4. Tidak membahas proses modulasi dan demodulasi.

5. Dekoder dengan algoritma PGZ dirancang maksimal mengoreksi error berjumlah 8 simbol.


(4)

3

Universitas Kristen Maranatha 1.5 Sistematika Penulisan

Sistematika penulisan Tugas Akhir ini sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisikan latar belakang masalah, identifikasi masalah, tujuan, pembatasan masalah, dan sistematika penulisan.

BAB II LANDASAN TEORI

Bab ini berisiteori proses pengkodean dan pendekodean kode Reed-Solomon secara matematis.

BAB III SIMULASI PENGKODEAN DAN PENDEKODEAN

Bab ini berisi flowchart untuk mensimulasikan pengkodean dan pendekodean kode Reed-Solomon menggunakan algoritma Peterson-Gorenstein-Zierler atau Berlekamp-Massey .

BAB IV DATA PENGAMATAN DAN PERBANDINGAN

Bab ini berisi data pengamatan dan perbandingan waktu proses pendekodean antara kedua dekoder yang dipakai untuk mendekodekan kode Reed-Solomon yang diperoleh dari hasil simulasi menggunakan software Matlab.

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan saran yang diperoleh dari hasil Tugas Akhir yang telah dilakukan.


(5)

63 Universitas Kristen Maranatha

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari hasil simulasi dan analisa yang telah dilakukan dapat diambil kesimpulan sebagai berikut:

1. Simulasi pengkodean dan pendekodean kode RS dengan dekoder algoritma BMA atau PGZ berhasil dilakukan pada Matlab 7.12 .

2. Proses pendekodean dengan dekoder PGZ lebih lama dibandingkan BMA kecuali untuk nilai t=1. Perbedaan waktu pendekodean rata-rata kedua dekoder adalah 0,115 s untuk nilai t dari 1 sampai 5 simbol. Dekoder PGZ lebih lama sekitar 10 kali, 120 kali, dan 960 kali dibanding dekoder BMA untuk nilai t=6,7, dan 8 berdasarkan nilai t untuk setiap nilai m. Perbedaan waktu pendekodean rata-rata untuk nilai t dari 1 sampai 7 simbol secara berturut-turut adalah 0,04 s, 0,048 s, 0,058 s, 0,054 s, 0,259s, 1,605 s, dan 14,606 s berdasarkan nilai m untuk setiap nilai t. Dekoder PGZ kurang efisien dari segi waktu proses pendekodean dibandingkan dekoder BMA untuk nilai t>5 simbol karena perbedaan waktunya terlalu jauh.

5.2 Saran

Pada penelitian berikutnya dapat digunakan algoritma yang berbeda untuk mendekodekan error pada kode Reed-Solomon. Selain algoritma Berlekamp-Massey dan Peterson-Gorenstein-Zierler, Algoritma Euclidean dapat digunakan untuk mendekodekan error pada kode Reed-Solomon.


(6)

64 Universitas Kristen Maranatha

DAFTAR PUSTAKA

1. Atmadja, Andy. Simulasi Pendekodean Error Dan Erasure Menggunakan Algoritma Berlekamp Massey Untuk Kode Reed Solomon. Tugas Akhir, Jurusan Teknik Elektro, Universitas Kristen Maranatha, Bandung. 2008. 2. Clarke, C.L.P., Reed-Solomon Error Correction. R&D White Paper, July

2002.

3. Lin, Shu and Daniel J.Castello,.Error Control Coding: Fundamental and Application. New Jersey: Prentice-Hall International Inc.1983.

4. Wibisono Gunawan, Sari Lydia. Teknik Pengodean Sistem Komunikasi Dijital. Bandung: Rekayasa Sains.2010.

5. Wicker, Stephen B., Error Control Systems for Digital Communication and Storage. Georgia, Atlanta. 1993.