decode

Синтаксис

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.

Примеры

свернуть все

Установите значения длины кодового слова и длины сообщения.

n = 15; % Codeword length
k = 11; % Message length

Создайте случайное двоичное сообщение с длиной, равной длине сообщения.

data = randi([0 1],k,1);

Закодируйте сообщение.

encData = encode(data,n,k,'hamming/binary');

Повреждает закодированную последовательность сообщений путем введения ошибки в четвертый бит.

encData(4) = ~encData(4);

Декодируйте поврежденную последовательность. Заметьте, что декодер правильно восстановил сообщение.

decData = decode(encData,n,k,'hamming/binary');
numerr = biterr(data,decData)
numerr = 0

Алгоритмы

В зависимости от метода декодирования, decode полагается на такие низкоуровневые функции, как hammgen, syndtable, и cyclgen.

Представлено до R2006a