Недостаток: громоздкость кода и только 3-и ошибки.
2. Декодирование с проверкой на четность.
С помощью ортогональных векторов u из матрицы Н можно установить связь между составляющими векторов v.
Используя условие ортогональности:
Составляющие - берутся из матрицы Н, а - из принятого вектора.
схема проверок:
На основании векторов u можно записать схему проверок
Пример: , пусть принят вектор vx = 00110. Он имеет координаты а1 а2 а3 а4 а5. Составим схему проверок.
Если бы ошибок не было бы, то здесь были бы нули.
Возможность кода к исправлению ошибки можно объяснить схемой
N символов |
|||||
N-проверки |
1 |
2 |
3 |
4 |
5 |
1 |
+ |
+ |
+ |
||
1 |
+ |
+ |
+ |
Следовательно, данный код может исправить во втором бите, обнаружить ошибку четвёртом или пятом бите, обнаружить ошибку в первом и третьем бите.
Для исправления всех ошибок надо, чтобы каждый бит появлялся в оригинальной комбинации строк в таблице проверки, и так будет, когда d0=3 и добавиться ещё одна проверка.
3. Декодирование с помощью корректирующего вектора
Составляется корректирующий вектор, принятая кодовая комбинация умножается на корректирующий вектор, если принятая комбинация без ошибок, то корректирующий вектор равен нулю (т.е. результат умножается).Если есть ошибка, то результат ненулевой, каждой ошибке ставится в соответствие свой ненулевой результат умножения.
Составляющие вектора С c1,c2,..,ci представляют собой скалярное произведение принятого вектора vx на строки исправляющей матрицы. Вектор представляется двоичным числом С = c1,c2,…,cк. Если ошибок нет, то С = 0
Рассмотрим i-ую строку полной кодовой таблицы
- i-ая строка полная кодовая таблица
Умножим эту строку на вектор uj, то получим
=0 =0 =0
- в каждой строке будет одной и той же величиной для любой кодовой комбинации.
Метод декодирования состоит из следующих операций:
1) По полной кодовой таблице и матрицы Н вычисляют корректирующий вектор С;
2) Принятый вектор vx умножают на векторы матрицы Н и вычисляют корректирующий вектор.
3) Сравнивают полученные значения корректирующего вектора с имеющимся шаблоном и определяют ошибку
Пример: Нужно выбрать систему кодирования. Возьмём ту же систему кодов и H.
1. Определение шаблонов корректирующего вектора
Векторы ошибок
|
Для вектора e1 построение шаблона.
e1:
e1×u1 = 00001×01011 = 1 Þ C1 = 1
e1×u2 = 00001×11100 = 0 Þ C2 = 0
Следовательно, вектору e1 ставится в соответствие вектор С = (10)
Для e2:
e2×u1 = 00100×01011 = 0 Þ C1 = 0
e2×u2 = 00100×11100 = 1 Þ C2 = 1
Для e3:
e3×u1 = 01000×01011 = 1 Þ C1 = 1
e3×u2 = 01000×11100 = 1 Þ C2 = 1
Шаблоны известны на приёмной стороне ещё до посылки комбинации
2. Определение корректирующего вектора
Пусть принят вектор vx = 01001
Сравниваем полученный вектор ошибки с нашим шаблоном и определяем, что это e2.
3) Исправляем ошибку
, что соответствует комбинации v3.
Можно строить образующую матрицу достаточно простым способом, например, единичной матрицей nu ´ ni.
Эта матрица порождает восемь кодов, которые также позволяют обнаружить одиночную ошибку.
Преимущество кода состоит в том, что его можно легко составить, в исправляющих способностях выйгрыша нет.
Код Хэминга относится к систематическим кодам. Код позволяет обнаруживать одиночные и двойные ошибки и исправлять одиночные ошибки. Для вычисления основных параметров кода необходимо знать соответственно количество информационных разрядов nu или количество комбинаций . Количество контрольных разрядов nk вычисляют из соотношений
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.