Декодер кода Рида-Соломона
decoded = rsdec(code,n,k)
decoded = rsdec(code,n,k,genpoly)
decoded = rsdec(...,paritypos
)
[decoded,cnumerr] = rsdec(...)
[decoded,cnumerr,ccode] = rsdec(...)
decoded = rsdec(code,n,k)
пытается декодировать принятый сигнал в code
использование [n
, k
] Процесс декодирования Рида-Соломона с полиномом генератора с узким смыслом. code
- массив Галуа из символов, имеющих m бит каждый. Каждый n
-элементная строка code
представляет поврежденное систематическое кодовое слово, где символы четности находятся в конце, а самый левый символ является самым значимым символом. n
самое большее 2m-1. Если n
не совсем 2m- 1, rsdec
принимает, что code
является поврежденной версией укороченного кода.
В массиве Галуа decoded
каждая строка представляет попытку декодирования соответствующей строки в code
. Отказ декодирования происходит, если rsdec
обнаруживает более (n-k)/2
ошибки в строке code
. В этом случае rsdec
формирует соответствующую строку decoded
путем простого удаления n-k
символы из конца строки code
.
decoded = rsdec(code,n,k,genpoly)
совпадает с синтаксисом выше, за исключением того, что непустое значение genpoly
задает полином генератора для кода. В этом случае genpoly
- вектор-строка Галуа, которая перечисляет коэффициенты, в порядке нисходящих степеней, полинома генератора. Полином генератора должен иметь степень n-k
. Чтобы использовать полином генератора с узким смыслом по умолчанию, установите genpoly
на []
.
decoded = rsdec(...,
определяет, будут ли символы четности в paritypos
)code
были добавлены или подготовлены к сообщению в операции кодирования. paritypos
может быть либо 'end'
или 'beginning'
. Значение по умолчанию является 'end'
. Если paritypos
является 'beginning'
, отказ декодирования вызывает rsdec
для удаления n-k
символы от начала, а не от конца строки.
[decoded,cnumerr] = rsdec(...)
возвращает вектор-столбец cnumerr
, каждый элемент которого является количеством исправленных ошибок в соответствующей строке code
. Значение -1
в cnumerr
указывает на отказ декодирования в этой строке в code
.
[decoded,cnumerr,ccode] = rsdec(...)
возвращает ccode
, исправленную версию code
. Массив Галуа ccode
имеет тот же формат, что и code
. Если отказ декодирования происходит в определенной строке code
, соответствующая строка в ccode
содержит эту строку без изменений.
n
и k
должно отличаться четным целым числом. n
должно быть от 3 до 65535.
rsdec
использует алгоритм декодирования Берлекампа-Мэсси. Для получения информации об этом алгоритме смотрите работы, перечисленные в Ссылках ниже.
[1] Wicker, S. B., Error Control Systems for Digital Communication and Storage, Upper Saddle River, NJ, Prentice Hall, 1995.
[2] Berlekamp, E. R., Algebraic Coding Theory, New York, McGraw-Hill, 1968.