Bllok Kodet Lineare
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.