o objectivo da teoria da codificação de canais é encontrar códigos que transmitem rapidamente, contêm muitas palavras de código válidas e podem corrigir ou, pelo menos, detectar muitos erros. Embora não se excluam mutuamente,o desempenho nestas áreas é um compromisso. Então, códigos diferentes são ideais para diferentes aplicações. As propriedades necessárias deste código dependem principalmente da probabilidade de erros acontecerem durante a transmissão. Em um CD típico, a deficiência é principalmente poeira ou arranhões.os CDs
usam codificação de Reed-Solomon interleaved para espalhar os dados pelo disco.
embora não seja um código muito bom, um código de repetição simples pode servir como um exemplo compreensível. Suponha que pegamos um bloco de bits de dados (representando o som) e o enviamos três vezes. No receptor examinaremos as três repetições pouco a pouco e votaremos por maioria. A reviravolta nisto é que não mandamos apenas as partes em ordem. Vamos interceptá-los. O bloco de bits de dados é primeiramente dividido em 4 blocos menores. Em seguida, circulamos através do bloco e enviar um pouco do primeiro, em seguida, o segundo, etc. Isto é feito três vezes para espalhar os dados para fora sobre a superfície do disco. No contexto do código de repetição simples, isto pode não parecer eficaz. No entanto, existem códigos mais poderosos conhecidos que são muito eficazes na correção do erro de” explosão ” de um arranhão ou uma mancha de poeira quando esta técnica de intercalamento é usada.os outros códigos são mais adequados para diferentes aplicações. As comunicações do espaço profundo são limitadas pelo ruído térmico do receptor, que é mais de natureza contínua do que uma natureza bursty. Da mesma forma, os modems em banda estreita são limitados pelo ruído, presente na rede telefónica e também modelados melhor como uma perturbação contínua. Os telemóveis estão sujeitos a um rápido desaparecimento. As altas frequências utilizadas podem causar uma rápida diminuição do sinal, mesmo que o receptor seja movido a poucos centímetros. Mais uma vez, há uma classe de códigos de canal que são projetados para combater o desvanecimento.artigo principal: Código Linear
o termo teoria da codificação algébrica denota o sub-campo da teoria da codificação onde as propriedades dos códigos são expressas em termos algébricos e depois pesquisadas.
Algébrica de codificação teoria é dividido basicamente em dois grandes tipos de códigos:
- códigos de bloco Lineares
- códigos Convolucionais
Ele analisa as seguintes três propriedades de um código – principalmente:
- Código de comprimento de palavra
- número Total de válidos palavras de código
- A distância mínima entre dois válido palavras de código, utilizando, principalmente, a distância de Hamming, às vezes também outras distâncias, como o Lee distância
Linear bloco codesEdit
códigos de bloco Lineares têm a propriedade de linearidade, i.e. a soma de quaisquer duas palavras-código também é uma palavra de código, e eles são aplicados para a fonte de bits em blocos, daí o nome de códigos de bloco lineares. Existem códigos de bloco que não são lineares, mas é difícil provar que um código é bom sem esta propriedade.
códigos de bloco Lineares são resumidos pelos símbolos alfabeto (por exemplo, binário ou ternário) e parâmetros (n,m,dmin) onde
- n é o comprimento da codeword, símbolos
- m é o número de origem de símbolos que serão usados para a codificação de uma vez,
- dmin é a mínima distância de hamming para o código.
Existem muitos tipos de códigos de blocos lineares, tais como
- (e.g., Códigos de Hamming)
- a Repetição de códigos
- códigos de Paridade
- o Polinômio de códigos (por exemplo, códigos BCH)
- códigos Reed–Solomon
- Algébricas, geométricas códigos
- Reed–Muller códigos
- Perfeito códigos
códigos de Bloco estão vinculados à esfera embalagem problema, o que tem recebido alguma atenção ao longo dos anos. Em duas dimensões, é fácil de visualizar. Pega num monte de moedas na mesa e junta-as. O resultado é um padrão hexagonal como um ninho de abelhas. Mas os códigos de bloco dependem de mais dimensões que não podem ser facilmente visualizadas. O poderoso (24,12) Código Golay usado nas comunicações do espaço profundo usa 24 dimensões. Se usado como um código binário (que normalmente é) as dimensões referem-se ao comprimento da palavra de código como definido acima.
A teoria da codificação usa o modelo da esfera n-dimensional. Por exemplo, quantos centavos podem ser embalados em um círculo em uma tabletop, ou em 3 dimensões, quantos berlindes podem ser embalados em um globo. Outras considerações entram na escolha de um código. Por exemplo, a embalagem hexagonal na restrição de uma caixa rectangular irá deixar espaço vazio nos cantos. À medida que as dimensões aumentam, a percentagem de espaço vazio diminui. Mas em certas dimensões, a embalagem usa todo o espaço e estes códigos são os chamados códigos “perfeitos”. Os únicos códigos perfeitos não triviais e úteis são os códigos de distância – 3 Hamming com parâmetros que satisfazem (2r – 1, 2r – 1-r, 3), e os códigos binários e ternários Golay.
outra propriedade de código é o número de vizinhos que uma única palavra de código pode ter.Novamente, considere moedas como um exemplo. Primeiro empacotamos as moedas numa grelha rectangular. Cada centavo terá 4 vizinhos próximos (e 4 nos cantos que estão mais distantes). Num hexágono, cada centavo terá 6 vizinhos próximos. Quando aumentamos as dimensões, o número de vizinhos próximos aumenta muito rapidamente. O resultado é o número de maneiras para o ruído fazer o receptor escolher um vizinho (daí um erro) cresce também. Trata-se de uma limitação fundamental dos códigos de bloco e, na verdade, de todos os códigos. Pode ser mais difícil causar um erro a um único vizinho, mas o número de vizinhos pode ser grande o suficiente para que a probabilidade de erro total realmente sofra.
propriedades dos códigos de blocos lineares são usadas em muitas aplicações. Por exemplo, a propriedade de unicidade sindrome-coset dos códigos de bloco lineares é usada em trellis shaping, um dos códigos de moldagem mais conhecidos.
codesEdit convolucional
a ideia por trás de um código convolucional é fazer com que cada símbolo da palavra de código seja a soma ponderada dos vários símbolos das mensagens de entrada. Isto é como convolução usada em sistemas LTI para encontrar a saída de um sistema, quando você conhece a entrada e Resposta de impulso.
assim, geralmente encontramos a saída do codificador convolucional do sistema, que é a convolução do bit de entrada, contra os estados do codificador de convolução, registradores.fundamentalmente, os códigos convolucionais não oferecem mais proteção contra o ruído do que um código de bloco equivalente. Em muitos casos, eles geralmente oferecem maior simplicidade de implementação sobre um código de bloco de igual poder. O codificador é geralmente um circuito simples que tem memória de estado e alguma lógica de feedback, normalmente portas XOR. O decodificador pode ser implementado em software ou firmware.
o algoritmo de Viterbi é o algoritmo ideal usado para decodificar códigos convolucionais. Há simplificações para reduzir a carga computacional. Eles confiam em Procurar apenas os caminhos mais prováveis. Apesar de não serem ótimas, eles geralmente têm sido encontrados para dar bons resultados em ambientes de baixo ruído.os códigos convolucionais são usados em modems de voz (V. 32, V. 17, V. 34) e em telefones celulares GSM, bem como em dispositivos de comunicação por satélite e militares.