Декодер кода Рида-Соломона
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.