encode

Описание

пример

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

пример

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

Передайте длину в виде положительного целого числа. Функция вычисляет это значение как nm, где 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- n числовая матрица.

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

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

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

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

свернуть все

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

msg ЗначениеФормат входного сигналаcode Значение

Столбец двоичных данных или вектор-строка

двоичный файл

Столбец двоичных данных или вектор-строка

Бинарная матрица с k столбцы

двоичный файл

Бинарная матрица с n столбцы

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

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

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

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

Алгоритмы

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

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

| | |

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