encode

Описание

пример

code = encode(msg,n,k) кодирует сообщение, msg, используя метод кодирования Хемминга с длиной кодового слова, n, и длина сообщения, k. Значение n должен быть вычислен для целого числа, m, такого что m ≥ 2. Значения n и k рассчитаны как 2m-1 и n- m, соответственно.

пример

code = encode(msg,n,k,codingMethod,prim_poly) кодирует msg использование codingMethod как метод кодирования Хемминга, и prim_poly как примитивный полином. Значение n должен быть вычислен для целого числа, m≥2.

пример

code = encode(msg,n,k,codingMethod,genmat) кодирует msg использование codingMethod как метод линейного блока кодирования и genmat как матрица генератора. Значение n должен быть вычислен для целого числа, m≥2.

пример

code = encode(msg,n,k,codingMethod,genpoly) кодирует msg использование codingMethod как систематический циклический код и genpoly, как полином генератора. Значение n должен быть вычислен для целого числа, m≥2.

[code,added] = encode(___) возвращает дополнительную переменную added. added обозначает количество нулей, добавленных в конце матрицы сообщений перед кодированием. Можно задать любой из комбинаций входных аргументов из предыдущих синтаксисов.

Примеры

свернуть все

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

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

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

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

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

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);

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

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; % Codeword length
k = 5; % Message length

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

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

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

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

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

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',genpoly);

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

encData(1) = ~encData(1);
encData(2) = ~encData(2);
encData(4) = ~encData(4);

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

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

Входные параметры

свернуть все

Входные сообщения, заданные как один из следующих опций:

  • Двоичный столбец или вектор-строка с k столбцы

  • Двоичная матрица с k столбцы

  • Столбец или вектор-строка k столбцы и имеющие целые числа в области значений [0, 2k–1]

Пример: msg = [0 1 1 0, 0 1 0 1, 1 0 0 1] задает двоичный вектор-строку для k=4.

Пример: msg = [0 1 1 0; 0 1 0 1; 1 0 0 1] задает двоичную матрицу для k=4.

Пример: msg = [6, 10, 9] задает вектор-строку с целыми числами для k=4.

Типы данных: double

Длина кодового слова, заданная как положительное целое число. Функция вычисляет это значение как 2^m–1, где m должны быть больше или равны 2.

Типы данных: double

Длина сообщения, заданная как положительное целое число. Функция вычисляет это значение как n- m, где m должны быть больше или равны 2.

Типы данных: double

Метод и формат кодирования ошибок, заданные как один из следующих:

  • 'hamming/binary'

  • 'hamming/decimal'

  • 'linear/binary'

  • 'linear/decimal'

  • 'cyclic/binary'

  • 'cyclic/decimal'

Типы данных: char | string

Примитивный полином, заданный как один из следующих опций:

  • Двоичный вектор-строка - Этот вектор задает коэффициенты prim_poly в порядке возрастающих степеней.

  • Вектор символов или строковый скаляр - Это значение определяет prim_poly в текстовом представлении. Для получения дополнительной информации см. Полиномиальный вектор символов.

  • Положительное целое число - это значение определяет prim_poly в области значений [2m + 1, 2m + 1 – 1].

Для получения дополнительной информации о примитивных полиномах по умолчанию, см. «Примитивные многочлены по умолчанию». Для получения дополнительной информации о представлении примитивных полиномов, см. Примитивные многочлены и представления элемента.

Типы данных: double | char | string

Матрица генератора, заданная как k-by- n числовая матрица.

Типы данных: double

Полином генератора, заданный как полиномиальный вектор символов или вектор-строка, который задает коэффициенты в порядке возрастания степеней многочлена двоичного генератора. Значение genpoly для [n, k] циклический код должен иметь степень nk и разделите xn-1, где x является идентификатором.

Типы данных: char | string

Выходные аргументы

свернуть все

Выходной код, возвращенный как один из опций в этой таблице. Значение и размерность code зависит от значения и размерности msg и входа формата сообщения согласно этой таблице:

msg ЗначениеВход сообщенияcode Значение

Двоичный столбец или вектор-строка

набор из двух предметов

Двоичный столбец или вектор-строка

Двоичная матрица с k столбцы

набор из двух предметов

Двоичная матрица с n столбцы

Вектор-строка из целых чисел в области значений [0, 2k–1]

десятичное число

Вектор-строка из целых чисел в области значений [0, 2n–1]

Дополнительная переменная, возвращенная как количество нулей, которые были добавлены в конец матрицы сообщений перед кодировкой для матрицы, чтобы иметь соответствующий размер. Размер матрицы сообщений зависит от n, k, и msg и способ кодирования.

Алгоритмы

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

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