exponenta event banner

расшифровать

Синтаксис

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.

Примеры

свернуть все

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

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