exponenta event banner

закодировать

Блочный кодировщик

Описание

пример

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 в диапазоне [2 м + 1, 2 м + 1 - 1].

Дополнительные сведения о полиномах примитивов по умолчанию см. в разделе Полиномы примитивов по умолчанию. Дополнительные сведения о представлении примитивных многочленов см. в разделе Примитивные многочлены и представления элементов.

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

Матрица генератора, заданная как kоколо-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