Koder/dekoder w oparciu o wielomian generujący

0

Witam, mam problem w zrozumieniu pewnego zagadnienia.
Piszę program realizujący funkcję kodera i dekodera. Z góry narzucone mam parametry kodu
(n,k) -> (17,8) oraz wielomian generujący: x9+x8+x6+x3+x+1 = 1101001011

Obliczam odległość minimalną takiego kodu (tu skorzystałem z kalkulatora) normalnie powinienem wziąć wszystkie słowa kodowe i sprawdzać odległość między nimi i wybrać najmniejszą odległość.
Odległość minimalne tego kodu = 6
Z odległości minimalnej wynikają zdolność detekcyjna = 5
oraz zdolność korekcyjna = 2

Kodowanie przedstawiam w krokach:

  1. Biorę sobie dowolne słowo informacyjne które chcę zakodować np.
    10000101
  2. Mnożę słowo informacyjne przez stopień wielomianu generującego:
    10000101*1000000000=10000101000000000
  3. Dzielę otrzymany ciąg przez wielomian generujący i resztę z dzielenia dodaję do powyższego ciągu.
    10000101000000000/1101001011 -> reszta = 1111
    10000101000000000 + 11111 = 10000101000011111

4 Otrzymałem gotowe, zakodowane słowo które mogę przesłać przez jakiś tor transmisyjny w którym mogą wystąpić błędy na którymś z bitów:
10000101000011111

5.Po przesłaniu przez tor transmisyjny odbieram słowo. Powiedzmy że zostało przekłamane na tych 4 bitach:
10000101000000001
Dzielę odebrane słowo przez wielomian generujący i sprawdzam wagę hamminga reszty z dzielenia
10000101000000001/1101001011 -> reszta = 11110 -> waga=4
Waga przekracza zdolność korekcyjną, sygnalizowany jest błąd

5 Biorę więc odebrane słowo i dokonuję przesunięcia cyklicznego w prawo
11000010100000000
11000010100000000/1101001011 -> reszta = 1111 ->waga=4
Waga przekracza zdolność korekcyjną, sygnalizowany jest błąd

I tak cały czas dokonuje przesunięć cyklicznych a waga reszty z dzielenia cały czas przekracza zdolność korekcyjną. Aż dochodzę do postaci:
00000110000101000
00000110000101000/1101001011 -> reszta = 100000100 ->waga=2
Waga jest równa zdolności korekcyjnej, błąd zostaje skorygowany

I tu pojawia mi się problem bo były 4 błędy a zdolność detekcyjna wynosi 5. Dlaczego stało się tak że błąd nie został wykryty?!
Z góry dziękuje za pomoc
pozdrawiam

0

Dawno nie miałem do czynienia z wielomianami generującymi, ale kiedy się nimi zajmowałem, to kodowanie wyglądało inaczej - polegało na mnożeniu przez wielomian generujący. W Twoim przypadku (1+x2+x7)*(1+x+x3+x6+x8+x9).

0

Ale taka metoda kodowania daje chyba w wyniku kod niesystematyczny

0

Po pierwsze, nie wiem.
Po drugie, nie pisałeś wcześniej, że wymagany jest kod systematyczny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1