как найти порождающую матрицу кода

Как найти порождающую матрицу кода

Откуда же берутся порождающие матрицы G? Порождающая матрица получается путем последовательного сдвига соответствующего порождающего многочлена g(x) по разрядам вправо. Последовательному сдвигу вправо отвечает умножение g(x) на x i :

G = как найти порождающую матрицу кода= как найти порождающую матрицу кода.

причем x n + 1 = g(x)h(x), где, напомним, n — общее число символов, k — число информационных, а m — число проверочных символов в кодовом слове. Если существует порождающая матрица G, то должна существовать и соответствующая ей проверочная матрица H. Действительно, такую матрицу можно получить путем последовательного сдвига проверочного многочлена h(x) влево:

H = как найти порождающую матрицу кода= как найти порождающую матрицу кода.

G = как найти порождающую матрицу кода, H = как найти порождающую матрицу кода,

Последнее равенство говорит о том, что матрицы G и H ортогональны относительно друг друга (звездочка означает операцию транспонирования матрицы).

Рассмотренные G и H матрицы называются ленточными, потому что нули и единицы вдоль обеих диагоналей этих матриц образуют своеобразные ленты. Но любая ленточная матрица может быть сведена к систематическому виду:

Существует, по крайней мере, два способа сведения ленточных матриц к систематическому виду. Первый наиболее надежный способ состоит в нахождении ряда остаточных многочленов. Если ri(x) остаточный многочлен от деления xi на порождающий многочлен g(x), то сумма элементов ri (x) + xi дает строки систематической матрицы G. Аналогичным способом находятся строки проверочной матрицы H. Второй способ заключается в том, чтобы найти соответствующие линейные комбинации строк или столбцов исходных матриц ленточного типа. Найдем G и H для предыдущего случая:

как найти порождающую матрицу кода

Эти две систематические матрицы можно было бы получить путем сложения векторов-столбцов исходных ленточных матриц (напоминаем, счет столбцов для G матрицы начинается с нуля, а для H матрицы — с шести).

G’ : 0′ = 1 + 2, 1′ = 1 + 5, 2′ = 3, 3′ = 0, 4′ = 1, 5′ = 4 + 1, 6′ = 6;

H’ : 0′ = 5, 1′ = 3, 2′ = 4, 3′ = 2, 4′ = 6, 5′ = 1, 6′ = 0.

Теперь поясним, как составить проверочные соотношения и определить коды ошибок si по известной проверочной матрице. С этой целью выпишем три равенства, отвечающих строкам матрицы H’ :

При ошибке в символе h0 суммы s2 и s3 изменятся на 1, а при ошибке в h1 не будут равны нулю суммы s1 и s2. Таким образом, можно составить все коды ошибок для всех символов (табл. 2.87).

как найти порождающую матрицу кода

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

Источник

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

Линейные коды задаются с помощью порождающей G(x) и проверочной H(x) матриц. Эти матрицы связаны основным уравнением кодирования:

Матрица G(x) содержит k строк и n столбцов, ее элементами являются нули и единицы. В качестве строк матрицы G(x) выбираются любые ненулевые линейно независимые n-значные векторы, отстоящие друг от друга не менее чем на заданное кодовое расстояние d0.

Векторы v1, v2, …, vk называются линейно независимыми, если выполняется условие

где сi=<0, 1>, а сложение выполняется по модулю два. То есть, каким бы образом мы не суммировали различные строки матрицы G(x), не получим суммы, равной нулю. Все множество кодовых слов состоит из строк порождающей матрицы и всевозможных комбинаций этих строк, т.е. суммы по модулю два всех строк матрицы G(x) сначала попарно, затем по три и так далее до суммы всех k строк.

С точки зрения алгебры все кодовые слова образуют некоторое векторное пространство, базисом которого являются строки матрицы G(x).

Поскольку линейно независимые векторы могут быть выбраны произвольным образом, то, очевидно, можно построить множество матриц G(x) с одним и тем же кодовым расстоянием d0.

Свойство линейной независимости векторов инвариантно относительно двух следующих операций (выполняя эти две операции, кодовое расстояние не меняется):

1) возможна произвольная перестановка строк и столбцов в матрице G(x);

2) замена i-й строки на сумму i-й и j-й строк и т. д. (эту операцию нельзя осуществлять со столбцами матрицы G(x)).

Производя вышеуказанные операции, любую произвольную матрицу G(x) можно привести к так называемому приведенно-ступенчатому (каноническому) виду:

где Ik –единичная подматрица размерностью k×k,

H * T – транспонированная проверочная матрица (транспонировать – значит поменять местами строки и столбцы).

Исходя из основного уравнения кодирования, проверочная матрица имеет вид

Возьмем порождающую матрицу кода (7,4). В этой матрице количество строк равно 4 (k=4), а количество столбцов 7(n=7).

Для того чтобы построить проверочную матрицу, необходимо транспонировать подматрицу G(x) * и к ней приписать единичную матрицу размером l×l. Проверочная матрица будет иметь размер l×n, l = n-k=7-4=3, т.е. матрица Н(x) имеет размер 3×7.

Источник

Порождающая и проверочная матрицы

Порождающей матрицей линейного как найти порождающую матрицу кода-кода называется матрица размера как найти порождающую матрицу кода, строки которой – его базисные векторы.

как найти порождающую матрицу кода

является порождающей матрицей кода из двух слов <000, 011>.

как найти порождающую матрицу кода

является порождающей для кода В из примера 6.3.

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

как найти порождающую матрицу кода.

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

Обратимся к задаче декодирования.

Предположим, что для некоторого двоичного вектора как найти порождающую матрицу кодавсе кодовые слова как найти порождающую матрицу кода-кода как найти порождающую матрицу кода, удовлетворяют тождеству

как найти порождающую матрицу кода, как найти порождающую матрицу кода, (6.2)

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

Про такой вектор как найти порождающую матрицу кодамы скажем, что он ортогонален. Найдя такой вектор, мы могли бы проверять с помощью тождества (6.2), является ли принятая из канала последовательность кодовым словом.

Заметим, что (6.2) справедливо для всех кодовых слов, если оно справедливо для базисных векторов, т.е. если

как найти порождающую матрицу кода, (6.3)

где верхний индекс Т обозначает транспонирование.

Чем больше таких «проверок» мы найдем, тем, по-видимому, больше ошибок сумеем обнаружить и исправить.

Упражнение 6.4. Докажите, что проверки образуют линейное пространство.

Это пространство назовем пространством, ортогональным линейному коду или проверочным пространством.

Упражнение 6.5. Найдите размерность линейного пространства проверок.

Чтобы выполнить последнее упражнение, нужно заметить, что в матрице как найти порождающую матрицу кодаимеется ровно как найти порождающую матрицу кодалинейно независимых столбцов. Не больше (почему?) и не меньше (почему?). Зафиксируем список номеров этих столбцов и назовем этот набор чисел информационной совокупностью. Чуть позже смысл этого названия станет яснее. Выберем произвольно значения вектора как найти порождающую матрицу кодана позициях, не входящих в информационную совокупность. Какими должны быть значения на позициях информационной совокупности, чтобы выполнилось (6.3)? Чтобы ответить на этот вопрос, придется решить систему линейных уравнений, причем система имеет единственное решение.

Следствием этих рассуждений является теорема

Теорема.Размерность проверочного пространства линейного как найти порождающую матрицу кода-кода равна как найти порождающую матрицу кода.

Базис проверочного пространства запишем в виде матрицы

как найти порождающую матрицу кода

называемой проверочной матрицей кода.

Проверочная и порождающая матрицы связаны соотношением

как найти порождающую матрицу кода. (6.4)

Из этого соотношения мы видим, что для любого кодового слова как найти порождающую матрицу кодаимеет место

как найти порождающую матрицу кода. (6.5)

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

Зная, как найти порождающую матрицу кодаможно найти как найти порождающую матрицу кода. Для того, чтобы понять, как это сделать, заметим, что один тот же код можно задать разными порождающими матрицами, выбирая по-разному базис пространства. Больше того, заменив в как найти порождающую матрицу кодалюбую строку на любую линейную комбинацию этой строки с другими строками, мы получаем новую порождающую матрицу того же кода.

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

Понятно, что для каждого кода найдется эквивалентный, для которого первые как найти порождающую матрицу кодапозиций образуют информационную совокупность, т.е. первые как найти порождающую матрицу кодастолбцов образуют невырожденную матрицу размера как найти порождающую матрицу кода. Заменяя строки линейными комбинациями строк (метод Гаусса) полученную матрицу можно привести к виду

как найти порождающую матрицу кода, (6.6)

где как найти порождающую матрицу кода– единичная матрица порядка как найти порождающую матрицу кода, а как найти порождающую матрицу кода– некоторая матрица размера как найти порождающую матрицу кода.

Матрица вида (6.6) называется порождающей матрицей, приведенной к систематическому виду, а соответствующий код называется систематическим. Кодирование для систематического кода немного проще, чем для кода общего вида:

как найти порождающую матрицу кода, (6.7)

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

Для систематического кода с порождающей матрицей в форме (6.6) проверочная матрица может быть вычислена по формуле

как найти порождающую матрицу кода. (6.8)

как найти порождающую матрицу кодаУпражнение 6.6. Проверьте (6.7). Подсказка: для этого нужно подставить (6.8) и (6.6) в (6.4).

Как найти проверочную матрицу для несистематического кода?

Очень просто. Нужно привести матрицу к систематическому виду и воспользоваться (6.7). Если первые как найти порождающую матрицу кодастолбцов порождающей матрицы образуют невырожденную подматрицу (первые как найти порождающую матрицу кодапозиций образуют информационную совокупность), то для приведения к систематической форме достаточно таких операций как перестановка строк и замена строк линейными комбинациями строк. Если нет – нужно будет сначала найти информационную совокупность и перенумеровать позиции так, чтобы первые позиции стали информационными.

Упражнение 6.7.Сформулируйте алгоритм нахождения порождающей матрицы по проверочной.

Упражнение 6.8.Объясните, почему любой набор номеров как найти порождающую матрицу кодалинейно-независимых столбцов называется информационной совокупностью.

Упражнение 6.9.Постройте порождающие и проверочные матрицы для кодов из примера 6.4.

Подведем итоги этого важного параграфа.

Линейный как найти порождающую матрицу кода-код может быть задан любой из двух матриц: порождающей как найти порождающую матрицу кодаразмера как найти порождающую матрицу кодалибо проверочной как найти порождающую матрицу кодаразмера как найти порождающую матрицу кода. По как найти порождающую матрицу кодалегко найти как найти порождающую матрицу кодаприведением кода к систематической форме. Аналогично по как найти порождающую матрицу коданаходится как найти порождающую матрицу кода.

Матрица как найти порождающую матрицу кодаиспользуется при кодировании (формула (6.7)), матрицей как найти порождающую матрицу кодаможно воспользоваться при декодировании. Например, выполнение тождества (6.5) свидетельствует о том, что данная последовательность принадлежит коду.

Источник

Проверочная матрица линейного кода

как найти порождающую матрицу кода(1)

Матрица H=(aij) коэффициентов системы (1) называется проверочной матрицей линейного (n, k) кода и однозначно определяет множество кодовых векторов, являющееся правым нуль-пространством матрицы H. Код называется систематическим, если первые k символов являются информационными: как найти порождающую матрицу кода, как найти порождающую матрицу кода, …, как найти порождающую матрицу кода, а последние n-k символов – проверочными. Проверочная матрица систематического кода элементарными преобразованиями строк приводится к виду H = как найти порождающую матрицу кода, где как найти порождающую матрицу кода– единичная матрица размерности n-k.

Систему (1) можно переписать в матричном виде:

как найти порождающую матрицу кода

Пример 1. Пусть q = 2, n = 6, k = 3, H = как найти порождающую матрицу кода.

Сообщение (а1 а 2 а3) кодируется вектором х = (а1 а2 а3 х4 х5 х6), то есть как найти порождающую матрицу кода, как найти порождающую матрицу кода, как найти порождающую матрицу кода, а проверочные символы х4, х5, х6 находятся из системы линейных уравнений, заданной проверочной матрицей H.

Имеем систему уравнений: как найти порождающую матрицу кода

Если передано сообщение а = 011, то соответствующим кодовым вектором будет х = 011011. Всего имеется 2 3 кодовых векторов:

000000, 011011, 110110, 001110,

100011, 111000, 010101, 101101.

Порождающая матрица линейного кода

как найти порождающую матрицу кода, где как найти порождающую матрицу кода(3)

как найти порождающую матрицу кода

Перепишем в матричном виде:

как найти порождающую матрицу кода. Транспонируя, получим:

как найти порождающую матрицу кода

Свойства порождающей матрицы:

1. Все кодовые слова можно получить, умножая информационный вектор на матрицу G.

(a1, a2, …, ak) ∙ G = (x1, x2, …, xn) как найти порождающую матрицу кодаC.

2. Строки матрицы G являются кодовыми словами.

Пусть как найти порождающую матрицу кода.

3. Любая линейная комбинация строк матрицы G является кодовым словом, и наоборот.

4. Строки матрицы G линейно независимы.

Так как в начале матрицы G стоит единичная матрица, то её строки образуют ступенчатую систему, а значит, g1, g2,…, gk линейно независимы. Из свойств 3 и 4 следует свойство 5.

5. Строки матрицы G g1, g2,…, gk образуют базис линейного пространства кода С.

Пример 2. Дана проверочная матрица как найти порождающую матрицу кодалинейного (4,2)-кода над полем F3 = <0,1,2>.

Скорость передачи данного кода k/n = 2/4 = ½

Матрица H имеет вид: H = как найти порождающую матрицу кода. Найдём порождающую матрицу G по формуле как найти порождающую матрицу кода.

как найти порождающую матрицу кода, откуда как найти порождающую матрицу кода.

Составим таблицу кодирования. Всего может быть 9 различных информационных сообщений (a1,a2): 00, 01, 02, 10, 11, 12, 20, 21, 22. Они записаны в первых двух столбцах таблицы. Соответствующие им кодовые векторы находим, умножая информационное сообщение на матрицу G:

(a1 a2) ∙ как найти порождающую матрицу кода= (x1 x2 x3 x4)

a1a2x1x2x3x4000000010121020212101022111110121201202011212102222220

Аналогичные результаты можно получить, записав систему проверочных уравнений, определяемую матрицей Н, и учитывая, что как найти порождающую матрицу кода, как найти порождающую матрицу кода– информационные символы:

как найти порождающую матрицу кода.

В качестве порождающей матрицы этого же кода можно взять матрицу G= как найти порождающую матрицу кода, строки которой – линейно независимые векторы из С. При этом изменится соответствие между информационными сообщениями и кодовыми векторами, а множество кодовых векторов С будет таким же (проверьте самостоятельно).

Дата добавления: 2019-02-12 ; просмотров: 1210 ; Мы поможем в написании вашей работы!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *