Блочный декодер
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-й строке vec2mat
cerr
указывает количество ошибок, исправленных в rth кодовом слове; отрицательное целое число указывает, что в rth кодовом слове больше ошибок, чем может быть исправлено.
Если code
не является двоичным вектором, cerr = err
.
В зависимости от метода декодирования, decode
полагается на такие низкоуровневые функции, как hammgen
, syndtable
, и cyclgen
.