Вопрос

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

Спасибо,
Бен

Это было полезно?

Решение

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

Другие советы

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

1234567890

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

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

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

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

    v
361274567890
917234567890
312734569897
 :      ^  ^

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

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

.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top