exponenta event banner

hammgen

Матрицы контроля четности и генератора для кода Хэмминга

Описание

пример

h = hammgen(m) возвращает m-by-n матрица контроля четности, h, для кода Хэмминга длиной кодового слова n = 2m–1. Длина сообщения кода Хэмминга равна n - m. Двоичный примитивный многочлен, который функция использует для создания кода Хэмминга, является примитивным многочленом по умолчанию в GF (2^m). Дополнительные сведения об этом полиноме по умолчанию см. в разделе gfprimdf функция.

пример

h = hammgen(m,poly) определяет poly, двоичный примитивный многочлен для GF (2m). Функция используетpoly для создания кода Хэмминга.

пример

[h,g] = hammgen(___) дополнительно возвращает матрицу генератора k-by-n, g, что соответствует матрице проверки на четность h. Укажите любую комбинацию входных аргументов из предыдущих синтаксисов.

пример

[h,g,n,k] = hammgen(___) также возвращает n, длина кодового слова и k, длина сообщения для кода Хэмминга.

Примеры

свернуть все

Создание матрицы проверки четности, h, для кода Хэмминга длиной 7 кодового слова. Функция использует примитивный многочлен по умолчанию в GF (8) для создания кода Хэмминга .

h = hammgen(3)
h = 3×7

     1     0     0     1     0     1     1
     0     1     0     1     1     1     0
     0     0     1     0     1     1     1

Создайте матрицы проверки четности для кода Хэмминга длины кодового слова 15, задав примитивные многочлены 1 + D + D4 и 1 + D3 + D4 в GF (16).

h1 = hammgen(4,'1+D+D^4')
h1 = 4×15

     1     0     0     0     1     0     0     1     1     0     1     0     1     1     1
     0     1     0     0     1     1     0     1     0     1     1     1     1     0     0
     0     0     1     0     0     1     1     0     1     0     1     1     1     1     0
     0     0     0     1     0     0     1     1     0     1     0     1     1     1     1

h2 = hammgen(4,'1+D^3+D^4')
h2 = 4×15

     1     0     0     0     1     1     1     1     0     1     0     1     1     0     0
     0     1     0     0     0     1     1     1     1     0     1     0     1     1     0
     0     0     1     0     0     0     1     1     1     1     0     1     0     1     1
     0     0     0     1     1     1     1     0     1     0     1     1     0     0     1

Удалите внедренные единичные матрицы 4 на 4, то есть самые левые четыре столбца в каждой матрице контроля четности.

h1 = h1(:,5:end)
h1 = 4×11

     1     0     0     1     1     0     1     0     1     1     1
     1     1     0     1     0     1     1     1     1     0     0
     0     1     1     0     1     0     1     1     1     1     0
     0     0     1     1     0     1     0     1     1     1     1

h2 = h2(:,5:end)
h2 = 4×11

     1     1     1     1     0     1     0     1     1     0     0
     0     1     1     1     1     0     1     0     1     1     0
     0     0     1     1     1     1     0     1     0     1     1
     1     1     1     0     1     0     1     1     0     0     1

Убедитесь, что две результирующие матрицы различаются.

isequal(h1,h2)
ans = logical
   0

Создайте матрицу проверки четности, h и матрицу генератора, g для кода Хэмминга длины кодового слова 7. Также возвращает длину кодового слова, nи длина сообщения, k для кода Хэмминга. Функция использует примитивный многочлен по умолчанию в GF (8) для создания кода Хэмминга.

[h,g,n,k] = hammgen(3)
h = 3×7

     1     0     0     1     0     1     1
     0     1     0     1     1     1     0
     0     0     1     0     1     1     1

g = 4×7

     1     1     0     1     0     0     0
     0     1     1     0     1     0     0
     1     1     1     0     0     1     0
     1     0     1     0     0     0     1

n = 7
k = 4

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

свернуть все

Число строк в матрице проверки четности, указанное как целое число, большее или равное двум. Функция использует это значение для вычисления длины кодового слова и длины сообщения кода Хэмминга.

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

Двоичный примитивный многочлен в GF (2m), указанный как одно из следующих значений:

  • Двоичный вектор строки полиномиальных коэффициентов в порядке возрастания степеней

  • Символьный вектор

  • Строковый скаляр

Если poly указывается как непримитивный многочлен, затем функция hammgen отображает ошибку.

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

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

свернуть все

Матрица проверки четности для кода Хэмминга, возвращенная как mоколо-n матрица двоичных значений для кода Хэмминга.

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

Матрица генератора для кода Хэмминга, возвращаемая как kоколо-n матрица двоичных значений, соответствующая матрице контроля четности h.

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

Длина кодового слова кода Хэмминга, возвращаемого как положительное целое число. Это значение вычисляется как 2m-1.

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

Длина сообщения кода Хэмминга, возвращаемого как положительное целое число. Это значение рассчитывается как nm.

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

Алгоритмы

hammgen использует функцию gftuple создание матрицы контроля четности путем преобразования каждого элемента в поле Галуа (GF) в его полиномиальное представление. В отличие от этого, gftuple, выполняющей вычисления в GF (2m) и обрабатывает один m-кортеж за раз, hammgen функция генерирует всю последовательность от 0 до 2m–1. Алгоритм вычисления использует все ранее вычисленные значения для генерации результата вычисления. Если значение m меньше 25 и примитивный многочлен является примитивным многочленом по умолчанию для GF (2m), синтаксис hammgen(m) может быть быстрее синтаксиса hammgen(m,poly).

См. также

Функции

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