
- •Сибирская Аэрокосмическая Академия
- •Статический метод
- •Энтропия и её свойства
- •Энтропия сложной системы
- •Условная энтропия. Объединение зависимых систем.
- •Полная условная энтропия
- •Теорема сложения энтропий
- •Определение информационных потерь в каналах связи
- •Энтропия и информация
- •Взаимная информация
- •Сумма равна единице
- •Частная информация о системе
- •Частная информация о событии, получаемая в результате сообщения о другом событии.
- •Энтропия и информация для систем с непрерывным множеством состояний
- •Условная энтропия непрерывной системы
- •Количественное определения избыточности
- •Блочное кодирование
- •Избыточность от округления
- •1 Символ – 4 бита
- •Код Хафмана
- •Процедура кодирования
- •Передача информации по дискретным каналам связи
- •Основная теорема Шеннона о кодировании для дискретного канала без помех
- •Дискретный канал с помехами
- •Теорема о кодировании Шеннона для дискретного канала с помехами
- •Корректирующие коды
- •Исправление ошибок с помощью полной кодовой таблицы
- •Разбиение
- •Систематические коды
- •Декодирование систематических кодов
- •Код Хэминга
- •Декодирование кода Хэминга
- •Особенности декодирования.
- •Циклические коды
- •Декодирование циклических кодов
- •Построение декодированного конкретного циклического кода
- •Обнаружение и определение ошибок
- •Коды, обнаруживающие трёхкратные ошибки
Особенности декодирования.
При наличии одной ошибки проверкой на чётность можно обнаружить ошибку. Проверки по позициям укажут номер ошибочной позиции. При наличии двойной ошибки, проверка на чётность не фиксирует ошибку. Проверки по позициям укажут наличие ошибки.
Пример: Построить код Хэминга для исправления одиночной и обнаружения двойной ошибки четырёх значного двоичного кода.
0001 nu = 4 nk = 3
Макет кода
а1а2а3а4а5а6а7
k1k20k3001k4
Схема проверок:
1) a1 + a3 + a5 + a7 = k1 + 0 + 0 + 1 = 0 k1 = 1
2) a2 + a3 + a6 + a7 = k2 + 0 + 0 + 1 = 0 k2 = 1
3) a1 + a5 + a6 + a7 = k3 + 0 + 0 + 1 = 0 k3 = 1
11010010
1101001k4 Количество единиц чётное, следовательно сам код
Рассмотрим пример для vk = 01001011. Пример обнаружения единичной ошибки.
a1a2a3a4a5a6a7
vk = 01001011 ошибка в четвёртом разряде
vx = 01011011
Проведим проверки на чётность, которые указывают наличие одиночной ошибки.
Проведим проверку по позициям.
Составляем схему проверок
1) a1 + a3 + a5 + a7 = 0 + 0 + 1 + 1 = 0 s1 = 0
2) a2 + a3 + a6 + a7 = 1 + 0 + 0 + 1 = 0 s2 = 0 S = (001) a4
3) a1 + a5 + a6 + a7 = 1 + 1 + 0 + 1 = 1 s4 = 1
Пример: Обнаружение двойной ошибки.
Vk = 01001011
Vx = 11011011
Делаем проверку на чётность, число единиц чётное, следовательно, проверка ошибки не обнаруживает.
Делаем проверки по позициям
Схема
1) a1 + a3 + a5 + a7 = 1 + 0 + 1 + 1 = 1 s1 = 1
2) a2 + a3 + a6 + a7 = 1 + 0 + 0 + 1 = 0 s2 = 0 S = (101)
3) a1 + a5 + a6 + a7 = 1 + 1 + 0 + 1 = 1 s3 = 1
В этом случае S не указывает разряд ошибки, но S просто показывает, что она есть.
Циклические коды
Циклические коды названы так, потому что у них часть комбинаций может быть получена путём сдвига одной или нескольких комбинаций. Для проверки и обнаружения ошибок используется операции циклического сдвига. Циклические коды относятся к числу систематических кодов.
Идея построения циклических кодов базируется на использовании неприводимых в поле двоичных чисел многочленов.
Не приводимыми называют многочлены, которые делятся без остатка на себя и на единицу. Под полем двоичных чисел подразумевается, что все операции проводятся по правилам сложения (и т.д.) двоичных чисел. Неприводимые многочлены играют роль производящих многочленов. Если информацию кодовой комбинации умножить на выбранный неприводимый многочлен, то получим циклический код. Корректирующая способность кода будет определяться видом неприводимого многочлена. В теории циклических кодов, кодовые векторы принято представлять в виде полиномов.
x3x2x1x0
Например: u(x) = x3 + x2 +1 1 1 0 1
Построим циклический код. Образующий многочлен к(х) = х3 + х + 1 = 1011. При построении циклических кодов существует несколько приёмов.
1. Умножим кодовый вектор u(x) на одночлен той же степени, что и образующий многочлен.
u(x)
* xn
= (x3
+ x2
+ 1) * x3
= x6
+ x5
+ x3
= 1101000
инф.. корректирующие разряды
часть
Чтобы
уточнить значения корректирующих
разрядов производят деление
.
Делить можно используя полиномы и
значения двоичных разрядов.
Разделим один многочлен на другой
1101
000 1011
001
1011
1101001
1100
1011
1110
1011
1010
1011
001
остаток от деления - он прибавляется к
исходной комбинации
1101000
+ 001
1101001
- искомый циклический код
В общем виде можно записать
,
где Q(x)
– частное; K(x)
– остаток
Умножим левую и правую часть k(x) и получим:
u(x) * xn = Q(x) * K(x) + R(x)
u(x) * xn + R(x) = Q(x) * K(x) – знак перед R(x) не имеет значение
= F(x) – это цикловой код.
Т.о. получается два способа образования циклического кода:
1) Путём умножения одной из комбинаций информационной части кода на образующий многочлен:
Q(x) * K(x) = I(x)
2) Умножение заданной комбинации на одночлен и той же степени, что и выбранный образующий многочлен с добалением остатка от деления.
Эти способы являются теоретическим основанием для построения кодирующих и декодирующих устройств.
Образующий многочлен K(x) принимает участие в образовании в каждой кодовой комбинации. Поэтому любой многочлен циклического кода делится на образующий без остатка. Если при делении обнаружен остаток, значит принятая комбинация содержит ошибку.
Для построении циклических кодов обычно используют образующую матрицу.
Способы построения образующей матрицы:
Первый способ
1) Образующая матрица получатся как результат слияния двух матриц: Первая - единичная повёрнутая размером nu.
nu
= 4
Дополнительная матрица имеет nu – строк и nk – столбцов. Для определения строк дополнительной матрицы используют результаты делений последней строки первой повёрнутой матрицы на образующий многочлен.
10000 …k(x)
В качестве строк дополнительной матрицы используются остатки от деления.
Пример: k(x) = 1011
Рассмотрим процедуру деления
1 Остаток 011 110 111 101 001 010 100
1011
01100
1011
1110
1011
1010
1011
001000
1011
В дополнительной матрице используются лишь те остатки, вес которых W = d0 – 1. d0 – минимальное кодовое расстояние. Строки образующей матрицы представляют собой первые комбинации искомого кода. Остальные комбинации получают суммированием различных сочетаниям строк.
Второй способ
Образующая матрица может быть построена в результате умножения элементов единичной матрицы размером nu на образующий многочлен.
Третий способ
Образующая матрица может быть получена в результате циклического сдвига любой комбинации, полученной по способу два.