Основной вопрос об исправлении ошибок Рида-Соломона - PullRequest
4 голосов
/ 26 февраля 2010

Работает ли исправление ошибок Рида-Соломона в случае, когда имеется пропущенный байт (или несколько пропущенных байтов)? Например, предположим, что это код Рида-Соломона (12,8), поэтому теоретически он должен быть способен исправить 2 ошибки (или 4 стирания, если позиция известна). Но что произойдет, если будет получено только 11 (или 10) байтов и никто не знает, какие байты были отброшены? Будет ли исправление ошибок Рида-Соломона?

Спасибо
Бен

Ответы [ 3 ]

4 голосов
/ 26 февраля 2010

RS-декодирование для стирания требует позиции символов «отброшено» или потеряно Тип ошибки, о которой вы говорите, связан с искажением фазы.

0 голосов
/ 06 марта 2015

Нет, Рид-Соломон не может автоматически исправлять случаи, когда отсутствуют пропущенные биты, потому что, как и большинство других алгоритмов FEC, он был разработан только для исправления переворотов . Если вам известна позиция пропущенных битов, вы можете дополнить принятый сигнал этими позициями, чтобы RS мог нормально работать.

Однако, если вы не знаете позицию, вам нужно будет использовать другой алгоритм, поддерживающий вставку или удаление бит , такой как коды маркеров и коды водяных знаков.

Также обратите внимание, что RS можно использовать не только для стирания, но и для обработки шумовых битов с использованием синдрома Форни .

0 голосов
/ 16 ноября 2012

Вы можете заставить его работать, просто переключаясь между возможными позициями, в которых символ может отсутствовать, и позволяя ему попытаться исправить ваш результат, например, вы получили 10 символов:

1234567890

Исправьте следующие значения:

??1234567890
?1?234567890
?12?34567890
 :
1??234567890
1?2?34567890
 :
1234567890??

Каждая попытка, вероятно, даст вам какой-то результат, большинство из которых не те, которые вам нужны. Но я ожидаю, что должен быть ровно один результат с минимальным количеством дополнительных модификаций, и это должен быть тот, который вы хотите использовать в качестве наиболее вероятного правильного ответа.

Например, если вы исправите первые три числа из приведенного выше примера, вы можете получить следующий результат:

    v
361274567890
917234567890
312734569897
 :      ^  ^

Для первого и третьего случая у вас есть дополнительные исправления, внесенные после заполнения двух пробелов (отмеченных v и ^), тогда как во втором случае у вас заполнены только пропущенные позиции, а другие символы соответствуют не исправленным входным данным , Поэтому я бы выбрал ответ 2 как наиболее вероятный.

Очевидно, что вероятность того, что это сработает, зависит от наличия других ошибок. К сожалению, я не могу дать вам строгий набор условий, при которых этот метод будет работать наверняка.

.

Еще одна вещь, которую вы можете сделать, если ваше сообщение достаточно длинное, - это использовать метод перемежения, чтобы в основном несколько ортогональных кодов RS покрывали ваши данные. Таким образом, если один не удастся, вы сможете восстановить с другим. Этот метод используется, например, на компакт-дисках (CD), где он называется CIRC .

.
...