Syklinen koodi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 28. tammikuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .

Syklinen koodi  on lineaarinen lohkokoodi , jolla on syklisyyden ominaisuus, eli jokainen koodisanan syklinen permutaatio on myös koodisana. Käytetään tietojen muuntamiseen suojaamaan niitä virheiltä (katso Virheiden havaitseminen ja korjaaminen ).

Johdanto

Olkoon  sana, jonka pituus on n äärellisen kentän elementtien aakkoston päällä, ja  olkoon tätä sanaa vastaava polynomi muodollisessa muuttujassa . Voidaan nähdä, että tämä vastaavuus on lineaaristen avaruuksien isomorfismi . Koska "sanat" koostuvat kentän kirjaimista, ne voidaan lisätä ja kertoa (elementti kerrallaan), jolloin tulos on samassa kentässä. Sanaparin lineaarista yhdistelmää vastaava polynomi on yhtä suuri kuin näiden sanojen polynomien lineaariyhdistelmä .

Tämä mahdollistaa sen, että n pituisten sanojen joukkoa äärellisessä kentässä voidaan pitää polynomien lineaarisena avaruutena , joiden aste on enintään n  − 1 kentän yli .

Algebrallinen kuvaus

Jos  on koodisana, joka saadaan syklisellä siirrolla yhden bitin verran sanasta vasemmalle , niin sitä vastaava polynomi saadaan edellisestä kertomalla x :llä:

, käyttämällä sitä tosiasiaa

Siirrä oikealle ja vasemmalle, vastaavasti, biteillä:

If  on mielivaltainen polynomi kentän päällä ja  on syklisen koodin koodisana, niin  se on myös tämän koodin koodisana.

Polynomin luominen

Määritelmä

Syklisen koodin generoiva polynomi on sellainen nollasta poikkeava polynomi kohdasta , jonka aste on pienin ja kerroin korkeimmalla asteella .

Lause 1

Jos  on syklinen koodi ja  on sen generoiva polynomi, niin aste on , ja jokainen koodisana voidaan esittää yksilöllisesti

jossa aste on pienempi tai yhtä suuri kuin .

Lause 2

 — syklisen koodin generoiva polynomi — on binomiaalin jakaja .

Seuraukset

Siten mikä tahansa jakajapolynomi voidaan valita generoivaksi polynomiksi . Valitun polynomin aste määrittää tarkistussymbolien määrän, tietosymbolien määrän .

Luodaan matriisia

Polynomit ovat lineaarisesti riippumattomia, muuten ei-nollalle , mikä on mahdotonta.

Joten koodisanat voidaan kirjoittaa, kuten lineaarisille koodeille, seuraavasti:

missä on generoiva matriisi ,  on informaatiopolynomi .

Matriisi voidaan kirjoittaa symboliseen muotoon:

Tarkista matriisi

Kullekin syklisen koodin koodisanalle . Siksi tarkistusmatriisi voidaan kirjoittaa muodossa

Sitten

Koodaus

Epäjärjestelmällinen

Ei-systeemisessä koodauksessa koodisana saadaan informaatiopolynomin tulona generoimalla:

Se voidaan toteuttaa kertomalla polynomit.

Systemaattinen

Systemaattisella koodauksella koodisana muodostetaan tiedon alilohkon ja tarkistuksen muodossa:

Olkoon tietosana sitten koodisanan korkeimmat voimat

Se seuraa sitten ehdosta

Tämä yhtälö määrittelee systemaattisen koodaussäännön. Se voidaan toteuttaa käyttämällä monisyklisiä lineaarisia suodattimia (MLF) .

Esimerkkejä

Binääri (7,4,3) koodi

Jakajaksi valitaan kolmannen asteen generoiva polynomi , jolloin tuloksena olevalla koodilla on pituus , tarkistussymbolien määrä (generoivan polynomin aste) , informaatiosymbolien määrä , minimietäisyys .

Koodimatriisin luominen :

jossa ensimmäinen rivi on polynomi , jonka kertoimet ovat nousevassa järjestyksessä.

Loput rivit ovat ensimmäisen rivin syklisiä siirtymiä.

Tarkista matriisi :

jossa i . sarake, alkaen 1.:stä, on polynomin jaon loppuosa kirjoitettuna nousevin astein, alkaen ylhäältä.

Joten esimerkiksi 4. sarake on , tai vektorimuodossa .

Se on helppo varmistaa .

Binääri (15,7,5) BCH-koodi

Generoivaksi polynomiksi voit valita kahden jakajan tulon :

Sitten jokainen koodisana voidaan saada käyttämällä informaatiopolynomin tuloa asteella seuraavasti:

Esimerkiksi informaatiosana vastaa polynomia , sitten koodisanaa tai vektorimuodossa .

Katso myös

Linkit