Блочный декодер
msg = decode(code,n,k,'hamming/fmt',prim_poly)
msg = decode(code,n,k,'linear/fmt',genmat,trt)
msg = decode(code,n,k,'cyclic/fmt',genpoly,trt)
msg = decode(code,n,k)
[msg,err] = decode(...)
[msg,err,ccode] = decode(...)
[msg,err,ccode,cerr] = decode(...)
| Вход | Значение по умолчанию |
|---|---|
fmt | binary
|
prim_poly | gfprimdf(m) где n = 2^m-1 |
genpoly | cyclpoly(n,k) |
trt | Использование syndtable для создания таблицы декодирования синдрома, связанной с матрицей проверки четности метода |
decode функция предназначена для восстановления сообщений, которые были закодированы с использованием методики кодирования с исправлением ошибок. Техника и определяющие параметры должны соответствовать тем, которые использовались для кодирования исходного сигнала.
encode справочная страница объясняет значения n и k, возможные значения fmtи возможные форматы для code и msg. Перед прочтением остальной части этого раздела необходимо ознакомиться с описанными здесь условными обозначениями. Использование decode функция с входным аргументом code который не был создан encode функция может привести к ошибкам.
msg = decode(code,n,k,' расшифровывает hamming/fmt',prim_poly)code с помощью метода Хэмминга. Для этого синтаксиса: n должен иметь вид 2m-1 для некоторого целого числа m, большего или равного 3, и k должны равняться n-m. prim_poly - вектор многочлена или вектор строки, который дает двоичные коэффициенты в порядке возрастания примитивного многочлена для GF (2m), который используется в процессе кодирования. Значение по умолчанию prim_poly является gfprimdf(м). Таблица декодирования, которую функция использует для исправления одной ошибки в каждом кодовом слове, syndtable(hammgen(м)).
msg = decode(code,n,k,' расшифровывает linear/fmt',genmat,trt)code, который является линейным блочным кодом, определяемым kоколо-n матрица генератора genmat. genmat требуется в качестве входных данных. decode пытается исправить ошибки с помощью таблицы декодирования trt, где trt является 2^(n-k)около-n матрица.
msg = decode(code,n,k,' декодирует циклический код cyclic/fmt',genpoly,trt)code и пытается исправить ошибки с помощью таблицы декодирования trt, где trt является 2^(n-k)около-n матрица. genpoly является вектором многочленов или вектором строк, который дает коэффициенты в порядке возрастания полинома двоичного генератора кода. Значение по умолчанию genpoly является cyclpoly(n,k). По определению, генераторный многочлен для [n, k] циклический код должен иметь степень n-k и должен разделить xn-1.
msg = decode(code,n,k) является таким же, как msg = decode(code,n,k,'hamming/binary').
[msg,err] = decode(...) возвращает вектор столбца err это дает информацию об исправлении ошибок. Если код является сверточным, err содержит вычисления метрики, используемые в процессе принятия решения декодирования. Для других типов кодов неотрицательное целое число в rth строке err указывает количество исправленных ошибок в rth-слове сообщения; отрицательное целое число указывает, что в rth слове больше ошибок, чем может быть исправлено.
[msg,err,ccode] = decode(...) возвращает исправленный код в ccode.
[msg,err,ccode,cerr] = decode(...) возвращает вектор столбца cerr значение которого зависит от формата code:
Если code - двоичный вектор, неотрицательное целое число в rth строке vec2matcerr указывает количество исправленных ошибок в кодовом слове rth; отрицательное целое число указывает, что в rth кодовом слове больше ошибок, чем может быть исправлено.
Если code не является двоичным вектором, cerr = err.
В зависимости от способа декодирования, decode опирается на такие функции более низкого уровня, как hammgen, syndtable, и cyclgen.