Декодер кода Рида-Соломона
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
] процесс декодирования Тростника-Solomon с полиномом генератора узкого смысла. 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
использует Berlekamp-Massey декодирование алгоритма. Для получения информации об этом алгоритме смотрите работы, перечисленные в Ссылках ниже.
[1] Ивовый прут, S. B. системы контроля ошибок для цифровой связи и устройства хранения данных, верхнего Сэддл-Ривер, NJ, Prentice Hall, 1995.
[2] Berlekamp, E. R. Алджебрэйк-Кодинг-Зэори, Нью-Йорк, McGraw-Hill, 1968.