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 составлять таблицу декодирования синдрома, сопоставленную с матрицей проверки четности метода

Описание

Для всех синтаксисов

decode функционируйте стремится восстанавливать сообщения, которые были закодированы с помощью метода кодирования с коррекцией ошибок. Метод и параметры определения должны совпадать с теми, которые использовались, чтобы кодировать исходное сообщение.

Раздел For All Syntaxes по 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 должен равняться nM. prim_poly полиномиальный вектор символов или вектор-строка, который дает бинарные коэффициенты, в порядке возрастающих степеней, примитивного полинома для GF (2 м), который используется в процессе кодирования. Значение по умолчанию prim_poly gfprimdf(m). Таблица декодирования, что функциональным использованием, чтобы откорректировать одну ошибку в каждой кодовой комбинации является syndtable(hammgenM.

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). По определению, полином генератора для [nK] циклический код должен иметь степень n-k и должен разделить xn-1.

msg = decode(code,n,k) совпадает с   msg = decode(code,n,k,'hamming/binary').

[msg,err] = decode(...) возвращает вектор-столбец err это дает информацию об исправлении ошибок. Если код является сверточным кодом, err содержит метрические вычисления, используемые в процессе принятия решений декодирования. Для других типов кодов, неотрицательного целого числа в rth строке err указывает на количество ошибок, откорректированных в rth слове message; отрицательное целое число указывает, что существует больше ошибок в rth слове, чем можно откорректировать.

[msg,err,ccode] = decode(...) возвращает откорректированный код в ccode.

[msg,err,ccode,cerr] = decode(...) возвращает вектор-столбец cerr чье значение зависит от формата code:

  • Если code бинарный вектор, неотрицательное целое число в rth строке vec2matcerr указывает на количество ошибок, откорректированных в rth кодовой комбинации; отрицательное целое число указывает, что существует больше ошибок в rth кодовой комбинации, чем можно откорректировать.

  • Если code не бинарный вектор, cerr = err.

Примеры

свернуть все

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

Код Хемминга

Установите параметры кода.

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

Создайте двоичное сообщение, имеющее длину k.

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

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

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

Введите ошибку в 4-м бите закодированной последовательности.

encData(4) = ~encData(4);

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

decData = decode(encData,n,k,'hamming/binary');

numerr = biterr(data,decData)
numerr = 0

Линейный блочный код

Установите параметры кода.

n = 7;                % Code length
k = 3;                % Message length

Создайте двоичное сообщение, имеющее длину k.

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

Создайте циклический полином генератора. Затем создайте матрицу проверки четности и преобразуйте ее в порождающую матрицу.

pol = cyclpoly(n,k);
parmat = cyclgen(n,pol);
genmat = gen2par(parmat);

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

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

Введите ошибку в 3-м бите закодированной последовательности.

encData(3) = ~encData(3);

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

decData = decode(encData,n,k,'linear/binary',genmat);
Single-error patterns loaded in decoding table.  8 rows remaining.
2-error patterns loaded.  1 rows remaining.
3-error patterns loaded.  0 rows remaining.
numerr = biterr(data,decData)
numerr = 0

Циклический код

Установите параметры кода.

n = 15;                % Code length
k = 5;                 % Message length

Создайте двоичное сообщение, имеющее длину k.

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

Создайте полином генератора для циклического кода. Создайте матрицу проверки четности при помощи полинома генератора.

gpol = cyclpoly(n,k);
parmat = cyclgen(n,gpol);

Создайте декодирование синдрома, представленное в виде таблицы при помощи матрицы проверки четности.

trt = syndtable(parmat);
Single-error patterns loaded in decoding table.  1008 rows remaining.
2-error patterns loaded.  918 rows remaining.
3-error patterns loaded.  648 rows remaining.
4-error patterns loaded.  243 rows remaining.
5-error patterns loaded.  0 rows remaining.

Закодируйте данные при помощи полинома генератора.

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

Введите ошибки в 4-х и 7-х битах закодированной последовательности.

encData(4) = ~encData(4);
encData(7) = ~encData(7);

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

decData = decode(encData,n,k,'cyclic/binary',gpol,trt);

numerr = biterr(data,decData)
numerr = 0

Алгоритмы

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

Смотрите также

| | |

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