syftet med kanalkodningsteori är att hitta koder som sänder snabbt, innehåller många giltiga kodord och kan korrigera eller åtminstone upptäcka många fel. Även om det inte utesluter varandra, är prestanda inom dessa områden en avvägning. Så olika koder är optimala för olika applikationer. De nödvändiga egenskaperna för denna kod beror huvudsakligen på sannolikheten för att fel uppstår under överföringen. I en typisk CD är försämringen främst damm eller repor.
CD-skivor använder cross-interleaved Reed-Solomon-kodning för att sprida data ut över disken.
även om det inte är en mycket bra kod kan en enkel upprepningskod fungera som ett förståeligt exempel. Antag att vi tar ett block av databitar (representerar ljud) och skickar det tre gånger. Vid mottagaren kommer vi att undersöka de tre upprepningarna bit för bit och ta en majoritetsröstning. Vridningen på detta är att vi inte bara skickar bitarna i ordning. Vi interleave dem. Blocket av databitar delas först upp i 4 mindre block. Sedan cyklar vi genom blocket och skickar en bit från den första, sedan den andra etc. Detta görs tre gånger för att sprida data ut över diskens yta. I samband med den enkla upprepningskoden kanske detta inte verkar effektivt. Det finns emellertid mer kraftfulla koder som är mycket effektiva för att korrigera ”burst” – felet på en repa eller en dammfläck när denna interfolieringsteknik används.
andra koder är mer lämpliga för olika applikationer. Djup rymdkommunikation begränsas av mottagarens termiska ljud som är mer av kontinuerlig natur än en bursty natur. På samma sätt begränsas smalbandsmodem av bruset, som finns i telefonnätet och modelleras också bättre som en kontinuerlig störning. Mobiltelefoner är föremål för snabb blekning. De höga frekvenserna som används kan orsaka snabb blekning av signalen även om mottagaren flyttas några inches. Återigen finns det en klass av kanalkoder som är utformade för att bekämpa blekning.
linjär kodredigera
termen algebraisk kodningsteori betecknar underfältet för kodningsteori där kodernas egenskaper uttrycks i algebraiska termer och sedan undersöks ytterligare.
algebraisk kodningsteori är i grunden uppdelad i två huvudtyper av koder:
- linjära blockkoder
- Fällningskoder
den analyserar följande tre egenskaper hos en kod-huvudsakligen:
- kodordlängd
- Totalt antal giltiga kodord
- det minsta avståndet mellan två giltiga kodord, med huvudsakligen Hamming-avståndet, ibland också andra avstånd som Lee-avståndet
linjär blockkodesedit
linjära blockkoder har egenskapen av linjäritet, dvs summan av två kodord är också ett kodord, och de appliceras på källbitarna i block, därav namnet linjära blockkoder. Det finns blockkoder som inte är linjära, men det är svårt att bevisa att en kod är bra utan den här egenskapen.
linjära blockkoder sammanfattas av deras symbolalfabet (t.ex. binär eller ternär) och parametrar (n,m,dmin) där
- n är längden på kodordet, i symboler,
- m är antalet källsymboler som kommer att användas för kodning på en gång,
- dmin är det minsta hammingavståndet för koden.
det finns många typer av linjära blockkoder, såsom
- cykliska koder (t. ex.
- Repetitionskoder
- Paritetskoder
- Polynomkoder (t.ex. BCH–koder)
- Reed–Solomon-koder
- algebraiska geometriska koder
- Reed-Muller-koder
- perfekta koder
Blockkoder är knutna till sfärpackningsproblemet, vilket har fått viss uppmärksamhet genom åren. I två dimensioner är det lätt att visualisera. Ta en massa pennies platt på bordet och skjut dem ihop. Resultatet är ett hexagonmönster som ett Bibo. Men blockkoder är beroende av fler dimensioner som inte lätt kan visualiseras. Den kraftfulla (24,12) Golay kod som används i rymden kommunikation använder 24 dimensioner. Om den används som en binär kod (som den vanligtvis är) avser dimensionerna längden på kodordet enligt definitionen ovan.
teorin om kodning använder den n-dimensionella sfärmodellen. Till exempel, hur många pennies kan packas i en cirkel på en bordplatta, eller i 3 dimensioner, hur många kulor kan packas i en jordklot. Andra överväganden anger valet av en kod. Till exempel kommer hexagonpackning i begränsningen av en rektangulär låda att lämna tomt utrymme i hörnen. När dimensionerna blir större blir andelen tomt utrymme mindre. Men vid vissa dimensioner använder förpackningen allt utrymme och dessa koder är de så kallade ”perfekta” koderna. De enda icke-triviala och användbara perfekta koderna är distance-3 Hamming – koderna med parametrar som uppfyller (2r – 1, 2r – 1-r, 3) och de binära och ternära Golay-koderna.
en annan kodegenskap är antalet grannar som ett enda kodord kan ha.Återigen, betrakta pennies som ett exempel. Först packar vi pennierna i ett rektangulärt rutnät. Varje öre kommer att ha 4 nära grannar (och 4 i hörnen som är längre bort). I en hexagon kommer varje öre att ha 6 nära grannar. När vi ökar dimensionerna ökar antalet nära grannar mycket snabbt. Resultatet är att antalet sätt för buller att få mottagaren att välja en granne (därmed ett fel) växer också. Detta är en grundläggande begränsning av blockkoder, och faktiskt alla koder. Det kan vara svårare att orsaka ett fel till en enda granne, men antalet grannar kan vara tillräckligt stort så att den totala felsannolikheten faktiskt lider.
egenskaper för linjära blockkoder används i många applikationer. Till exempel används den unika egenskapen syndrome-coset för linjära blockkoder i trellisformning, en av de mest kända formningskoderna.
Convolutional codesEdit
tanken bakom en convolutional code är att göra varje kodordssymbol den viktade summan av de olika inmatningsmeddelandesymbolerna. Det här är som faltning som används i LTI-system för att hitta utmatningen från ett system, när du känner till ingångs-och impulsresponsen.
så vi hittar i allmänhet utmatningen från systemkonvolutionskodaren, som är konvolutionen av ingångsbiten, mot tillstånden för konvolutionskodaren, register.
i grund och botten erbjuder fällningskoder inte mer skydd mot buller än en motsvarande blockkod. I många fall erbjuder de i allmänhet större enkelhet att implementera över en blockkod med lika kraft. Kodaren är vanligtvis en enkel krets som har tillståndsminne och viss återkopplingslogik, normalt xor-grindar. Avkodaren kan implementeras i programvara eller firmware.
Viterbi-algoritmen är den optimala algoritmen som används för att avkoda faltningskoder. Det finns förenklingar för att minska beräkningsbelastningen. De förlitar sig på att bara söka efter de mest troliga vägarna. Även om de inte är optimala har de i allmänhet visat sig ge bra resultat i miljöer med låg ljudnivå.
Fällningskoder används i röstbandsmodem (V. 32, V. 17, V. 34) och i GSM-mobiltelefoner, samt satellit-och militära kommunikationsenheter.