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