Anda di halaman 1dari 7

Laporan Sementara Praktikum 2

ENCODER DAN DECODER KODE SIKLIK


Oleh Hamidatul Izzah / 1210121056 / 3D4 TB
A. Polinomial, matriks generator, dan matriks parity kode siklik
A.1 Membangkitkan polinomial kode siklik (7,4) dengan Matlab
>> p=cyclpoly(7,4)

Fungsi cyclpoly yaitu menghasilkan polinomial


generator kode siklik dengan menentukan nilai (n,k)
dengan panjang codeword(n) dan panjang pesan(k).

p=
1

1. Kode siklik (n,k) dibutuhkan generator dengan derajat polinomial tertinggi (nk). Untuk kode siklik (7,4) derajat polinomial generator tertinggi yang
diperoleh dari percobaan adalah 3. Berdasarkan teori derajat polinomial
tertinggi dapat diperoleh dengan (n-k), sehingga pada percobaan nilai
generator tertinggi bernilai 3, sesuai seperti teori yang telah ada.
A.2 Membangkitkan matrik parity dan matrik generator kode siklik (7,4) dengan
Matlab
>> [h,g]=cyclgen(7,p)

Fungsi cyclgen yaitu menghasilkan parity-check dan


matrik generator kode siklik

h=
1

g=

2. Mengulangi langkah A.2 dengan polinomial p yang lain


>>p1 =
1

>> [h1,g1]=cyclgen(7,p1)

Pada polinomial p1, nilai h1 dan g1 dapat diketahui


hasilnya dengan fungsi cyclgen karena nilai polinomial
p1 masih memenuhi syarat polinomial generator pada
kode siklik yang memiliki derajat (n-k).

h1 =
1
0
0
0
g1 =
1
1
0

0
1
0
0

0
0
1
0

0
0
0
1

1
1
1
0

1
1
0
0

0
1
1
0

1
1
1

1
0
1

0
0
0

1
0
0

0
1
0

0
0
1

>> p2=[1 1 0 1 1 0]

Pada polinomial p2 dan polinomial p3 terjadi error pada


saat pemanggilan fungsi cyclgen, hal ini terjadi karena
nilai yang dibangkitkan melebihi batas syarat n-k.

p2 =
1

>> [h2,g2]=cyclgen(7,p2)
??? Error using ==> cyclgen at 47
The generator polynomial P cannot produce a cyclic code generator matrix.
Berdasarkan teori yang ada, nilai p adalah nilai polinomial generator, h dan g merupakan
sebuah matrik yang didalamnya terdapat matrik generator polinomial dan matrik parity.

>> p3=[1 0 1 1 1 0]
p3 =
1

>> [h3,g3]=cyclgen(7,p3)
??? Error using ==> cyclgen at 47
The generator polynomial P cannot produce a cyclic code generator matrix.
B. Enkoding dan dekoding kode siklik (tanpa error)
B.1 Mengamati hasil pengkodean (encoding) kode siklik
>> p=cyclpoly(7,4)

Fungsi cyclpoly yaitu menghasilkan polinomial


generator kode siklik dengan menentukan nilai (n,k)
dengan panjang codeword(n) dan panjang pesan(k).

p=
1

>> [h,g]=cyclgen(7,p)

Fungsi cyclgen yaitu menghasilkan parity-check dan


matrik generator kode siklik

h=
1

g=

>> pesan=[0 0 1 1]
pesan =
0

>> codeword=encode(pesan,7,4,'cyclic')
Fungsi

encode yaitu mengkodekan pesan


menggunakan metode koreksi kesalahan.

codeword =
1

3. Pola dari hasil pengkodean yaitu bit parity ditambah dengan pesan kaitannya
dengan struktur kode siklik yaitu d(x).g(x) , dimana fungsi d(x) adalah informasi
polinomial dan g(x) adalah generator polinomial. Pada percobaan diatas sudah memenuhi
struktur kode siklik yaitu dengan 0011 adalah pesan dan 101 adalah parity.
4. Mengulangi langkah B.1 dengan mengganti pesan menjadi msg=[00111].
>> pesan1=[0 0 1 1 1]
pesan1 =
Fungsi encode yaitu mengkodekan pesan
0
0
1
1
1
menggunakan metode koreksi kesalahan.
>> codeword1=encode(pesan1,7,4,'cyclic')
codeword1 =
1
0
1
0
0
1
1
1
0
1
1
0
0
0
Pengkodean dari pesan1 diatas berjumlah 5 bit, berbeda dari percobaan
sebelumnya yang berjumlah 4 bit. Berdasarkan teori, pesan1 tersebut terdiri
dari bit parity dan pesan informasi yang disampaiakan
B.2 Mengamati hasil pengkodean kembali (decoding) kode siklik
>> pesan_terima=decode(codeword,7,4,'cyclic')
pesan_terima =
0

>> %gunakan perintah pengecekan


>> cek=[pesan pesan_terima]
cek =

Fungsi decode yaitu mengkodekan kembali


pesan dengan teknik dan parameter yang sesuai
pada saat proses mengkodekan sinyal asli.

1
>> cek=[pesan'
pesan_terima']

>>
[number,ratio]=biterr(pesan',p
esan_terima')

cek =

number =

ratio =

%mengeplot pesan tanda noise


subplot(3,1,1);
stem(pesan,'b');
title('Pesan yang dikirim');
subplot(3,1,2);
stem(codeword,'m');
ylabel('Codeword Tanpa Error')
subplot(3,1,3);
stem(pesan_terima,'r');
xlabel('Pesan yang Diterima');

Pesan yang dikirim

1
0.5

Codeword Tanpa Error

1.5

2.5

3.5

1.5

3.5

1
0.5
0

1
0.5
0

2.5
3
Pesan yang Diterima

5. Mengecek hasil pesan yang dikirim dengan pesan yang


diterima setelah mengalami proses coding dan decoding,
hasilnya yaitu pesan diterima sama dengan pesan yang
dikirim yang juga telah melalaui proses encode dan decode.
Hal tersebut terjadi karena pada saat decoding terjadi proses
deteksi dan koreksi tiap bit informasi , dimana sebelumnya
pada proses encoding terjadi penambahan parity dan pesan.

C. Enkoding dan dekoding kode siklik (Ditambah dengan


error)
>> %untuk mempermudah pengamatan,codeword tanpa error
diambil dari percobaan sebelumnya
>> %tambahkan error pada bit ke 5 pada codeword sebelumnya
>> error=zeros(7,1);
>> error([5],1)=1

error =
0
0

>> code_noise=fix(code_error)

code_noise =

>>
code_error=xor(error,codeword
')
code_error =

1
1
1

1
0
1
0
1
1

>> cek=[codeword'
code_noise]
cek =
1

1
1

1
1

6. Mengecek hasil code dan code terima , setelah ditambah


dengan error, hasilnya pada bit ke 5 terjadi perbedaan pada
bagian codeword . Peristiwa tidak samanya codeword ini
disebabkan karena penambahan error

>>
pesan_terima=decode(code_noi
se,7,4,'cyclic')
pesan_terima =
0
0
1

>> cek_pesan=[pesan'
pesan_terima]
cek_pesan =
0

1
%mengeplot pesan_terima dengan noise
subplot(3,1,1);
stem(pesan,'b');
title('Pesan yang Dikirim');
subplot(3,1,2);
stem(code_terima,'m');
ylabel('Codeword dengan 3 bit Error');
subplot(3,1,3);
stem(pesan_terima_noise,'r');
xlabel('Pesan yang Diterima');

7. Mengecek pesan sebelum dikodekan maupun setelah dikodekan , hasil


perbandingan tersebut adalah pesan sebelum dan setelah dikodekan
tidak terpengaruh oleh bit error yang ditambahkan pada informasi yang
diterima. Hal tersebut terjadi karena pada proses decoding terdapat
proses koreksi kesalahan. Sehingga hasil yang dikirim dan yang diterima
sama.

Anda mungkin juga menyukai