Escolar Documentos
Profissional Documentos
Cultura Documentos
17SA - Teoria
da Informação
e Códigos -
ECE ESTI008-17SA - Teoria da Informação e
Prof. Irineu
Antunes Códigos - ECE
Júnior
Códigos de Bloco — Abordagem de Aprendizado por meio
de Resolução de Problemas com Octave
UFABC
07/05/2020
01/ 15
Introdução
ESTI008- Códigos
17SA - Teoria
da Informação Por código entende-se qualquer conjunto de palavras que, em geral, podem ser
e Códigos - elementos de qualquer natureza: um intervalo na reta real, uma função, uma
ECE
forma de onda, um raio de luz, um sinal de fumaça . . . o que quer que se deseje.
Prof. Irineu
Antunes
Júnior Códigos de Bloco
• O termo bloco refere-se ao fato de as palavras serem formadas por blocos
de elementos.
• Um código de bloco é um conjunto de palavras formadas por elementos
tomados de um alfabeto.
• Códigos binários têm palavras formadas por 0s e 1s, podendo ter
comprimento fixo ou variável.
• Por exemplo, o código C a segir é formado por três palavras de
comprimentos diferentes.
c1=[1 0]
c2=[1 1 0]
c3=[0 0 0 1]
C={ c1 c2 c3 }=[1 0] [1 1 0] [0 0 0 1]
• Passamos a considerar a seguir apenas códigos de blocos de comprimento
fixo.
02/ 15
Códigos de Bloco Lineares
Prof. Irineu
Antunes Exemplo: LBC Binário (espaço vetorial com elementos binários)
Júnior
Um dado d entra num codificador G (matriz geradora) e produz a palavra de saída
c = d.G, sendo usado o produto módulo 2 no corpo binário.
d = [ 0 1 ];
G = [ 1 0 1 ; 0 1 1 ];
c=mod(d*G,2);
c=[0 1 1]
Este código é dito sistemático porque G tem colunas de uma matriz identidade
que fazem o dado aparecer inalterado na saída.
Também é dito um single parity-check code (SPC) pois o último elemento na
saída é o resultado de um cálculo de paridade. De fato
d = [D1 D2 ]; G = [I∣P]; c = [C1 C2 C3 ];
[D1 D2 ]G = [D1 D2 P1 ], logo, os elementos C1 = D1 ,C2 = D2 e C3 = P1 .
Ou, em termos de vetores, c = [d∣p], com p = [P1], a paridade.
E, claro, caso se queira calcular só a paridade, pode-se usar o produto
dP = p, ou seja, [D1 D2 ]P = [P1 ], em que P é a matriz de paridade.
03/ 15
Exemplo 1 - Treinando no Octave
ESTI008- SPC
17SA - Teoria
da Informação Neste caso, a paridade é um único dígito que é calculado pela soma módulo 2 dos
e Códigos - dados, P = (D1 + ... + Dk )(mod2). Em termos matriciais:
ECE d=[0 0 0 1 1 0 1 1]; k=numel(d);
I=eye(k); P=ones(k,1); G=[I P];
Prof. Irineu
c=mod(d*G,2);
Antunes
Júnior
c=[0 0 0 1 1 0 1 1 0]
linhas de G: [1 0 0 0 0 0 0 0 1] [0 1 0 0 0 0 0 0 1] [0 0 1 0 0 0 0 0 1] [0 0 0 1 0 0 0 0 1]
[0 0 0 0 1 0 0 0 1] [0 0 0 0 0 1 0 0 1] [0 0 0 0 0 0 1 0 1] [0 0 0 0 0 0 0 1 1]
Código de Repetição
Aqui as paridades são repetições do dado. Para k = 1 dígito de dado, d = [D1 ], o
código é formado acrescentando-se m dígitos de paridade P1 = P2 = ... = Pm .
São LBC com parâmetros (n, k ) = (n, 1) e qual a distância mínima, d ?
Vejamos por meio de um exemplo:
1 → 1 1 1 ... 1 (n vezes)
0 → 0 0 0 ... 0 (n vezes)
k
Pronto! Só há duas palavras neste código. De fato ∣C∣ =2 = 2 palavras. E,
claramente, d = n .
05/ 15
Distância Mínima de LBC
Invariância do conjunto de distâncias
ESTI008-
17SA - Teoria Como analogia ilustrativa, segue a anedota: se você se sentar sobre uma palavra
da Informação
e Códigos -
de um código e olhar a constelação no seu entorno, medirá um conjunto de
ECE distâncias até cada palavra. Um colega que se encontre em qualquer outra
Prof. Irineu palavra distinta, medirá o mesmo conjunto de distâncias.
Antunes
Júnior
Desafio
Escreva um programa que faça uma representação bidimensional da constelação
de palavras de um código num espaço binário de dimensão n e verifique a
anedota.
Mínimo peso
O peso de uma n -upla é definido como a quantidade de elementos não nulos. Por
exemplo, [1001011] tem peso 5.
06/ 15
Exemplo 2 - Treinando com o Octave
H =
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
07/ 15
Código Dual
ESTI008-
17SA - Teoria Dualidade
da Informação
e Códigos - • Partindo de GHT = {0}, pode-se multiplicar pela esquerda por um dado d e,
ECE pela direita, por d̃, ambos dados genéricos e de comprimentos apropriados,
Prof. Irineu respectivamente, k e k ′ :
Antunes
Júnior T
dGH d̃ = {0} ⇒ cc̃ = 0
• Como o produto escalar destes vetores é nulo, daí resulta que c é ortogonal
ao vetor c̃.
• Agora, entrando-se com diferentes dados, d de comprimento k , o produto
dG produz as palavras do código C.
• O mesmo ocorre para d̃ de comprimento k ′ e HT d̃ = (d̃T H)T que fornece
palavras de um código ortogonal C̃, com matriz geradora H.
• Como d tem k elementos, C tem dimensão k e, como d̃ tem k ′ = n − k
elementos, resulta que C̃ é o espaço dual (complementar) de C no espaço
vetorial de dimensão n .
08/ 15
Exemplo 3 - Treinando com o Octave
ESTI008-
17SA - Teoria
da Informação
e Códigos -
ECE Exemplo de códigos duais
Prof. Irineu n=3;k=2; % SPC
Antunes P = [ 1 ; 1 ]; I = eye(2);
Júnior G = [ P I ]
G =
1 1 0
1 0 1
09/ 15
Matrizes na forma canônica
ESTI008-
17SA - Teoria
da Informação
e Códigos -
ECE • Para dados no final da palavra, G e H assumem as formas conônicas do
Prof. Irineu exemplo anterior, na qual dG = c pode ser escrito como d[P∣Ik ] = [p∣d] em
Antunes
Júnior
que a matriz G foi particionada em duas submatrizes, cada uma produzindo
uma parte da palavra do código.
• Para dados no início, vale: G = [Ik ∣P].
10/ 15
Comunicação com Erros
ESTI008-
17SA - Teoria
da Informação
e Códigos -
ECE Comunicação com erros sempre ocorre na prática
Prof. Irineu E este seria o fim dos sistemas de comunicação (confiáveis) não fosse a
Antunes
Júnior
codificação de canal feita, por exemplo, pelos códigos aqui estudados.
Tratamento de erros
• Nos LBC, a paridade p que é uma informação redundante sobre os dados e
permite verificar se uma n-upla recebida r é uma palavra do código ou não.
(Detecção de erro)
• E, se a redundância for suficiente, a paridade ainda permite estimar o que
foi transmitido, corrigindo alguns padrões de erro. (Correção de erro)
11/ 15
Uso de síndrome
Interpretação da síndrome
Aqui o termo síndrome se refere à diagnóstico:
• Uma palavra válida tem síndrome nula.
• Uma n-upla inválida tem síndrome não nula.
12/ 15
Atividade Individual
ESTI008- Atividade
17SA - Teoria
da Informação Utilizando o Octave, escrever os programas (arquivos.m) solicitados a seguir,
e Códigos - juntando-os num diretório de ferramentas (seu_nome_toolbox) a ser usado por
ECE
você ao longo do curso.
Prof. Irineu
a. Escrever uma função (gera_palavra.m) que fornece a palavra de código,
Antunes
Júnior dados a matriz geradora e o dado.
b. Escrever uma função (gera_síndrome.m) que fornece a síndrome definida
como o produto de uma n-upla qualquer com uma matriz de verificação de
paridade dada.
c. Escrever uma função (imprime_erros_e_sindromes.m) que imprime todas
as n-uplas (possíveis padrões de erro) e respectiva síndrome.
d. Escrever um código que toma uma palavra do código de hamming (k=3),
adiciona um padrão de erro simulando uma n-upla recebida de um canal.
Em seguida, calcula a síndrome dessa n-upla e usa a tabela de síndromes
para encontrar o padrão de erro mais provável e fazer a correção obtendo
uma n-upla estimada.
e. Quais padrões de erro esse código é capaz de detectar e corrigir? E de
apenas detectar?
13/ 15
Atividade Individual (Cont.)
ESTI008-
17SA - Teoria
da Informação
e Códigos -
ECE
Prof. Irineu
Antunes
Júnior Instruções
Deposite um arquivo compactado (.zip, .7z etc.) com a sua
solução da atividade no tidia em
Atividades/02_Cod_de_Blocos
14/ 15
Estudo Individual
ESTI008-
17SA - Teoria
da Informação Livos da coleção Schaum
e Códigos -
ECE
Prof. Irineu
Antunes
Júnior
15/ 15