Как обнаружить ошибки для кода Рида-Соломона?

Я использую (7,5) код исправления ошибок Рида-Соломона.

Я думаю, что я могу декодировать "исправить 1 ошибку" или "найти 2 позиции ошибки".

Тем не менее, есть проблема. Мой код не может найти 2 позиции ошибки.


Например, сообщение равно 1 3 5 2 1, а четность RS - 0 5. Таким образом, код RS - 0513521.

После этого в паритетной части есть две ошибки. Таким образом, код изменен на 1113521.

Я хочу найти эти две ошибки, но мой декодер сказал, что ответ 1113621.

Что я должен делать?

1 ответ

RS(7,5) может исправить 1 ошибку или обнаружить до 2 ошибок, но не определить положение 2 ошибок. В случае двух ошибок существует несколько комбинаций двух значений ошибок и двух местоположений ошибок, которые приводят к одним и тем же двум синдромам. Используя ваш пример, два случая ошибок 1113521 (ошибки в местоположениях 0 и 1) и 0463521 (ошибки в местоположениях 1 и 2) дают один и тот же результат: синдром_1 = 4 и синдром_2 = 6, и нет способа определить, где находятся ошибки Только то, что они существуют.

Как уже отмечалось, если в случае ошибки 2 предпринимается попытка исправления ошибки 1, декодер может ошибочно исправить и создать третью ошибку, чтобы создать "правильное" кодовое слово, в данном случае он создал 1113621. Я получил такой же результат у тестовой программы у меня.

В вопросе отсутствует информация, основанная на примере: он использует GF(8) = GF(2^3), по модулю x^3 + x^2 + 1 (hex d) и полином генератора = = (x-2)(x-4) = x^2 + 6 x + 5. Примечание для GF(2^m), сложение и вычитание - xor. Данные отображаются наименее значимым термином вначале, поэтому 0513521 = 0 + 5x + 1x^2 + 3x^3 + 5x^4 + 2x^5 + 1x^6.

Другие вопросы по тегам