Bllok Kodet Lineare

40
UNIVERSITETI I PRISHTINËS FAKULTETI I INXHINIERISË ELEKTRIKE DHE KOMPJUTERIKE Departamenti i Telekomunikacionit Studimet Master PUNIM SEMINARIK Teoria e informacionit dhe kodimi Bllok Kodet Lineare Mentori: Kandidati: Dr. Sc. Rexhep Hasani Taulant Zeka Prishtinë, Janar 2014

Transcript of Bllok Kodet Lineare

UNIVERSITETI I PRISHTINËS

FAKULTETI I INXHINIERISË ELEKTRIKE DHE

KOMPJUTERIKE

Departamenti i Telekomunikacionit

Studimet Master

PUNIM SEMINARIK

Teoria e informacionit dhe kodimi

Bllok Kodet Lineare

Mentori: Kandidati:

Dr. Sc. Rexhep Hasani Taulant Zeka

Prishtinë, Janar 2014

I

ABSTRAKT

Bllok kodet bëjnë pjesë në familjen e madhe të kodeve korrigjuese të gabimeve që

kodojnë të dhënat në blloqe. Ekziston një numër i madh i shembujve për bllok kodet, shumica

prej të cilëve kanë gamë të gjerë aplikimesh.

Në teorinë e kodimit, një kod linear është një kod i korrigjimit të gabimeve për të cilin

kombinimi linear i fjalëkodeve është po ashtu fjalëkod. Kodet lineare ndahen në bllok kode

dhe kode konvolucionale, megjithatë turbo kodet mund të shihen me origjinë të përzier të

këtyre dyjave.

Fjalëkodet në një bllok kod linear janë blloqe të simboleve që janë koduar duke

përdorur më tepër simbole se vlera origjinale që do të dërgohet. Një kod linear me gjatësisë n

transmeton blloqe që përmbajnë n simbole.

P.sh kodi [7, 4] i Hamingut është kod linear binar i cili përfaqëson mesazhin 4-bitësh

duke përdorur fjalëkode 7-bitëshe. Dy fjalëkode të ndryshme dallojnë në së paku tre bit. Si

pasojë, deri dy gabime për fjalëkod mund të zbulohen dhe një gabim mund të korrigjohet. Ky

kod përmban fjalëkode.

FJALËT KYQE: Kodimi, dekodimi, bllok kodet, distanca e Hamingut, matrica gjeneruese

G, matrica e kontrollit të paritetit H, sindroma, MATLAB.

II

Përmbajtja

ABSTRAKT.............................................................................................................................................I

FJALËT KYQE........................................................................................................................................I

HYRJE .................................................................................................................................................... 1

1. Hyrje në bllok kodet lineare ............................................................................................................... 1

2. Sindroma dhe detektimi i gabimeve ................................................................................................... 7

3. Distanca minimale e një bllok kodi .................................................................................................. 11

4. Aftësia e detektimit të gabimeve dhe korrigjimit të gabimeve për bllok kodet ............................... 13

5. Probabiliteti i gabimit të pa detektuar për kodet lineare për kanalin binar simetrik (BSC) ............. 14

6. Shtojca në MATLAB ....................................................................................................................... 17

Përfundim .............................................................................................................................................. 24

Referencat ............................................................................................................................................. 37

1

HYRJE

Gjatë transmetimit të të dhënave të informacionit nëpërmjet një kanali me zhurmë,

kodimi i kanalit përdoret për të reduktuar shkallen e gabimeve të bitëve në marrës. Teknikat e

kodimit të kanalit shtojnë tepricë te të dhënat e transmetuara që është e njohur edhe për të

marrësin.

Marrësi ka informacione shtesë të cilat i shfrytëzon për të detektuar dhe korrigjuar

gabimet që kanë ndodhur gjatë transmetimit. Në këtë seminar kemi analizuar klasën e bllok

kodeve lineare. Bllok kodet lineare janë kode me simbole të fuqishme që gjejnë aplikim në

standardet moderne të komunikimit si në transmetimet digjitale të zërit, në transmetimet

digjitale të videos, si dhe në kompakt disqe.

1. Hyrje në bllok kodet lineare

Procesi i kodimit është procesi i caktimit të një sekuence binare për elementet e

alfabetit të dhënë. Bashkësinë e këtyre sekuencave binare do ta quajmë kod, ndërsa elementet

e veçanta të kësaj bashkësie quhen fjalëkod (codewords). Ndërkohë që me alfabet do të

kuptojmë një bashkësi simbolesh të quajtura shkronja. Siç dihet dalja e burimit të

informacionit është sekuencë e shifrave binare "0" ose "1" . [1] Kjo sekuencë binare e

informacionit është e ndarë në bllok mesazhe me gjatësi fikse, e paraqitur me u . Çdo bllok

mesazh përbëhet nga k shifra të informacionit ku ekzistojnë 2k mesazhe të dallueshme.

Koderi transformon çdo mesazh hyrës u në n-elemente binare v me n k .

- n-elementet binare të vektorit v paraqesin fjalëkodin ose vektorin e kodit për mesazhin u .

- ekzistojnë 2k fjalëkode të dallueshme.

Bashkësia e 2k fjalëkodeve paraqet ose njihet si bllok kod. Për një bllok kod që të jetë i

përdorshëm, duhet të ekzistojë korrespondenca “një në një” në mes mesazhit u dhe fjalëkodit

v . Një strukturë e dëshirueshme për një kod bllok për të zotëruar është lineariteti, me këtë

strukturë, kompleksiteti i kodimit do të reduktohet në masë të madhe [2].

Koderiu v

Bllok mesazhi Fjalëkodi

Figurë 1.1: Bllok skema e koderit

2

Definicion: Bllok kodi me gjatësi n dhe 2k fjalëkode është quajtur ( , )n k kod linear nëse

2k fjalëkode formojnë nënhapsiren k-dimensionale të hapësirës vektoriale për të gjitha

elementet brenda fushës GF(2).

Në fakt bllok kodi është linear nëse mbledhja sipas modulit 2 - “ose ekskluzive” e dy

fjalëkodeve është gjithashtu fjalëkod.

Për deri sa ( , )n k kodi linear C është nënhapsirë k-dimensionale e hapësirës vektoriale nv

për të gjithë elementet është e mundur që të gjemë k fjalëkodet linearisht të pavarura

0 1 2 1, , ,..., kg g g g në C .

0 0 1 1 2 2 1 1... k ku u u u v g g g g ku 0iu ose 1 për 0 1 k (1.1)

Le të organizojmë këto k fjalëkodet linearisht të pavarura në formë të matricës k n si në

vijim:

00 01 0, 10

10 11 1, 11

1,0 1,1 1, 11

n

n

k k k nk

g g g

g g g

g g g

g

gG

g

ku 0 1 1, 1( , ,..., )i i i ng g g g për 0 i k (1.2)

Le të jetë 0 1 1( , ,..., )ku u u u mesazhi që duhet të kodohet atëherë fjalëkodi korrespondues

është:

0

1

0 1 1 0 0 1 1 1 1

1

( , ,..., ) ...k k k

k

u u u u u u

g

gv u G g g g

g

(1.3)

Pasi rreshtat e matricës G gjenerojnë ( , )n k kod linear, matrica G quhet matricë gjeneruese

e C . Çdo k fjalëkod linearisht i pavarur i ( , )n k kodit linear mund të përdoret për të formuar

matricën gjeneruese të kodit. Kjo rrjedh nga ekuacioni (1.3) se çdo ( , )n k kod linear është

plotësisht i përcaktuar nga k rreshtat e matricës gjeneruese G [3].

Shembull ilustrues 1: Kodi linear (7,4) i dhënë në tabelën 1 ka matricën gjeneruese si në

vijim:

0

1

2

3

1 1 0 1 0 0 0

0 1 1 0 1 0 0

1 1 1 0 0 1 0

1 0 1 0 0 0 1

g

gG

g

g

3

Nëse (1 1 0 1)u është mesazhi që duhet të kodohet, i korrespondon fjalëkodi në pajtim me

ekuacionin (1.3) dhe do të jetë:

0 1 2 31 1 0 1 (1101000) (0110100) (1010001) (0001101) v = u G g g g g

Në tabelën e mëposhtme është dhënë një shembull i bllok kodit linear (7,4):

Një veti e dëshirueshme për një bllok kod linear është struktura sistematike e fjalëkodit siç

tregohet në figurën 1.2, ku një fjalëkod është i ndarë në dy pjesë:

- Pjesa e mesazhit përmban k shifra të informacionit.

- Pjesa e kontrollit të redundancës (tepricës) përmban n-k shifra të kontrollit të paritetit.

Bllok kodi linear me këtë strukturë është përmendur si bllok kod sistematik linear i paraqitur

si në figurën e mëposhtme:

Pjesa e kontrollit të redundances Pjesa e mesazhit

(n-k) shifra k shifra

Figurë 1.2: Forma sistematike e fjalëkodit

Tabela 1: Bllok kodi linear me gjatësi k=4 dhe n=7

Mesazhi Fjalëkodi

(0 0 0 0) (0 0 0 0 0 0 0)

(1 0 0 0) (1 1 0 1 0 0 0)

(0 1 0 0) (0 1 1 0 1 0 0)

(1 1 0 0) (1 0 1 1 1 0 0)

(0 0 1 0) (0 1 1 0 0 1 0)

(1 0 1 0) (1 0 1 1 0 1 0)

(0 1 1 0) (0 0 0 0 1 1 0)

(1 1 1 0) (1 1 0 1 1 1 0)

(0 0 0 1) (0 0 1 0 0 0 1)

(1 0 0 1) (1 1 1 1 0 0 1)

(0 1 0 1) (0 1 0 0 1 0 1)

(1 1 0 1) (1 0 0 1 1 0 1)

(0 0 1 1) (0 1 0 0 0 1 1)

(1 0 1 1) (1 0 0 1 0 1 1)

(0 1 1 1) (0 0 1 0 1 1 1)

(1 1 1 1) (1 1 1 1 1 1 1)

4

Një ( , )n k bllok kod sistematik linear është plotësisht i përcaktuar nga matrica G e rendit

k n e formës si më poshtë:

00 01 0, 10

10 11 1, 11

1,0 1,1 1, 11

1 0 0

0 1 0

0 0 1

n k

n k

k k k n kk

k k Matrica e identitetitMatrica P

p p p

p p p

p p p

g

gG

g

ku 0ijp ose 1 (1.4)

Le të jetë 0 1 1( , ,..., )ku u u u mesazhi që duhet të kodohet atëherë fjalëkodi korrespondues

është:

0 1 1 0 1 1( , ,..., ) ( , ,..., )n kv v v v u u u G (1.5)

Nga ekuacioni (1.4) dhe (1.5) rrjedh se komponentet e v janë:

n k i iv u për 0 i k (1.5a)

0 1 1 1 1,...j oj j k k jv u p u p u p për 0 j n k (1.5b)

Ekuacioni (1.5a) tregon që pjesa e djathtë e k shifrave të fjalëkodit v janë identike me shifrat

e informacionit 0 1 1, ,..., ku u u që duhet të kodohen.

Ekuacioni (1.5b) tregon që pjesa e majtë e n-k shifrave redundante janë shumat lineare të

shifrave të informacionit. Shihet qartë nga ekuacioni (1.5b) se n-k ekuacionet quhen

ekuacionet e kontrollit të paritetit të kodit [4].

Shembull ilustrues 2: Le të jetë dhënë matrica G në pajtim me shembullin ilustrues 1 dhe le

të jetë dhënë 0 1 2 3( , , , )u u u uu mesazhi që duhet të kodohet si dhe le të jetë

0 1 2 3 4 5 6( , , , , , , )v v v v v v vv fjalëkodi korrespondues v = u G .

Zgjidhje:

0 1 2 3

1 1 0 1 0 0 0

0 1 1 0 1 0 0( , , , )

1 1 1 0 0 1 0

1 0 1 0 0 0 1

u u u u

v = u G u

5

Pas kryerjes së veprimeve matematikore të shumëzimit marrim shifrat e mëposhtme të

fjalëkodit v .

6 3

5 2

4 1

3 0

2 1 2 3

1 0 1 2

0 0 2 3

v u

v u

v u

v u

v u u u

v u u u

v u u u

Fjalëkodi që i korrespondon mesazhit (1 0 1 1) është (1 0 0 1 0 1 1) .

Për çdo matricë G e rendit k n me k rreshta linearisht të pavarur ekziston matrica H e

rendit ( )n k n me n-k reshta linearisht te pavarur i tillë që çdo vektor në hapësirën rresht i

matricës G është ortogonal me rreshtat e matricës H dhe çdo vektor që është ortogonal me

rreshtat e matricës H është në hapësirën rresht të matricës G .

Një element i vektorit v është fjalëkod në kodin e gjeneruar nga matrica G nëse dhe vetëm

nëse plotësohet kushti 0T v H . Matrica H quhet matricë e kontrollit të paritetit të kodit.

Të 2n k kombinimet lineare të rreshtave të matricës H formon (n,n-k) kodin linear dC .

Ky kod është hapësira zero ( , )n k e kodit linear C e gjenruar nga matrica G . Ku dC quhet

kod i dyfishtë (dual) i kodit C .

Nëse matrica gjeneruese ( , )n k e kodit linear është në formën sistematike si në ekuacionin

(1.4) matrica e kontrollit të paritetit mund të marrë formën e mëposhtme [3]:

00 10 1,0

01 11 1,1

0, 1 1 1 1, 1

1 0 0

0 1 0

0 0 1

k

kT

n k

n k n k k n k

p p p

p p p

p p p

H I P (1.6)

Le të jetë jh

rreshti i j-të i matricës H kemi: 0i j ij ijp p g h për 0 i k dhe

0 j n k kjo implikon që T G H 0

Le të jetë 0 1 1( , ,..., )ku u u u mesazhi që duhet të kodohet, në formën sistematike fjalëkodi

korrespondues do të jetë:

0 1 1 0 1 1( , ,..., , , ,..., )n k kv v v v u u u

Duke përdorur faktin se T v H 0 fitojmë:

0 1 1 1 1,... 0j oj j k k jv u p u p u p (1.7)

6

Duke rregulluar ekuacionin (1.7) ne mund të fitojmë të njëjtat ekuacione të kontrollit të

paritetit si në ekuacionin (1.5b). Çdo ( , )n k kod linear është plotësisht i përcaktuar nga

matrica e kontrollit të paritetit.

Shembull ilustrues 3: Konsideroni matricën gjeneruese të kodit linear (7,4) i dhënë në

shembullin ilustrues 1, matrica korresponduese e kontrollit të paritetit është:

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

H

Zgjidhje:

Së pari gjejmë matricën

1 1 0

0 1 1

1 1 1

1 0 1

P , gjithashtu gjejmë matricën

1 0 1 1

1 1 1 0

0 1 1 1

T

P ,

Pastaj matrica e identitetit është e rendit 7 4 3n k ;

1 0 0

0 1 0

0 0 1

I ,

Dhe së fundi duke u bazuar në ekuacionin (1.6) matrica korresponduese e kontrollit të

paritetit është:

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

T

I P

H

Si përfundim për çdo ( , )n k kod linear C ekziston një matricë G e rendit k n ku në

hapësirën rresht japin C .

Ekziston matrica H e rendit ( )n k n e tillë që n-elementet e vektorit v japin C nëse dhe

vetëm nëse plotësohet kushti 0T v H . Nëse matrica G është e formës si në ekuacionin

(1.4) atëherë H mund të marrë formën si në ekuacionin (1.6) dhe anasjelltas [1].

Duke u bazuar në ekuacionet (1.5a) dhe (1.5b) qarku për kodim për ( , )n k bllok kodin

sistematik linear mund të implementohet shumë lehtë.

7

Qarku për kodim është treguar në figurën 1.3.

uHyrja

Regjistri i mesazhit

Regjistri i paritetit

Në kanal

Në kanal

0u 1u 2u ...

...

... ... ...

1ku

10p00p 01p 11p1,0kp 1,1kp

1,

1

k

n k

p

1,

1n k

p

0,

1n k

p

0v 1v 1n kv

Figurë 1.3: Qarku për kodim për (n,k) bllok kodin sistematik linear

Kompleksiteti i qarkut për kodim është linearisht proporcional me gjatësinë e bllokut [4].

2. Sindroma dhe detektimi i gabimeve

Le të jetë 0 1 1( , ,..., )nv v v v fjalëkodi i transmetuar nëpër kanal me zhurmë, si dhe le

të jetë 0 1 1( , ,..., )nr r r r vektori në dalje të kanalit me strukturën e paraqitur në figurën më

poshtë:

r=v+ev

e

Figurë 2.1: Vektori në dalje të kanalit

Vektori 0 1 1( , ,..., )ne e e e = r + v paraqet vektorin e gabimit ose modelin e gabimit (error

pattern) ashtu që duhet të vlej:

1;

0;

i i

i

i i

nëse r ve

nëse r v

Pas pranimit të vektorit r , dekoderi duhet së pari të përcaktoj nëse vektori r përmban

gabime të transmetimit. Nëse prezenca e gabimeve është detektuar, dekoderi do të marrë

masa për të lokalizuar gabimet.

8

Duhet korrigjuar gabimet ose duhet bërë kërkesë për ritransmetim të fjalëkodeve v . Pasi që

vektori r është pranuar, dekoderi llogarit në vijim (n - k)-elementet [2]:

0 1 1( , ,..., )T

n ks s s s r H (2.1)

Vektori s paraqet sindromën e vektorit r . Në qoftë se dhe vetëm në qoftë se r është fjalëkod

dhe marrësi pranon r si fjalëkod të transmetuar atëherë sindroma është: s = 0 .

Në qoftë se dhe vetëm në qoftë se r nuk është fjalëkod dhe prezenca e gabimeve është

detektuar atëherë sindroma është: s 0 .

Kur modeli i gabimit e është identik me një fjalëkod jo zero (p.sh r përmban gabime dhe T s r H 0 ), modelet e gabimit për këtë lloj janë quajtur modelet e gabimit të pa detektuar

(undetectable error patterns). Meqenëse ekzistojnë 2 1k fjalëkode jo zero atëherë

ekzistojnë 2 1k gabime të pa detektuar. Bazuar në ekuacionin T

n k

H I P dhe T s r H

shifrat e sindromës janë si më poshtë:

0 0 00 1 10 1 1,0

1 1 01 1 11 1 1,1

1 1 0, 1 1 1, 1 1 1, 1

...

...

...

n k n k n k

n k n k n k

n k n k n k n k n k n k n k n k

s r r p r p r p

s r r p r p r p

s r r p r p r p

(2.2)

Sindroma s është shumë vektoriale e shifrave të paritetit të pranuara 0 1 1( , ,..., )n kr r r dhe

shifrave të kontrollit të paritetit të ri llogaritur nga shifrat e marra të informacionit

1 1( , ,..., )n k n k nr r r .

Në figurën e mëposhtme kemi paraqitur qarkun e përgjithshëm të sindromës:

0r 1r 2r ...

... ... ...

2nr

10p00p 01p 11p1,0kp 1,1kp

1,

1

k

n k

p

1,

1n k

p

0,

1n k

p

0s 1s 1n ks

1nr

r

...

0r n kr 1n kr 1nr 1r n kr 1n kr 1nr 1n kr n kr 1n kr 1nr

Figurë 2.2: Qarku i sindromës për (n,k) bllok kodin sistematik linear

9

0 1 2 0 1 2 3 4 5 6 0 1 2 3 4 5 6

1 0 0

0 1 0

0 0 1

( , , ) ( , , , , , , ) ( ) 1 1 0

0 1 1

1 1 1

1 0 1

T Ts s s r r r r r r r r r r r r r r

s r H H

Shembull ilustrues 4: Le të jetë dhënë matrica e kontrollit të paritetit H si dhe le të jetë

dhënë vektori i pranuar 0 1 2 3 4 5 6( , , , , , , )r r r r r r rr . Sindroma për këtë rast do të jetë:

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

H

Zgjidhje:

Shifrat e sindromës janë:

Pas kryerjes së veprimeve matematikore të shumëzimit marrim shifrat e mëposhtme:

0 0 3 5 6

1 1 3 4 5

2 2 4 5 6

s r r r r

s r r r r

s r r r r

Meqenëse r është shumë vektoriale e vektorëve v dhe e nga ekuacioni (2.1) rrjedhë:

( )T T T T s r H v +e H v H e H

Pasi që T v H 0 për rrjedhojë, ne fitojmë lidhjen e mëposhtme ndërmjet sindromës dhe

modelit të gabimit: T s e H (2.3)

Nëse matrica e kontrollit të paritetit H është e shprehur në formën sistematike si në

ekuacionin (1.6) duke shumëzuar Te H do të fitohen ekuacionet lineare në mes të shifrave të

sindromës dhe shifrave të modelit të gabimit (n-k ekuacione dhe n ndryshore).

0 0 00 1 10 1 1,0

1 1 01 1 11 1 1,1

1 1 0, 1 1 1, 1 1 1, 1

...

...

...

n k n k n k

n k n k n k

n k n k n k n k n k n k n k n k

s e e p e p e p

s e e p e p e p

s e e p e p e p

(2.4)

10

Shifrat e sindromës janë kombinim linear i shifrave të modelit të gabimit, shifrat e sindromës

mund të përdoren për korrigjim të gabimeve sepse n-k ekuacionet lineare në ekuacionet (2.4)

nuk japin një zgjidhje unike, por japin 2k zgjidhje.

Ekzistojnë 2k gabime që rezultojnë në të njëjtën sindromë dhe gabimi i vërtetë është një prej

tyre. Dekoderi duhet të përcaktojë vektorin e vërtetë të gabimit nga bashkësia e 2k

kombinimeve.

Për të minimizuar gjasën e dekodimit të gabimeve, gabimi i mundshëm që kënaq ekuacionet

(2.3) është zgjedhur si vektor i vërtetë i gabimit [3].

Shembull ilustrues 5: Le të konsiderohet kodi (7,4) me matricën e kontrollit të paritetit H si

në shembull ilustrues 4, si le të janë dhënë fjalëkodi i transmetuar (1001011)v dhe

(1001001)r vektori i pranuar.

Zgjidhje:

Së pari llogarisim sindromën:

1 0 0

0 1 0

0 0 1

(1 0 0 1 0 0 1) (1 1 1)1 1 0

0 1 1

1 1 1

1 0 1

T

s r H

Marrësi tenton të përcaktojë vektorin e vërtetë të gabimit 0 1 2 3 4 5 6( , , , , , , )e e e e e e ee duke u

bazuar në sindromë:

0 3 5 6

1 3 4 5

2 4 5 6

1

1

1

e e e e

e e e e

e e e e

Ku ekzistojnë 42 16 gabime që kënaqin ekuacionet e mësipërme. Vektori i gabimit

(1001001) (1001011) (0 0 0 0 0 1 0) e = r + v ka numrin më të vogël të komponentëve

jo zero. Nëse kanali është BSC (Binary Symmetric Channel), e është vektori i gabimit me

gjasë më të madhe që i kënaq ekuacionet e mësipërme. [2] Duke marrë e si vektorin e vërtetë

të gabimit marrësi dekodon vektorin e pranuar r në fjalëkodin si më poshtë:

* (1 0 0 1 0 0 1)+(0 0 0 0 0 1 0)=(1 0 0 1 0 1 1)v = r + e

Ku *v është fjalëkodi aktual i transmetuar.

11

3. Distanca minimale e një bllok kodi

Le të jetë vektori 0 1 1( , ,..., )nv v v v

me n-elemente binare, pesha e Hamingut (ose thjesht

pesha) e v e shënuar me ( )w v është definuar si numri i komponentëve jo zero të v .

Le të jenë vektorët v dhe w me n-elemente binare, distanca e Hamingut në mes v dhe w e

shënuar me ( , )d v w është definuar si numri i pozicioneve ku këto dy vektorë dallojnë njëri

nga tjetri.

Distanca e Hamingut është një funksion metrik që kënaq inekuacionin e trekëndëshit:

( , ) ( , ) ( , )d d d v w w x v x (3.1)

Nga definicioni i distancës së Hamingut dhe definicioni i modulit 2 - “ose ekskluzive” shton

se distanca e Hamingut në mes dy n-elementeve v dhe w është e barabartë me peshën

Hamingut të shumës së v dhe w që është:

( ) ( )d wv,w v + w (3.2)

Shembull ilustrues 6:

Pesha e Hamingut e (1 0 0 0 1 1 0)v është ( ) 3w v .

Distanca Hamingut në mes =(1 0 0 1 0 1 1)v dhe =(0 1 0 0 0 1 1)w është ( ) 3d v,w .

Distanca e Hamingut në mes =(1 0 0 1 0 1 1)v dhe =(1 1 1 0 0 1 0)w është ( , ) 4d v w

ndërsa pesha e Hamingut e (0 1 1 1 0 0 1)v + w është ( ) 4w v + w .

Duke pasur parasysh, një bllok kod C, distanca minimale e bllok kodit C është shënuar me

mind dhe definuar si:

min min{ ( ) : ; }d d C v,w v,w v w (3.3)

Nëse C është bllok kod linear, shuma e dy vektorëve gjithashtu është vektor, nga ekuacioni

(3.1) distanca e Hamingut në mes dy vektorëve në C është e barabartë me peshën Hamingut

të një vektori të tretë në C.

min

min

min{ ( ) : , ; }

min{ ( ) : ; }

d w C

w C

w

v + w v w v w

x x x 0 (3.4)

12

Parametri min min{ ( ) : ; }w w C x x x 0 është quajtur pesha minimale e kodit linear C.

Distanca minimale e një bllok kodi linear është e barabartë me peshën minimale të

fjalëkodeve jo zero.

Le të jetë C (n,k) bllok kod linear me matricë të kontrollit të paritetit H. Për çdo kod vektor

me peshë të Hammingut l, ekzistojnë l shtylla të matricës H të tillë që shuma vektoriale e l

shtyllave është e barabartë me vektorin zero.

Në anën tjetër, në qoftë se ekzistojnë l shtylla të matricës H të tillë që shuma vektoriale është

e barabartë me vektorin zero, ekziston kod vektori me peshë të Hamingut l në C.

Nëse shprehim matricën e kontrollit të paritetit H në formën e mëposhtme:

0 1 1[ , ,..., ]nH h h h

Ku ih paraqet rreshtin e i-të të matricës H. Le të jetë 0 1 1( , ,..., )nv v v v

fjalëkodi me peshë l

dhe me l komponente jo zero.

Le të jenë 1 2, ,...,i i ilv v v

l komponente jo zero të v , ku 1 20 ... 1li i i n atëherë

1 2 ... 1i i ilv v v .

Pasi që v është fjalëkod ne duhet të kemi:

0 0 1 1 1 1

1 1 2 2

1 2

...

...

...

T

n n

i i i i il il

i i il

v v v

v v v

0 v H

h h h

h h h

h h h

Tani le të supozojmë që 1 2 ...i i il h h h janë l shtyllat e matricës H e tillë që:

1 2 ...i i il h h h 0

Le të jenë 0 1 1( , ,..., )nx x x x me l komponente jo zero 1 2, ,...,i i ilx x x e tillë që:

0 0 1 1 1 1

1 1 2 2

1 2

...

...

...

T

n n

i i i i il il

i i il

x x x

x x x

v H h h h

h h h

h h h

(3.5)

Kjo rrjedhë nga ekuacioni (3.5) që T x H 0 , kështu që x është fjalëkod me peshë l në C.

13

Në qoftë se d-1 ose më pak shtylla të matricës H të shtuar me 0, kodi ka peshë minimale të

paktën në d. Pesha minimale e C është e barabartë me numrin më të vogël të shtyllave të

matricës H shuma e të cilave është 0.

4. Aftësia e detektimit të gabimeve dhe korrigjimit të gabimeve për bllok kodet

Nëse distanca minimale e një bllok kodi C është mind , çdo dy vektorë të veçantë të C

ndryshojnë të paktën mind pozita. Bllok kodi me distancë minimale mind është i aftë për

detektimin e të gjithë gabimeve të min 1d ose më pak gabime. Megjithatë, ajo nuk mund të

zbulojë të gjithë gabimet të mind gabimeve sepse nuk ekziston të paktën çifti i kod vektorëve

që ndryshojnë mind pozita dhe ka një gabim i mind gabimeve që do të bartin një të tillë në

tjetrën. Aftësia për detektimin e gabimeve të rastit për një bllok kod me distancë minimale

mind është min 1d .

Një (n, k) kod linear është i aftë për detektimin e 2 2n k gabimeve me gjatësi n. Në mesin e

2 1n gabimeve të mundshme jo zero, ka 2 1k gabime që janë identike me 2 1k fjalëkodike

jo zero.

Nëse ndonjë nga këto 2 1k gabime ndodhë, ai do të ndryshoj fjalëkodin v të transmetuar në

një tjetër fjalëkod w , kështu që w do të pranohet dhe sindroma e saj është zero. [1] Kështu që

ekzistojnë 2 1k gabime të pa detektuar.

Nëse një gabim nuk është identik me një fjalëkod jo zero, vektori i pranuar r nuk do të jetë

fjalëkod dhe sindroma nuk do të jetë zero. Këto 2 2n k gabime, janë gabime të

detektueshme.

Le të jenë lA numri i kod vektorëve me peshë i në C, numrat 0 1, ,..., nA A A quhen peshat e

shpërndara (distribuara). Tani do të mundohemi të përcaktojmë probabilitetin e gabimit. Le të

jetë ( )uP e probabiliteti i gabimit të pa detektuar.

Pasi që gabimi ndodh vetëm kur gabimi është identik me një kod vektor jo zero të C [4].

1

( ) (1 )n

i n i

u i

i

P e A p p

(4.1)

Shprehja p paraqet probabilitetin tranzitor të kanalit BSC (Binary Symmetric Channel), nëse

distanca minimale e kodit C është mind atëherë 1A deri në min 1dA janë zero.

Duke supozuar se një kod bllok C me distancë minimale mind është përdorur për korrigjim të

gabimeve të rastit, distanca minimale mind është ose tek ose çift.

14

Le të jetë t një numër i plotë pozitiv i tillë që min2 1 2 2t d t . Ne tani mund të tregojmë

se një bllok kod është i aftë të korrigjoj deri në t gabime [3]. Bllok kodi me distancë

minimale mind garanton korrigjimin e të gjithë gabimeve në min( 1) 2t d gabime ose më

pak gabime. Ku min( 1) 2t d tregon numrin më të madh, jo më të madh se min( 1) 2t d .

Zakonisht parametri t paraqet aftësinë e korrigjimit të gabimeve të rastit të kodit C.

Shembull ilustrues 7: Duke konsideruar (7,4) bllok kodin të dhënë në tabelën 1, peshat e

shpërndara (distribuara) për këtë kod janë: 0 1 2 3 4 5 61, 0, 7, 0A A A A A A A dhe

7 1A . Probabiliteti i gabimit të pa detektuar është:

7

7 3 4 4 3 7

1

( ) (1 ) 7 (1 ) 7 (1 )i i

u i

i

P e A p p p p p p p

Nëse 210p , probabiliteti përafërsisht do të jetë:

6( ) 7 10uP e , me fjalë të tjera nëse 1

milion fjalëkode janë transmetuar në një kanal BSC me 210p d.m.th se mesatarisht 7

fjalëkode me gabime kanë kaluar përmes dekoderit pa u detektuar.

Një (n, k) bllok kod linear, është në gjendje për të korrigjuar të gjitha gabimet e modelit me

peshë t ose më pak, është përdorur për transmetim në një kanal BSC me probabilitetit të

gabimit p , probabiliteti i gabimit i sistemit të koduar është dhënë me shprehjen:

1

( ) (1 )n

i n i

u

i t

nP e p p

i

(4.2)

Në praktikë, ku gabimet janë korrigjuar pjesërisht, dhe pjesërisht janë detektuar, këto kode

shfrytëzohen në mënyrë të tillë që gabimet e modelit me peshë janë korrigjuar dhe

gabimet e modelit me peshë l janë detektuar [2].

Nëse gabimi i modelit është me peshë ose më pak, sistemi do të korrigjojë atë, dhe nëse

gabimi i modelit është me peshë më e madhe se , por më pak se 1l sistemi do të detektoj

atë. Kjo është e mundur në qoftë se min 1d l .

5. Probabiliteti i gabimit të pa detektuar për kodet lineare për kanalin binar simetrik

(BSC)

Le të jenë 0 1{ , ,..., }nA A A peshat e shpërndara për një (n,k) bllok kod linear C. Le të

jenë 0 1{ , ,..., }nB B B peshat e shpërndara për kodin e dyfishtë (dual) dC .

15

Tani do të paraqesim këto dy shpërndarje të peshave në formë të polinomit si më poshtë:

0 1

0 1

( ) ...,

( ) ...

n

n

n

n

A z A A z A z

B z B B z B z

(5.1)

Atëherë ( )A z dhe ( )B z janë të lidhura me identitetin e mëposhtëm:

( ) 1( ) 2 (1 )

1

n k n zA z z B

z

(5.2)

Ky identitet është i njohur si identiteti i MacWilliamsit. Polinomet ( )A z dhe ( )B z quhen

peshat e regjistruesit (enumerators) për (n,k) kodin linear C dhe për kodin e dyfishtë (dual)

dC .

Duke përdorur identitetin MacWilliamsit, ne mund të llogarisim probabilitetin e gabimit të

pa detektuar për një (n, k) kod linear nga pesha e shpërndarjes së saj të dyfishtë. Nga

ekuacioni (4.1) kemi:

1 1

( ) (1 ) (1 )1

in n

i n i n

u i i

i i

pP e A p p p A

p

(5.3)

Duke zëvendësuar shprehjen (1 )z p p në ( )A z të ekuacionit (5.1) si dhe duke përdorur

faktin që 0 1A fitojmë:

1

11 1

in

i

i

p pA A

p p

(5.4)

Duke kombinuar ekuacion (5.3) dhe (5.4), ne kemi fituar shprehjen e mëposhtme për

probabilitetin e gabimit të pa detektuar:

1( ) (1 ) 1

1

n

uP e p Ap

(5.5)

Gjithashtu nga ekuacioni (5.5) dhe identiteti i MacWilliamsit (5.2) kemi fituar shprehjen

përfundimtare për probabilitetin e gabimit të pa detektuar [2]:

( )( ) 2 (1 2 ) (1 )n k n

uP e B p p ku 0

(1 2 ) (1 2 )n

i

i

i

B p B p

(5.6)

Për këtë arsye, ekzistojnë dy mënyra për llogaritjen e probabilitetin e gabimit të pa detektuar

për një kod linear, shpesh një mënyrë është më e lehtë se sa të tjera. Nëse n-k është më i vogël

se k është shumë më lehtë për të llogaritur ( )uP e nga ekuacioni (5.6) në të kundërtën është

më i lehtë për t'u përdorur ekuacioni (5.5).

16

Shembull ilustrues 7: Duke konsideruar (7,4) bllok kodin të dhënë në tabelën 1. Të llogaritet

probabiliteti i gabimit të pa detektuar për (7,4) bllok kodin të dhënë në tabelën 1.

Kodi i dyfishtë është gjeneruar nga matrica e kontrollit të paritetit H.

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

H

Duke marrë kombinimet lineare të rreshtave të matricës H, kemi fituar tetë vektorët e

mëposhtëm të kodit të dyfishtë:

(0 0 0 0 0 0 0)

(1 0 0 1 0 1 1)

(0 1 0 1 1 1 0)

(1 1 0 0 1 0 1)

(0 0 1 0 1 1 1)

(1 0 1 1 1 0 0)

(0 1 1 1 0 0 1)

(1 1 1 0 0 1 0)

Kështu, pesha e regjistruesit për kodin dyfishtë është 4( ) 1 7B z z . Duke përdorur

ekuacionin (5.6) fitojmë probabilitetin e gabimit të pa detektuar:

( ) 3 4 7( ) 2 (1 2 ) (1 ) 2 1 7(1 2 ) (1 )n k n

uP e B p p p p

Për n,k dhe n-k numra të mëdhenj llogaritjet bëhen praktikisht të pamundura. Me përjashtim

të disa kodeve lineare të shkurtra dhe disa klasa të vogla të kodeve lineare, peshat e

shpërndara për shumë kode lineare të njohura ende janë të panjohura. Si pasojë, është shumë

e vështirë për të llogaritur probabilitetin e gabimit të pa detektuar të këtyre kodeve.

Është mjaft e lehtë për të nxjerrë kufirin e sipërm (në probabilitetin mesatar) të një gabimi të

pa detektuar për ansamblin e gjithë (n, k) kodeve sistematike lineare [4].

( ) ( )

1

2 (1 ) 2 1 (1 )n

n k i n i n k n

u

i

nP e p p p

i

Përderisa 1 (1 ) 1np është shumë e qartë se ( )2 n k

uP e . Rezultatet thonë se

ekzistojnë (n, k) kode lineare me probabilitet të gabimit të pa detektuar të kufizuar nga lartë

me ( )2 n k

. Vetëm disa klasa të vogla të kodeve lineare janë dëshmuar të kenë uP e që

kënaqin kufirin e sipërm( )2 n k

.

17

6. Shtojca në MATLAB

MATLAB skripta për gjenerimin e fjalëkodeve nga matrica gjeneruese G për bllok kodin

linear me gjatësi k=4 dhe n=7 të dhënë në tabelën 1 është [5] [6]:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për gjenerimin e fjalëkodeve nga matrica gjeneruese

% G për bllok kodin linear me gjatësi k=4 dhe n=7

% Autor: Taulant ZEKA

%===================================================================

clear all;

close all;

clc;

% Të dhënat për matricën gjeneruese G

G=[1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 1 1 0 0 1 0;1 0 1 0 0 0 1];

[n,k] = size(transpose(G));

for i = 1:2^k

for j = k:-1:1

if rem(i-1,2^(-j+k+1))>=2^(-j+k)

u(i,j)=1;

else

u(i,j)=0;

end

end

end

disp('Mesazhi:')

u;

u=fliplr(u)

disp('Fjalëkodi')

v = rem(u*G,2)

Rezultati nga MATLAB skripta:

Mesazhi:

u =

0 0 0 0

1 0 0 0

0 1 0 0

1 1 0 0

0 0 1 0

1 0 1 0

0 1 1 0

1 1 1 0

0 0 0 1

1 0 0 1

18

0 1 0 1

1 1 0 1

0 0 1 1

1 0 1 1

0 1 1 1

1 1 1 1

Fjalëkodi

v =

0 0 0 0 0 0 0

1 1 0 1 0 0 0

0 1 1 0 1 0 0

1 0 1 1 1 0 0

1 1 1 0 0 1 0

0 0 1 1 0 1 0

1 0 0 0 1 1 0

0 1 0 1 1 1 0

1 0 1 0 0 0 1

0 1 1 1 0 0 1

1 1 0 0 1 0 1

0 0 0 1 1 0 1

0 1 0 0 0 1 1

1 0 0 1 0 1 1

0 0 1 0 1 1 1

1 1 1 1 1 1 1

Shembull ilustrues 1: MATLAB skripta për gjenerimin e fjalëkodit është:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për gjenerimin e fjalëkodit

% Autor: Taulant ZEKA

%===================================================================

n = 7; k = 4; % (7,4) Bllok Kodi

% Matrica gjeneruese për (7,4) bllok kodin

G = [1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 1 1 0 0 1 0;1 0 1 0 0 0 1];

u = [1 1 0 1]; % Mesazhi që duhet të kodohet

% Procesi i kodimit

v = encode(u,n,k,'linear/fmt',G) % Fjalëkodi

19

Rezultati nga MATLAB skripta:

v =

0 0 0 1 1 0 1

Shembull ilustrues 2: MATLAB skripta për shembullin ilustrues 2 është:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për shembullin ilustrues 2:

% Autor: Taulant ZEKA

%===================================================================

n = 7; k = 4; % (7,4) Bllok Kodi

% Matrica gjeneruese për (7,4) bllok kodin

G = [1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 1 1 0 0 1 0;1 0 1 0 0 0 1];

u = [1 0 1 1]; % Mesazhi që duhet të kodohet

% Procesi i kodimit

v=encode(u,n,k,'linear/fmt',G) % Fjalëkodi

Rezultati nga MATLAB skripta:

v =

1 0 0 1 0 1 1

Shembull ilustrues 3: MATLAB skripta për gjenerimin e matricës së kontrollit të paritetit H

nga matrica gjeneruese G është:

%=============================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për gjenerimin e matricës së kontrollit të

% paritetit H nga matrica gjeneruese G

% Autor: Taulant ZEKA

%=============================================================

% Matrica gjeneruese për (7,4) bllok kodin

G = [1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 1 1 0 0 1 0;1 0 1 0 0 0 1];

% Matrica e kontrollit të paritetit

H = gen2par(G)

20

Rezultati nga MATLAB skripta:

H =

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

Ose gjenerimi i matricës gjeneruese G nga matrica e kontrollit të paritetit H:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për matrica për gjenerimin e matricës gjeneruese G

% nga matrica e kontrollit të paritetit H

% Autor: Taulant ZEKA

%===================================================================

% Matrica e kontrollit të paritetit

H = [1 0 0 1 0 1 1;0 1 0 1 1 1 0;0 0 1 0 1 1 1];

% Matrica gjeneruese për(7,4) bllok kodin

G = gen2par(H)

Rezultati nga MATLAB skripta:

G =

1 1 0 1 0 0 0

0 1 1 0 1 0 0

1 1 1 0 0 1 0

1 0 1 0 0 0 1

Shembull ilustrues 3: MATLAB skripta për testimin e ndërtimit të matricës G dhe H është:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për llogaritjen e matricës G dhe H

% Autor: Taulant ZEKA

%===================================================================

n = 7;

k = 4;

p = 2;

In = eye(n); % Matrica e identitetit

Ik = eye(k);

Ink = eye(n-k);

P = [1 1 0;0 1 1;1 1 1;1 0 1] % Matrica e paritetit

G = [P Ik];

H = mod([Ink P'],p)

21

Test=mod(G*H',p) % Testimi i ndërtimit të matricës G dhe H

Rezultati nga MATLAB skripta:

P =

1 1 0

0 1 1

1 1 1

1 0 1

H =

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

Test =

0 0 0

0 0 0

0 0 0

0 0 0

Shembull ilustrues 5: MATLAB skripta për llogaritjen e sindromës, detektimin dhe

korrigjimin e gabimeve është:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për llogaritjen e sindromës, detektimin dhe

% korrigjimin e gabimeve

% Autor: Taulant ZEKA

%===================================================================

clear all;

clc;

n = 7;

k = 4;

p = 2;

% Matrica gjeneruese për(7,4) bllok kodin

G = [1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 1 1 0 0 1 0;1 0 1 0 0 0 1];

H = gen2par(G) % Matrica e kontrollit të paritetit

t = syndtable(H); % Tabela e sindromës

r = [1 0 0 1 0 0 1] % Vektori i pranuar.

s = rem(r * H',p) % Sindroma

s_de = bi2de(s,'left-msb'); % Konvertimi në numër decimal.

22

disp(['Sindroma = ',num2str(s_de),...

' (Në numër decimal), ',num2str(s),' (Në numër binar)'])

e = t(1+s_de,:) % Vektori i gabimit

v = rem(e+r,2) % Fjalëkodi aktual i transmetuar v*=v

Rezultati nga MATLAB skripta:

H =

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

r =

1 0 0 1 0 0 1

s =

1 1 1

Sindroma = 7 (Në numër decimal), 1 1 1 (Në numër binar)

e =

0 0 0 0 0 1 0

v =

1 0 0 1 0 1 1

Shembull ilustrues 6: MATLAB skripta për llogaritjen e peshës dhe distancës së Hamingut

është:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për llogaritjen e peshës dhe distancës së Hamingut

% Autor: Taulant ZEKA

%===================================================================

clear all;

close all;

clc;

v = [1 0 0 0 1 1 0];

disp ('Pesha e Hamingut është 3')

p = gfweight(v,'gen')

23

v = [1 0 0 1 0 1 1]; % Vektori v

w = [0 1 0 0 0 1 1]; % Vektori w

mb = rem(v+w,2); % Mbledhja e vektorëve v+w

disp ('Distanca e Hamingut është 3')

d = gfweight(mb,'gen')

v = [1 0 0 1 0 1 1]; % Vektori v

w = [1 1 1 0 0 1 0]; % Vektori w

mb = rem(v+w,2); % Mbledhja e vektorëve v+w

disp ('Distanca e Hamingut është 4')

d = gfweight(mb,'gen')

disp ('Pesha e Hamingut është 4')

p = gfweight(mb,'gen')

Rezultati nga MATLAB skripta:

Pesha e Hamingut është 3

p =

3

Distanca e Hamingut është 3

d =

3

Distanca e Hamingut është 4

d =

4

Pesha e Hamingut është 4

p =

4

24

Shembull ilustrues 8: MATLAB skripta për implementimin e bllok kodit linear (6,3) me

matricë gjeneruese G = [1 0 0 0 1 1; 0 1 0 1 0 1; 0 0 1 1 1 0] është:

Metoda e parë:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për implementimin e bllok kodit linear (6,3) me

% matricë gjeneruese G

% Autor: Taulant ZEKA

%===================================================================

clc;

clear all;

close all;

% Matrica gjeneruese G

G=input('Shkruaj matricën gjeneruese: ')

disp ('Rendi i bllok kodit linear për matricën gjeneruese të dhënë

është:')

[n,k] = size(transpose(G))

for i = 1:2^k

for j = k:-1:1

if rem(i-1,2^(-j+k+1))>=2^(-j+k)

u(i,j)=1;

else

u(i,j)=0;

end

end

end

disp('Bllok mesazhi:')

u;

u=fliplr(u)

disp('Fjalëkodet e mundshme janë:')

v = rem(u*G,2)

disp('Distanca minimale e Hamingut për bllok kodin e dhënë është:')

d = min(sum((v(2:2^k,:))'))

% Fjalëkodi

r = input('Shkruaj fjalëkodin e pranuar: ')

P = [G(:,n-k+1:n)];

disp('Matrica e kontrollit të paritetit:')

H = [transpose(P),eye(n-k)]

Ht = transpose(H);

disp('Sindroma e fjalëkodit të dhënë është:')

s = rem(r*Ht,2)

s_de = bi2de(s,'left-msb'); % Konvertimi në numër decimal.

disp(['',num2str(s_de),...

' (Në numër decimal), ' ,num2str(s),' (Në numër binar)'])

fprintf('\nGabimi është në bitin:')

for b = 1:1:size(Ht)

if(Ht(b,1:n-k)==s)

r(b) = 1-r(b);

break;

end

end

fprintf('\n')

b

25

disp('Fjalëkodi i korrigjuar është:')

r

Rezultati nga MATLAB skripta:

Shkruaj matricën gjeneruese: [1 0 0 0 1 1; 0 1 0 1 0 1; 0 0 1 1 1 0]

G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

Rendi i bllok kodit linear për matricën gjeneruese të dhënë është:

n =

6

k =

3

Bllok mesazhi:

u =

0 0 0

1 0 0

0 1 0

1 1 0

0 0 1

1 0 1

0 1 1

1 1 1

Fjalëkodet e mundshme janë:

v =

0 0 0 0 0 0

1 0 0 0 1 1

0 1 0 1 0 1

1 1 0 1 1 0

0 0 1 1 1 0

1 0 1 1 0 1

0 1 1 0 1 1

1 1 1 0 0 0

Distanca minimale e Hamingut për bllok kodin e dhënë është:

d =

3

26

Shkruaj fjalëkodin e pranuar: [0 1 1 1 0 1]

r =

0 1 1 1 0 1

Matrica e kontrollit të paritetit:

H =

0 1 1 1 0 0

1 0 1 0 1 0

1 1 0 0 0 1

Sindroma e fjalëkodit të dhënë është:

s =

1 1 0

6 (Në numër decimal), 1 1 0 (Në numër binar)

Gabimi është në bitin:

b =

3

Fjalëkodi i korrigjuar është:

r =

0 1 0 1 0 1

Shembull ilustrues 9: MATLAB skripta për implementimin e bllok kodit linear (5,2) me

matricë gjeneruese G = [1 0 1 0 1; 0 1 0 1 1] është:

Metoda e parë:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për implementimin e bllok kodit linear (5,2) me

% matricë gjeneruese G:

% Autor: Taulant ZEKA

%===================================================================

clc;

clear all;

close all;

% Matrica gjeneruese G

G=input('Shkruaj matricën gjeneruese: ')

disp ('Rendi i bllok kodit linear për matricën gjeneruese të dhënë

është:')

27

[n,k] = size(transpose(G))

for i = 1:2^k

for j = k:-1:1

if rem(i-1,2^(-j+k+1))>=2^(-j+k)

u(i,j)=1;

else

u(i,j)=0;

end

end

end

disp('Bllok mesazhi:')

u;

u=fliplr(u)

disp('Fjalëkodet e mundshme janë:')

v = rem(u*G,2)

disp('Distanca minimale e Hamingut për bllok kodin e dhënë është:')

d = min(sum((v(2:2^k,:))'))

% Fjalëkodi

r = input('Shkruaj fjalëkodin e pranuar: ')

P = [G(:,n-k:n)];

disp('Matrica e kontrollit të paritetit:')

H = [transpose(P),eye(n-k)]

Ht = transpose(H);

disp('Sindroma e fjalëkodit të dhënë është:')

s = rem(r*Ht,2)

s_de = bi2de(s,'left-msb'); % Konvertimi në numër decimal.

disp(['',num2str(s_de),...

' (Në numër decimal), ' ,num2str(s),' (Në numër binar)'])

fprintf('\nGabimi është në bitin:')

for b = 1:1:size(Ht)

if(Ht(b,1:n-k)==s)

r(b) = 1-r(b);

break;

end

end

fprintf('\n')

b

disp('Fjalëkodi i korrigjuar është:')

r

Rezultati nga MATLAB skripta:

Shkruaj matricën gjeneruese: [1 0 1 0 1; 0 1 0 1 1]

G =

1 0 1 0 1

0 1 0 1 1

28

Rendi i bllok kodit linear për matricën gjeneruese të dhënë është:

n =

5

k =

2

Bllok mesazhi:

u =

0 0

1 0

0 1

1 1

Fjalëkodet e mundshme janë:

v =

0 0 0 0 0

1 0 1 0 1

0 1 0 1 1

1 1 1 1 0

Distanca minimale e Hamingut për bllok kodin e dhënë është:

d =

3

Shkruaj fjalëkodin e pranuar: [0 1 0 1 0]

r =

0 1 0 1 0

Matrica e kontrollit të paritetit:

H =

1 0 1 0 0

0 1 0 1 0

1 1 0 0 1

Sindroma e fjalëkodit të dhënë është:

s =

0 0 1

1 (Në numër decimal), 0 0 1 (Në numër binar)

29

Gabimi është në bitin:

b =

5

Fjalëkodi i korrigjuar është:

r =

0 1 0 1 1

Shembull ilustrues 10: MATLAB skripta për implementimin e bllok kodit linear (6,3) me

matricë gjeneruese G = [1 0 0 0 1 1; 0 1 0 1 0 1; 0 0 1 1 1 0] është:

Metoda e dytë:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për implementimin e bllok kodit linear (6,3) me

% matricë gjeneruese G:

% Autor: Taulant ZEKA

%===================================================================

clc;

clear all;

close all;

% Matrica gjeneruese G

G=input('Shkruaj matricën gjeneruese: ')

disp ('Rendi i bllok kodit linear për matricën gjeneruese të dhënë

është:')

[n,k] = size(transpose(G))

for i = 1:2^k

for j = k:-1:1

if rem(i-1,2^(-j+k+1))>=2^(-j+k)

u(i,j)=1;

else

u(i,j)=0;

end

end

end

disp('Bllok mesazhi:')

u;

u = fliplr(u)

disp('Fjalëkodet e mundshme janë:')

v = rem(u*G,2)

disp('Distanca minimale e Hamingut për bllok kodin e dhënë është:')

d = min(sum((v(2:2^k,:))'))

% Fjalëkodi

r = input('Shkruaj fjalëkodin e pranuar: ')

H = gen2par(G) % Matrica e kontrollit të paritetit

disp('Tabela e sindromës është:')

30

t = syndtable(H) % Tabela e sindromës

Ht = transpose(H);

disp('Sindroma e fjalëkodit të dhënë është:')

s = rem(r*Ht,2)

s_de = bi2de(s,'left-msb'); % Konvertimi në numër decimal.

disp(['',num2str(s_de),...

' (Në numër decimal), ' ,num2str(s),' (Në numër binar)'])

fprintf('\nGabimi është në bitin:')

for b = 1:1:size(Ht)

if(Ht(b,1:n-k)==s)

r(b) = 1-r(b);

break;

end

end

fprintf('\n')

b

disp('Vektori i gabimit është:')

e = t(1+s_de,:) % Vektori i gabimit

disp('Fjalëkodi i korrigjuar është:')

r

Rezultati nga MATLAB skripta:

Shkruaj matricën gjeneruese: [1 0 0 0 1 1; 0 1 0 1 0 1; 0 0 1 1 1 0]

G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

Rendi i bllok kodit linear për matricën gjeneruese të dhënë është:

n =

6

k =

3

Bllok mesazhi:

u =

0 0 0

1 0 0

0 1 0

1 1 0

0 0 1

1 0 1

31

0 1 1

1 1 1

Fjalëkodet e mundshme janë:

v =

0 0 0 0 0 0

1 0 0 0 1 1

0 1 0 1 0 1

1 1 0 1 1 0

0 0 1 1 1 0

1 0 1 1 0 1

0 1 1 0 1 1

1 1 1 0 0 0

Distanca minimale e Hamingut për bllok kodin e dhënë është:

d =

3

Shkruaj fjalëkodin e pranuar: [0 1 1 1 0 1]

r =

0 1 1 1 0 1

H =

0 1 1 1 0 0

1 0 1 0 1 0

1 1 0 0 0 1

Tabela e sindromës është:

t =

0 0 0 0 0 0

0 0 0 0 0 1

0 0 0 0 1 0

1 0 0 0 0 0

0 0 0 1 0 0

0 1 0 0 0 0

0 0 1 0 0 0

1 0 0 1 0 0

Sindroma e fjalëkodit të dhënë është:

s =

1 1 0

6 (Në numër decimal), 1 1 0 (Në numër binar)

32

Gabimi është në bitin:

b =

3

Vektori i gabimit është:

e =

0 0 1 0 0 0

Fjalëkodi i korrigjuar është:

r =

0 1 0 1 0 1

Shembull ilustrues 11: MATLAB skripta për implementimin e bllok kodit linear (5,2) me

matricë gjeneruese G = [1 0 1 0 1; 0 1 0 1 1] është:

Metoda e dytë:

%===================================================================

% Teoria e informacionit dhe kodimi

% MATLAB skripta për implementimin e bllok kodit linear (5,2) me

% matricë gjeneruese G:

% Autor: Taulant ZEKA

%===================================================================

clc;

clear all;

close all;

% Matrica gjeneruese G

G=input('Shkruaj matricën gjeneruese: ')

disp ('Rendi i bllok kodit linear për matricën gjeneruese të dhënë

është:')

[n,k] = size(transpose(G))

for i = 1:2^k

for j = k:-1:1

if rem(i-1,2^(-j+k+1))>=2^(-j+k)

u(i,j)=1;

else

u(i,j)=0;

end

end

end

disp('Bllok mesazhi:')

u;

u = fliplr(u)

disp('Fjalëkodet e mundshme janë:')

v = rem(u*G,2)

disp('Distanca minimale e Hamingut për bllok kodin e dhënë është:')

33

d = min(sum((v(2:2^k,:))'))

% Fjalëkodi

r = input('Shkruaj fjalëkodin e pranuar: ')

H = gen2par(G) % Matrica e kontrollit të paritetit

disp('Tabela e sindromës është:')

t = syndtable(H) % Tabela e sindromës

Ht = transpose(H);

disp('Sindroma e fjalëkodit të dhënë është:')

s = rem(r*Ht,2)

s_de = bi2de(s,'left-msb'); % Konvertimi në numër decimal.

disp(['',num2str(s_de),...

' (Në numër decimal), ' ,num2str(s),' (Në numër binar)'])

fprintf('\nGabimi është në bitin:')

for b = 1:1:size(Ht)

if(Ht(b,1:n-k)==s)

r(b) = 1-r(b);

break;

end

end

fprintf('\n')

b

disp('Vektori i gabimit është:')

e = t(1+s_de,:) % Vektori i gabimit

disp('Fjalëkodi i korrigjuar është:')

r

Rezultati nga MATLAB skripta:

Shkruaj matricën gjeneruese: [1 0 1 0 1; 0 1 0 1 1]

G =

1 0 1 0 1

0 1 0 1 1

Rendi i bllok kodit linear për matricën gjeneruese të dhënë është:

n =

5

k =

2

34

Bllok mesazhi:

u =

0 0

1 0

0 1

1 1

Fjalëkodet e mundshme janë:

v =

0 0 0 0 0

1 0 1 0 1

0 1 0 1 1

1 1 1 1 0

Distanca minimale e Hamingut për bllok kodin e dhënë është:

d =

3

Shkruaj fjalëkodin e pranuar:[0 1 0 1 0]

r =

0 1 0 1 0

H =

1 0 1 0 0

0 1 0 1 0

1 1 0 0 1

Tabela e sindromës është:

t =

0 0 0 0 0

0 0 0 0 1

0 0 0 1 0

0 1 0 0 0

0 0 1 0 0

1 0 0 0 0

1 1 0 0 0

1 0 0 1 0

Sindroma e fjalëkodit të dhënë është:

s =

0 0 1

1 (Në numër decimal), 0 0 1 (Në numër binar)

35

Gabimi është në bitin:

b =

5

Vektori i gabimit është:

e =

0 0 0 0 1

Fjalëkodi i korrigjuar është:

r =

0 1 0 1 1

36

Përfundim

Në këtë punim seminarik kemi paraqitur konceptet bazë të bllok kodeve. Për lehtësinë

e sintezës dhe implementimin e kodeve, kemi kufizuar vëmendjen në një nënklasë të klasës

së të gjitha bllok kodeve, bllok kodet lineare.

Bllok kodet lineare janë përcaktuar dhe përshkruar në termat e matricës gjeneruese G

dhe matricës së kontrollit të paritetit H. Gjithashtu ekuacionet e kontrollit të paritetit për një

kod sistematik janë nxjerrë.

Është përshkruar koncepti i sindromës, përdorimi i sindromës për detektimin dhe

korrigjimin e gabimeve. Është përcaktuar distanca minimale e bllok kodeve dhe është treguar

aftësia për detektimin dhe korrigjimin gabimeve nga distanca minimale e bllok kodeve.

Është diskutuar për probabilitetin e gabimit të pa detektuar për kodet lineare për

kanalin binar simetrik (BSC). Është diskutuar për peshat e shpërndara për një (n,k) bllok kod

linear C si dhe peshat e shpërndara për kodin e dyfishtë (dual) .

Në shtojcë të gjithë shembujt ilustrues janë zgjedhur me pakon modeluese MATLAB

e cila na ka ofruar zgjidhje të shpejtë dhe precize. Simulimet e fundit paraqesin krahasimin e

dy kodeve në dy mënyra të kodimit, procesin komplet të kodimit dhe dekodimit për bllok

kodet lineare me matrica gjeneruese te ndryshme me precizitet shumë të lartë.

37

Referencat

[1] W.W. Peterson and E.J. Weldon, Jr. ,,Error-Correcting Codes,, 2nd ed, MIT Press,

Cambridge, 1972.

[2] F.J. MacWilliams and J.J.A. Sloane. ,,The Theory of Error-Correcting Codes,, North

Holland, Amsterdam, 1977.

[3] R.J. McEliece. ,,The Theory of Information and Coding,, 2nd ed, Press, Cambridge,

2004.

[4] Shu Lin and Daniel J. Costello. ,,Error Control Coding,, 2nd ed, Upper Saddle River,

NJ: Prentice-Hall, 2004.

[5] Yuan Jiang. ,,A Practical Guide to Error-Control Coding Using MATLAB,,

Norwood, MA: Artech House, 2006.

[6] John G. Proakis, Masoud Salehi, Gerhard Bauch ,,Contemporary Communication

Systems - using MATLAB,, Thomson Learning-Books/Cole, 2004.