Simulasi dan Perbandingan Waktu Penkodean Antara Algoritma Peterson-Gorenstein-Zierler dan Berlekamp-Massey Pada Kode Reed-Solomon.
i
Universitas Kristen MaranathaSIMULASI 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 MaranathaSIMULATION 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 MaranathaDAFTAR 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 Maranatha2.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 MaranathaBAB 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 MaranathaDAFTAR 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 MaranathaGambar 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 MaranathaDAFTAR 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 errorkofaktor=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 MaranathaBAB 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.