Você está na página 1de 7

Universidade Federal de Santa Catarina

Centro Tecnol
ogico
Departamento de Engenharia El
etrica
EEL7416 - Introduc
ao `
a Codificac
ao

2o Trabalho Pratico
Implementacao e avaliacao do desempenho do codigo de Hamming

Aluno: Haroldo C. Garcia Neto


Professor: Danilo Silva, Ph.D.

25 de maio de 2013

Introdu
c
ao

O objetivo deste trabalho foi de implementar e avaliar o desempenho do codigo de Hamming e suas
variac
oes em um canal bin
ario simetrico (BSC). Para avaliacao utilizou-se o metodo de Monte
Carlo (metodo estatstico utilizado em simulacoes estocasticas), onde estimou-se a probabilidade
de erro na decodificac
ao, incluindo a probabilidade de falha e erro nao detectado.
Esta implementac
ao foi realizada no programa MATLAB e para isto foi necessario a criacao
de rotinas que simulassem tanto o codificador, o canal binario simetrico e o decodificador, como
tambem uma rotina para o c
alculo da probabilidadse de erro simulado e outra para teorica.
Alem disso, criou-se uma rotina principal, responsavel por simular todo o processo para alguns
par
ametros especficos, como o tamanho do bloco do codigo, a dimensao do codigo, a distancia
mnima do c
odigo e a probabilidade de troca de bit.
Por fim, para visualizac
ao e comparacao dos resultados simulados com os teoricos, estes foram
plotados de forma sobreposta buscando comparar certas diferencas entre os codigos utilizados,
aos quais foram: o C
odigo de Hamming (7, 4, 3), o Codigo de Hamming (15, 11, 3), o Codigo de
Hamming estendido (8, 4, 4) e o C
odigo de Hamming estendido e encurtado (72, 64, 4).

C
odigos de Hamming

C
odigos de Hamming s
ao um caso especial dos codigos lineares (n, k, d), onde ha algum m tal
que n = 2m 1, k = 2m m 1 e a distancia mnima (d) e 3.
Utilizando c
odigo lineares a c
odificacao pode ficar muito mais facil, e assim para codificar
uma mensagem u Fk2 basta multiplicar u por uma matriz geradora G Fkn
, ou seja, a
2
c = uG Fn2 .

(1)

Essa matriz G nada mais e que uma matriz cuja as linhas sao os vetores que formam uma base
de dimens
ao k para o c
odigo C, que e um subespaco de Fn2 .
Para realizar a decodificac
ao e calculada a sndrome
s = rH T ,

(2)

onde r e a palavra c
odigo recebida. E entao com uma tabela de sindromes T pre-calculada
atraves da s = eH T , ao qual e s
ao todos os vetores erros possveis de menor peso, que em um
decodificador de dist
ancia limitada sera menor ou igual ao raio de correcao t.
Supondo que a matriz geradora esteja na forma sistematica, isto e, G = [Ik Pknk ], entao
a matriz de verificac
ao de verificac
ao H Fknn
estara na forma H = [P T Ink ]. Sendo que
2
u aparecer
a visivelmente em c, facilitando a decodificacao, ou seja, os elementos de u sao os
primeiros k elementos em c.
Com o objetivo de melhorar o desempenho do codigo de Hamming, hao algumas tecnicas de
modificac
oes no c
odigo, como o puncionamento, o alongamento, a expurgac
ao, o aumento 1 , a
extens
ao e o encurtamanto. Porem aqui neste trabalho serao somente apresentadas e utilizadas
as duas u
ltimas tecnicas.
A extens
ao e tal que dado um c
odigo (n, k, d), este sera (n + 1, k, d0 ), onde d0 d. P ara
fazer isto pode-se acrescentar um smbolo de paridade. E como, temos que para d mpar, este
procedimento sempre produz d0 = d + 1, o codigo hamming resultante tera distancia mnima
igual `
a 4.
J
a o encurtamento e tal que dado um codigo (n, k, d), este sera (n 1, k 1, d0 ), onde d0 d.
Pode-se fazer isto retirando colunas da matriz de verificacao de paridade.
1 Melhor

traduc
ao do termo, em ingl
es, augmentation.

E por u
ltimo, h
a de saber que os calculos do limitantes da probabilidade de erro, de falha e
erro n
ao detectado s
ao dados pelas expressoes abaixo. Aos quais servirao para futura comparacao
com os resultados simulados,
Pe Pe+

n  
X
n i
,
p (1 p)ni ,
i
i=t+1

(3)

 
n
X
n i
p (1 p)ni
i
i=s+1

(4)

 
s
X
n i
,
p (1 p)ni ,
i
i=t+1

(5)

Pu Pu+ ,
e
P f Pf
em que

t = b(n1)/2c, s = d1t e p e n sao os mesmos parametros citados anteriormente.

Descri
c
ao e explica
c
ao da implementac
ao realizada

Assim como no trabalho anterior a implementacao realizada neste trabalho simulou o processo
descrito na figura 1 e ainda calculou-se os limitantes da probabilidade de erro teorica, aliadas
as probabilidades simuladas baseada na comparacao entre a mensagem enviada e a mensagem
`
decodificada, num processo iterativo que sera descrito em breve, onde a a principal diferenca
estava no codificador e decodificador utilizados.

Figura 1: Processo de codificacao, transmissao e recepcao


Primeiramente, para o codidicador criou-se a rotina c = codificador linear(u,G), onde c e a
palavra-c
odigo gerada a partir de da multiplicacao da mensagem u pela matriz geradora G. A
simulac
ao da transmiss
ao foi feita atraves do bloco Y = canalbsc(X,p), sendo X e um vetor binario
de tamanho qualquer e Y e um vetor binario de mesmo tamanho que X tal que Yi representa a
2

sada do canal quando Xi e a entrada e p a probabilidade de troca de bit. Ja para o decodificador utilizou-se a rotina [u dec, c dec, e dec, falha] = decodificador sindrome(r,t,G,H,T), onde
u dec e a mensagem decodificada, c dec e a palavra-codigo decodificada, e dec e o vetor de erro
estimado e falha e um indicativo de falha na decodificacao. Ha tambem a criacao da funcao X
ao de uma rotina do trabalho anterior, que agora ao inves
= bernoulli k(p, k), que e uma variac
de gerar um u
nico bit e gerado um vetor de comprimento k. E por u
ltimo tambem as rotinas
mais importantes [Pu, Pf, Pe] = simulador linear(p, NUMERR, G, H, T,t) e [Pu2, Pf1, Pe2] =
aveis pelo calculo das probabilidade de erro, de falha e de erro
pteorica linear(p, n, d, t), respons
n
ao detectado e de seus limitantes, respectivamente.
Para o codificador criou-se a rotina c = codificador linear(u,G), consistindo de uma u
nica
linha, que implementa (1). J
a na rotina Y = canalbsc(X,p), foi implementado um laco e uma
vari
avel aleat
oria, onde para cada bit do vetor de entrada e decido se este sera complementado ou
n
ao, ocorrendo de acordo com um evento p, que e quando o valor da variavel aleatoria contnua
com distribuic
ao uniforme for menor ou igual `a p. Na funcao [u dec, c dec, e dec, falha] =
decodificador sindrome(r,t,G,H,T) e calculada a sndrome conforme (2) e entao com a tabela de
sndrome pre-calculada estima-se um vetor de erro e se este tiver peso menor ou igual ao raio
de correc
ao do decodificador, ser
a estimada uma palavra-codigo (como o codigo esta na foma
sistem
atica e f
acil de se obter a mensagem decodificada), caso contrario, o decodificador devolve
um smbolo de falha -1.
Com estas func
oes acima, agora e possvel fazer a simulacao completa de codificacao, transmiss
ao e decodificac
ao, para estimar as probabilidades de erro de decodificacao (comprendendo
as probabilidade de falha e a probabilidade de erro nao detectado). Como pode ser observado
este processo foi implementado na rotina [Pu, Pf, Pe] = simulador linear(p, NUMERR, G, H,
T,t). Nesta, basicamente, e primeiro gerado uma mensagem aleatoria de comprimento k com
distrubuic
ao equiprov
avel fazendo u = bernoulli k(0.5, k), onde u e a mensagem original a ser
enviada. Logo esta mensagem vai para o codificador (descrito acima) e entao o codigo gerado e
transmito pelo canal BSC (tambem descrito acima). Depois a palavra recebida, que e a sada
do canal, vai para o decodificador e este retorna uma mensagem estimada ou o smbolo de falha
-1. E finalmente se faz a comparac
ao entre a mensagem enviada e a recebida, ao qual se elas
forem diferentes ou houve uma falha, entao e considerado que ocorreu um erro de decodificacao e
assim o processo contnua ate que haja NUMERR de erros (que aqui foi 30 para todos os codigos
simulados). Ap
os tudo isso, basta dividir o n
umero de erros pelo n
umero total de iteracoes, que
se tem a estimativa da probabilidade de erro Pe . Como colocou-se um contador para enumerar
o n
umero de falha, para calcular estimativa da probabilida de falha Pf dividi-se este n
umero
pelo n
umero total de iterac
oes. E por fim, para calcular a probabilidade de erro nao detectado
subtrai-se Pf de Pe .
Na rotina [Pu, Pf, Pe] = simulador linear(p, NUMERR, G, H, T,t) e criada uma mensagem
aleat
oria de Bernoulli com destribuic
ao equiprovavel. Logo esta mensagem passa pelo canal BSC
A func
ao [Pu2, Pf1, Pe2] = pteorica linear(p, n, d, t), simplemente implementa as expressoes
(3), (4) e (5), onde para os c
odigos Hamming tem-se t = 1 e d igual `a 3 ou 4, depedendo do
c
odigo utilizado.
Por u
ltimo, a gerac
ao das matrizes de verificacao de paridade e das matrizes geradoras e
feita na rotina rotinaprincipal trabalho 2. Para o codigo (7, 4, 3), entrou-se com uma matriz de
verificac
ao de paridade, e como esta esatva na forma sistematica obteve-se facilmente a sua matriz
geradora. J
a para o c
odigo (8, 4, 4), simplemente, estendeu-se o codigo anterior acrescentando 1
somente nas colunas de peso par da matriz de verificacao. Assim, tornou-se facil deixar a matriz
resultante na forma sistem
atica. No codigo (15, 11, 3), gerou-se uma matriz de verificacao
paridade, cuja as colunas eram vetores diferentes e nao nulos de comprimento 4, tendo-se ainda a
preocupac
ao de j
a deix
a-la na forma sistematica. E para o codigo (72,64, 4), ao inves de encurtar

um c
odigo de Hamming (127, 120, 3), ja foi gerado uma matriz de verificacao de paridade com 71
colunas (que seria o mesmo procedimento de encurtamento) , resultando em um codigo (71,64, 4)
e ap
os isto estendeu-se para o c
odigo desejado, utilizando a mesma tecnica da criacao do codigo
(8, 4, 4).

Resultados observados e an
alise

Ap
os a simulac
ao da rotina principal, os dados foram coletados e plotados nas figuras 2, 3 e
4, com p variando entre 28 e 21 , para os codigos utilizados. Com isso observa-se que com
o aumento de p, h
a um aumento das probabilidades de erro, independentemente do codigo de
Hamming utilizado.
Como se pode observar, no gr
afico da figura 2, as probabilidades erro foram muito parecidas
para os c
odigos (7, 4, 3) e (8, 4, 4). Porem, para o segundo a probabilidade de erro nao detectado
foi menor, o que est
a justificado pelo aumento da distancia mnima do codigo. Outro fato, e que
Pe e Pu , para o primeiro c
odigo, se sobrepuseram, ja que a probabilidade de falha foi praticamente
nula.
No gr
afico da figura 3, percebe-se que com o aumento da taxa do codigo
R=

log2 |C|
n

aumentam-se tambem as probabilidades de erro nao detectado, o que esta de acordo com o
esperado, pois com um menor n
umero de redundancia aumenta-se a chance de que se houver
mais erros do que o raio de correc
ao t, a decodificacao resulte numa palavra codigo errada, ao
inves de ter sido declarado falha.
J
a no gr
afico da figura 4, nota-se que as probabilidades simuladas ficaram muito proximas, de
seus respectivos limitantes te
oricos. Enquanto que no grafico da figura 5, isso nao ocorre (neste
gr
afico o limitante Pf foi nulo, por isso as curvas Pu+ e Pe+ se sobrepuseram).
Para os outros c
odigos os valores simulados de probabilidade, ficam bem proximos de seus
limitantes te
oricos e alguns casos, eles ate se coincidem, como e possvel ver execultando a rorina
principal no MATLAB.
Outro fato a se comentar e que o motivo de estender um codigo nada mais e do que ter a possibilidade de se aumentar a dist
ancia mnima do codigo, se este tiver, como dito antes, distancia
mpar. Enquanto, que a raz
ao do encurtamento e aumentar o porcentagem de redundancia, onde
a dist
ancia mnima poder se manter ou aumentar.
E por fim, podemos dizer que a vantagem que se tem em utilizar o codigo (7, 4, 3) em comparac
ao com o (8, 4, 4) e de se ter um taxa maior, porem o segundo possui menor probabilidade
de erro n
ao detectado. O que se percebe tambem no codigo (15, 11, 3) e no (72, 64, 4), onde se
tem maiores taxas de c
odigo, mas sua probabilidades de erro aumentam.

Conclus
ao

Ap
os a conclus
ao deste trabalho, e possvel percerber que os codigos lineares sao mais eficientes
do que o os c
odigos de repetic
ao, no sentido de aumento da taxa de codigo. E que estes possuem
ainda menor complexidade na decodificacao.
E tambem, percebe-se que as mudancas realizadas nos codigos Hamming podem melhorar
sua eficiencia, dependendo de qual for o objetivo.

Figura 2: Probabilidades de erro de decodificacao em funcao da probabililade de troca de bit do


canal BSC, com NUMERR = 30.

Figura 3: Probabilidades de erro de decodificacao em funcao da probabililade de troca de bit do


canal BSC, com NUMERR = 30.

Figura 4: Probabilidades de erro de decodificacao em funcao da probabililade de troca de bit do


canal BSC, com NUMERR = 30.

Figura 5: Probabilidades de erro de decodificacao em funcao da probabililade de troca de bit do


canal BSC, com NUMERR = 30.

Você também pode gostar