Kanaalcodering
Kanaalcodering heeft als doel het bewerkstelligen van betrouwbaar transport van informatie over een onbetrouwbaar kanaal, of opslag van informatie op een 'onbetrouwbaar' medium.
Bij eenvoudige kanalen die slechts gehinderd worden door additieve ruis, kan dit doel worden bewerkstelligd door de te verzenden informatie te representeren door signalen die een voldoend grote afstand (volgens een relevante metriek) ten opzichte van elkaar hebben. Hiertoe wordt redundantie aangebracht in het digitale signaal of het digitale databestand. Deze redundantie wordt verwezenlijkt door het toevoegen van digits (bijvoorbeeld bits in het geval van een binaire informatiebron) aan het digitale signaal. De afstandsmaat die vaak gebruikt wordt voor digitale signalen die over onbetrouwbare kanalen worden verzonden is de Hammingafstand.
De redundantie in het verzonden signaal maakt detectie en foutcorrectie mogelijk. Foutcorrectie wordt uitgevoerd door te bepalen welke reeks informatie-digits de grootste waarschijnlijkheid heeft om oorspronkelijk te zijn verzonden of opgeslagen. Een elementair voorbeeld van kanaalcodering is het drie maal uitzenden van elk informatiebit. In plaats van '0' en '1' zendt men dus '000', respectievelijk '111'. Als op het kanaal 1 van deze 3 bits foutief wordt ontvangen, dan kan de fout nog correct worden hersteld. De coderingstheorie houdt zich bezig met de wiskundige achtergronden van foutencorrigerende kanaalcodes. Fundamenteel werk is verricht door Claude Shannon in 1948, die capaciteitsgrenzen berekende van foutvrije transmissie.
De betrouwaarbaarheid van realistische transmissiekanalen wordt mede vegroot door het toepassen van lijncodering. Lijncodering (soms ook wel kanaalcodering genoemd) is een vorm van codering die niet direct gericht is op foutencorrectie, maar op het versterken van andere technische eigenschappen zoals synchronisatie. Door het toepassen van lijncodering neemt de kans dat fouten optreden af. Bij realistische kanalen is het bijvoorbeeld niet gewenst om lange rijen opeenvolgende nullen of enen te verzenden, omdat dan de ontvanger problemen kan krijgen met de synchronisatie. Lijncodering kan ervoor zorgen dat er een bepaald maximum zit in het aantal achtereenvolgens verstuurde nullen of enen.
Kanaalcodering moet niet worden verward met broncodering; dit laatste is de eliminatie van redundantie met als doel het efficiënt gebruikmaken van geheugenruimte en/of transmissie-kanalen. Zo is er in veel audiosignalen een zekere 'trend' in het signaal aanwezig; er zijn minder bits nodig als alleen de afwijkingen ten opzichte van deze berekenbare trend daadwerkelijk worden overgestuurd.
In de meeste communicatie-systemen wordt er aan de zendzijde eerst broncodering toegepast, vervolgens kanaalcodering en ten slotte lijncodering. Er zijn ook mengvormen waarbij kanaal- en lijncode samengevoegd zijn.