Блочный декодер
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 чтобы создать таблицу декодирования синдрома, связанную с матрицей проверки четности метода |
The 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-м. prim_poly - полиномиальный вектор символов или вектор-строка, который задает двоичные коэффициенты, в порядке возрастания степеней, примитивного полинома для GF (2m), который используется в процессе кодирования. Значение по умолчанию prim_poly является gfprimdf(м). Таблица декодирования, которую функция использует для исправления одной ошибки в каждом кодовом слове, является syndtable(hammgen(м)).
msg = decode(code,n,k,' декодирует linear/fmt',genmat,trt)code, который является линейным блочным кодом, определяемым k-by- n матрица генератора genmat. genmat требуется в качестве входных параметров. decode пытается исправить ошибки с помощью таблицы декодирования trt, где trt является 2^(n-k)-by- n матрица.
msg = decode(code,n,k,' декодирует циклический код cyclic/fmt',genpoly,trt)code и пытается исправить ошибки с помощью таблицы декодирования trt, где trt является 2^(n-k)-by- 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 содержит метрические вычисления, используемые в процессе принятия решений о декодировании. Для других типов кодов неотрицательное целое число в r-й строке err указывает количество ошибок, исправленных в rth message слове; отрицательное целое число указывает, что в rth слове больше ошибок, чем можно исправить.
[msg,err,ccode] = decode(...) возвращает исправленный код в ccode.
[msg,err,ccode,cerr] = decode(...) возвращает вектор-столбец cerr чей смысл зависит от формата code:
Если code является двоичным вектором, неотрицательным целым числом в r-й строке vec2matcerr указывает количество ошибок, исправленных в rth кодовом слове; отрицательное целое число указывает, что в rth кодовом слове больше ошибок, чем может быть исправлено.
Если code не является двоичным вектором, cerr = err.
В зависимости от метода декодирования, decode полагается на такие низкоуровневые функции, как hammgen, syndtable, и cyclgen.