Пример 1. Выполнение типового контрольного задания (см. раздел 1) для заданной генерирующей матрицы G.
А) Известно, что генерирующая матрица имеет размер (k x n), где k – число строк матрицы, а n – число столбцов. Скорость кода вычисляется как отношение значения k к значению n. Следовательно, длина n кода равна 4, размерность кода k равна 2, а скорость кода равна 2/4=1/2.
В) Для вычисления количества кодовых слов воспользуемся тем фактом, что двоичный (n,k)-код С любому двоичному вектору длины k ставит в соответствие одно кодовое слово длины n. Следовательно количество кодовых слов кода С совпадает с числом всех возможных двоичных векторов длины k; число таких векторов определяется как 2k. В рассматриваемом примере число кодовых слов равно 22=4.
C) Преобразуем матрицу G в систематический вид
. Для чего переставим второй и четвертый столбцы:
таким образом, проверочная подматрица равна
Отметим, что в данном случае выполняется соотношение Р=РТ. Коды, у которых выполняется такое соотношение, называются самодуальными. Согласно формуле
запишем проверочную матрицу
D) Информационными словами u являются все возможные двоичные слова длины k=2. Кодовые слова v вычислим, используя формулу v=u?G. Отметим, что в зависимости от того, в систематическом или несистематическом виде использовать порождающую матрицу, одному и тому же информационному слово могут соответствовать различные кодовые слова. Несмотря на это полученные коды будут изоморфными.
Информа-ционные слова |
Кодовые слова в систематической форме |
Кодовые слова в несистематической форме |
(00) |
(0000) |
(0000) |
(01) |
(0110) |
(0011) |
(10) |
(1011) |
(1110) |
(11) |
(1101) |
(1101) |
E) Организуем таблицу размером 5 столбцов и 4 строки. Выполним шаг А процедуры построения декодирующая таблицы. А именно, запишем в заголовок таблицы все информационные слова, а в первую строку соответствующие им кодовые слова. Для выполнения этих действий воспользуемся результатами, полученными при выполнении задания D.
Для j=1 находим произвольное слово e1IV2 минимального веса Хемминга, не являющееся кодовым и не включенное в предыдущие строки таблицы. Пусть e1=1000, вычисляем синдром этого вектора по формуле s=eHT
Запишем полученный синдром s1=11 в первый столбец второй строки. В остальных ячейках этой строки запишем суммы кодовых слов из первой строки и вектора ошибок e1=1000.
Увеличиваем j на единицу. Для j=2 находим произвольное слово e2IV2 минимального веса Хемминга, не являющееся кодовым и не включенное в предыдущие строки таблицы. Пусть e2=0100, вычисляем синдром этого вектора
Запишем полученный синдром s2=10 в первый столбец третьей строки. В остальных ячейках этой строки запишем суммы кодовых слов из первой строки и вектора ошибок e2=0100.
Увеличиваем j на единицу. Для j=3 находим произвольное слово e3IV2 минимального веса Хемминга, не являющееся кодовым и не включенное в предыдущие строки таблицы. Пусть e3=0001, вычисляем синдром этого вектора
Запишем полученный синдром s3=01 в первый столбец четвертой строки. В остальных ячейках этой строки запишем суммы кодовых слов из первой строки и вектора ошибок e3=0001.
s |
00 |
01 |
10 |
11 |
|
00 |
0000 |
0110 |
1011 |
1101 |
Строка 1 |
11 |
1000 |
1110 |
0011 |
0101 |
Строка 2 |
10 |
0100 |
0010 |
1011 |
1001 |
Строка 3 |
01 |
0001 |
0111 |
1010 |
1100 |
Строка 4 |
Увеличиваем j и заканчиваем построение таблицы, так как для j=4 не выполняется условие j<2n-k.
У рассматриваемого кода 4 смежных класса, лидерами которых являются: e0=0000, e1=1000, e2=0100, e3=0001.
При построении таблицы в качестве вектора ошибок не был выбран вектор e=0010. Причина этого заключается в том, что синдром этого вектора совпадает с синдромом вектора e2=0100, что в свою очередь происходит из-за того, что данный код является кодом с неравной защитой от ошибок, то есть число исправляемых ошибок зависит от местоположения ошибок.
F) Пусть в канал было передано кодовое слово с=0110, а из канала принято слово r=0010. Рассчитаем синдром для принятого вектора и декодируем его, используя стандартную таблицу.
По декодирующей таблице находим, что синдром s=10 находится в третьей строке. В этой же строке отыскиваем вектор r=0010. В первой строке этого же столбца находится переданное кодовое слово с=0110. Одиночная ошибка в слове исправлена. Этот факт выглядит странно, так как минимальное расстояние рассматриваемого кода равно 2, а, следовательно, исправление однократных ошибок не гарантируется. Объяснение этого факта заключается в том, что, как уже отмечалось, данный код является кодом с неравной защитой от ошибок.
G) Для вычисления способностей кода по исправлению и обнаружению ошибок вычислим минимальное расстояние Хемминга для этого кода, как минимум Хемминговых весов ненулевых кодовых слов кода С (см. раздел 2.7). Веса Хемминга кодовых слов: wth(0110)=2, wth(1011)=3, wth(1101)=2. Минимальное расстояние Хемминга: dmin=min{2, 3, 2}=2. Используя формулу из раздела 2.8, вычисляем, что рассматриваемый код гарантировано обнаруживает 1 ошибку, а исправляет 0 ошибок.
Пример 2. Выполнение типового контрольного задания (см. раздел 1) для заданной проверочной матрицы H.
A. Проверочная матрица Н имеет размер (n-k)? n. Следовательно, длина кода n=7, размерность кода k=n-(n-k)=7-3=4, скорость кода равна 4/7.
B. Число кодовых слов определяется как 2k=24=16.
C. Приведем матрицу H к систематическому виду. Переставим местами столбцы 2 и 6, 3 и 7.
Правые четыре столбца матрицы Hsys представляют собой транспонированную проверочную подматрицу Р. Выпишем матрицу Р:
Согласно формуле запишем порождающую матрицу в систематическом виде
D. Информационными словами u являются все возможные двоичные слова длины k=4. Кодовые слова v вычислим, используя формулу v=u?G и используя матрицу Gsys.
u i |
vi |
u i |
vi |
u i |
vi |
(0000) |
(0000000) |
(0110) |
(0110011) |
(1100) |
(1100110) |
(0001) |
(0001111) |
(0111) |
(0111100) |
(1101) |
(1101001) |
(0010) |
(0010110) |
(1000) |
(1000011) |
(1110) |
(1110000) |
(0011) |
(0011001) |
(1001) |
(1001100) |
(1111) |
(1111111) |
(0100) |
(0100101) |
(1010) |
(1010101) |
|
|
(0101) |
(0101010) |
(1011) |
(1011010) |
|
|
E. Стандартная декодирующая таблица этого кода должна содержать 2n?k=27?4=8 строк и 2k+1=24+1=17 столбцов. Для удобства разделим эту таблицу по ширине на две части (табл. 1), которые заполним согласно процедуре построения из раздела 2.4.
У рассматриваемого кода 8 смежных классов, лидерами которых являются: e0=0000000, e1=0000001, e2=0000010, e3=0000100, e4=0001000, e5=0010000, e6=0100000, e7=1000000.
F) Пусть в канал было передано кодовое слово с=0011001 (соответствующее информационному слову u=0011), а из канала принято слово r=1011001 (содержащее один ошибочный символ). Синдромом для r является вектор s:
В табл. 1 синдрому s=(011) соответствует строка 5, двигаясь по этой строке, отыскиваем полученный из канала вектор r=1011001 и находим соответствующее этому вектору информационное слово u=0011. Вывод: декодирование успешно.
Пусть теперь в канал было передано кодовое слово с=0011001 (соответствующее информационному слову u=0011), а из канала принято слово r=1011011 (два ошибочных символа). Вычислим синдром s:
В табл. 1 синдрому s=(111) соответствует строка 2, двигаясь по этой строке, отыскиваем полученный из канала вектор r=1011011 и находим соответствующее этому вектору кодовое слово u=1011. Вывод: декодирование неудачно.
G) Минимальное расстояние Хемминга этого кода найдем как минимум Хемминговых весов dmin=min{ wth(0001111)=4, wth(0010110)=3, wth(0011001)=3, wth(0100101)=3, wth(0101010)=3, wth(0110011)=4, wth(0111100)=4, wth(1000011)=3, wth(1001100)=3, wth(1010101)=4, wth(1011010)=4, wth(1100110)=4, wth(1101001)=4, wth(1110000)=3, wth(1111111)=8}=3. Следовательно, рассматриваемый код гарантировано обнаруживает две, а исправляет 1 ошибку.
Таблица 1. Часть 1
s |
(0000) |
(0001) |
(0010) |
(0011) |
(0100) |
(0101) |
(0110) |
(0111) |
|
(000) |
(0000000) |
(0001111) |
(0010110) |
(0011001) |
(0100101) |
(0101010) |
(0110011) |
(0111100) |
Строка 1 |
(111) |
(0000001) |
(0001110) |
(0010111) |
(0011000) |
(0100100) |
(0101011) |
(0110010) |
(0111101) |
Строка 2 |
(110) |
(0000010) |
(0001101) |
(0010100) |
(0011011) |
(0100111) |
(0101000) |
(0110001) |
(0111110) |
Строка 3 |
(101) |
(0000100) |
(0001011) |
(0010010) |
(0011101) |
(0100001) |
(0101110) |
(0110111) |
(0111000) |
Строка 4 |
(011) |
(0001000) |
(0000111) |
(0011110) |
(0010001) |
(0101101) |
(0100010) |
(0111011) |
(0110100) |
Строка 5 |
(001) |
(0010000) |
(0011111) |
(0000110) |
(0001001) |
(0110101) |
(0111010) |
(0100011) |
(0101100) |
Строка 6 |
(010) |
(0100000) |
(0101111) |
(0110110) |
(0111001) |
(0000101) |
(0001010) |
(0010011) |
(0011100) |
Строка 7 |
(100) |
(1000000) |
(1001111) |
(1010110) |
(1011001) |
(1100101) |
(1101010) |
(1110011) |
(1111100) |
Строка 8 |
Таблица 1. Часть 2
s |
(1000) |
(1001) |
(1010) |
(1011) |
(1100) |
(1101) |
(1110) |
(1111) |
|
(000) |
(1000011) |
(1001100) |
(1010101) |
(1011010) |
(1100110) |
(1101001) |
(1110000) |
(1111111) |
Строка 1 |
(111) |
(1000010) |
(1001101) |
(1010100) |
(1011011) |
(1100111) |
(1101000) |
(1110001) |
(1111110) |
Строка 2 |
(110) |
(1000001) |
(1001110) |
(1010111) |
(1011000) |
(1100100) |
(1101011) |
(1110010) |
(1111101) |
Строка 3 |
(101) |
(1000111) |
(1001000) |
(1010001) |
(1011110) |
(1100010) |
(1101101) |
(1110100) |
(1111011) |
Строка 4 |
(011) |
(1001011) |
(1000100) |
(1011101) |
(1010010) |
(1101110) |
(1100001) |
(1111000) |
(1110111) |
Строка 5 |
(001) |
(1010011) |
(1011100) |
(1000101) |
(1001010) |
(1110110) |
(1111001) |
(1100000) |
(1101111) |
Строка 6 |
(010) |
(1100011) |
(1101100) |
(1110101) |
(1111010) |
(1000110) |
(1001001) |
(1010000) |
(1011111) |
Строка 7 |
(100) |
(0000011) |
(0001100) |
(0010101) |
(0011010) |
(0100110) |
(0101001) |
(0110000) |
(0111111) |
Строка 8 |
|