
- •1. Теория информации
- •1.1 Теорема Котельникова
- •1.2 Квантование сигнала по уровню
- •2. Мера информации
- •2.1 Мера информации по Шеннону
- •2.2 Энтропия дискретного ансамбля сообщений
- •2.3 Энтропия непрерывного ансамбля сообщений
- •2.4 Энтропия непрерывного ограниченного ансамбля
- •2.3 Количество взаимной информации
- •2.3.1 Дискретный канал передачи информации
- •2.3.2 Непрерывный канал передачи информации
- •2.3.3 Эпсилон-энтропия (ε-энтропия)
- •Кодирование источника информации
- •3.1 Метод кодирования равномерным кодом
- •3.2 Метод кодирования Шеннона-Фано
- •3.3 Метод кодирования Хафмана
- •3.4 Теорема оптимального кодирования источника независимых сообщений.
- •4 Канал связи
- •4.1 Скорость передачи информации и пропускная способность канала связи
- •4.2 Канал без шумов
- •4.3 Канал с шумами
- •4.4 Непрерывный канал связи
- •4.5 Теорема Шеннона о пропускной способности частотно ограниченного канала
- •5. Кодирование в канале
- •5.1 Систематические коды
- •5.1.1 Образование систематического кода
- •5.1.2 Систематический код Хемминга
- •5.2 Циклические коды
- •5.2.1 Обнаружение однократной ошибки
- •5.2.2 Исправление однократной ошибки
- •1. Теория информации 1
5.1 Систематические коды
Для передачи информации используются разнообразные методы кодирования, зависящие от требований к восстанавливаемой информации, а также от свойств линий передачи информации. На рисунке 5.5 приведена сокращённая таблица кодов, взятая из [Березюк Кодирование информации]. В левой части таблицы указаны коды, применяемые для кодирования источников сообщений. В правой части таблицы указаны коды, применяемые для помехоустойчивого кодирования. Избыточные коды помимо информационных символов содержат дополнительные символы, применяемые для обнаружения и исправления ошибок. Сами избыточные коды делятся на блочные и непрерывные. Непрерывные коды характерны тем, что между символами, несущими информацию, находятся проверочные символы, т.е. на вход кодера канала подаётся последовательность информационных символов. На выходе кодера получается новая последовательность символов, перемежающихся с проверочными символами. Процесс кодирования, передачи информации и декодирования производится в непрерывном режиме .
При
блочном кодировании информации
производится объединение передаваемых
сообщений в блоки, и они затем подвергаются
кодированию. Блок состоит из
символов, из которых
символов являются информационными,
- проверочными. В блочных кодах выделяются
разделимые коды. В них
известных позиций отводятся под
информационные символы, а остальные
позиций – под передачу проверочных
символов. В неразделимых кодах такого
чёткого разграничения нет. Разделимые
коды обозначаются как
.
Разделимые коды в свою очередь делятся
на систематические и несистематические
коды.
Систематические
коды – это коды, в которых проверочные
символы представляют линейную комбинацию
информационных символов. Часто эти коды
называютлинейными кодами.
Пусть
информационные символы,
проверочные символы,
разрешённая
кодовая комбинация.
Согласно определению систематического
кода каждый символ
может быть записан как линейная комбинация
информационных символов.
, (5.8)
где коэффициентыпринимаю значения 0 или 1.
Положим,
н
овая
разрешённая комбинация. Составим сумму
по модулю два двух проверочных символов
для одних и тех позиций прежней и новой
кодовых комбинаций
.
Как видно из полученного выражения,
вновь полученный проверочный символ
на
ой
позиции является линейной
комбинацией информационных символов.
Сумма по модулю два разрешённых кодовых комбинаций дает также разрешённую кодовую комбинацию.
5.1.1 Образование систематического кода
Обычно для построения кодов необходимо
знать длину кодовой комбинации
,
кратность обнаруживаемых ошибок
,
число исправляемых ошибок
.
Числа
и
задают минимально допустимое кодовое
расстояние
,
[Гуров, стр. 417].Для
построения всевозможных кодовых
комбинаций строится порождающая матрица
(производящая матрица), состоящая из
строк и
столбцов и удовлетворяющая следующим
условиям:
1. все исходные комбинации должны быть различны,
2. нулевая комбинация не должна входить в число исходных комбинаций,
3. исходные кодовые комбинации должны быть линейно независимыми,
4. каждая кодовая комбинация должна
иметь вес не менее
,
5. кодовое расстояние между любой парой
исходных кодовых комбинаций должно
быть не менее
.
Подобранные определённым образом и
удовлетворяющие приведённым условиям
кодовые комбинации образуют матрицу,
состоящую из
строк
и
столбцов. Полученная матрица называется
производящей.
Если имеется кодовая комбинация,
состоящая из
символов, число всевозможных кодов
равно
.
Их них выделяются
кодовых комбинаций, остальные
комбинаций находятся как линейные
комбинации строк, входящих в производящую
матрицу.
Запишем производящую матрицу
.
(5.9)
Как видно, матрица
состоит из двух частей – информационной
подматрицы
размерности
и проверочной подматрицы
размерности
.
В число разрешённых кодовых комбинаций
входят кодовые комбинации, образующие
единичную матрицу
размерности
.
Заменим информационную часть матрицы
единичной матрицей
и получим матрицу
,
(5.10)
которая называется канонической формой порождающей матрицы.
Три исходных требования к порождающей
матрице
выполняются автоматически. Выдвинем
условия к строкам подматрицы
- число единиц в каждой строке не менее
,
- кодовое расстояние между строками
подматрицы
должно быть не менее
.
Таким образом, удовлетворяются все
требования, выдвинутые к матрице
.
Зная информационную часть порождающей
матрицы, можно на основе требований к
канонической форме порождающей матрицы
найти проверочные символы
.
[Темников, стр. 145]
Обычно бывает известно количество
передаваемых сообщений или количество
информационных разрядов
,
а также число обнаруживаемых или
исправляемых ошибок. По ним определяется
число символов
,
необходимых для проверочной части кода
.
Из всего множества
кодов выбираются произвольно
кодов, удовлетворяющие условиям
построения подматрицы
в выражении (5.10) , и строки подматрицы
заменяются выбранными кодами. В результате
получается производящая матрица
.
В дальнейшем производящая матрица
используется как для построения
проверочной части
кода
,
так и для обнаружения и исправления
возникших ошибок.
Определим матрицу
,
элементы которой использованы в
выражении (5.8), считая, что каноническая
форма матрицы
известна, т.е.
.
Из соотношения
получим
.
Определение проверочной части кода
.
Положим, известна информационная часть
кода
.
Воспользуемся определением систематического
кода. Элементы
в выражении (5.8) равны элементам
матрицы
,
т.е.
.
Тогда согласно (5.8)
.
(5.11)
Полученные символы
,
приписываются справа к информационной
части кода. В результате будет построена
кодовая комбинация
Обнаружение и исправление одиночной
ошибки. Проверка на наличие или
отсутствие ошибки и исправление ошибки
основана на свойстве систематического
кода, а именно – любая линейная комбинация
кодов, входящих в производящую матрицу
даёт также систематический код,
Следовательно, достаточно построить
алгоритм проверки для кодов производящей
матрицы. Используем каноническое
представлениепроизводящей матрицы. Введемпроверочнуюматрицу в виде канонической формы
, (5.12)
элементы которой
необходимо определить.
Применим правило: произведение любой
разрешённой неискажённой кодовой
комбинации на проверочную матрицу
должно быть равно кодовой комбинации
с нулевыми значениями.
Следовательно, произведение канонической формы производящей матрицы на проверочную матрицу равно нулевой матрице:
=.
(5.13)
Из
соотношения (5.13) следует, что
,
и каноническая форма проверочной матрицы
имеет вид
Составим систему линейных уравнений для проверки наличия ошибки в принятой реализации.
Положим,
- зарегистрированная кодовая комбинация.
Произведение зарегистрированной кодовой
комбинация
на проверочную матрицу
имеет вид
(5.14)
Получили систему линейных уравнений для исправления однократной ошибки.
Если в принятой кодовой комбинации нет
однократных ошибок, то вектор ошибок
равен нулю. Вектор
называетсясиндромом ошибки(совокупностью симптомов) Синдром
не равен нулю, если в кодовой комбинации
присутствуют ошибки.
Код однократной ошибки равен «1» в каком
либо разряде и «0» во всех остальных
.
Код ошибки суммируется по модулю 2 с
информационным символом и в результате
получается искажённая кодовая комбинация
или
,
или
, или
и тогда вектор ошибок
не равен нулю.
Из приведённой записи искажённых кодовых комбинаций ясно, что каждой ошибочной кодовой комбинации соответствует свой вектор ошибки. По этому признаку в приёмнике инвертируется определённый разряд в принятой кодовой комбинации.
Существует другой способ исправления однократных ошибок. Для каждой разрешённой кодовой комбинации записываются множество кодов с однократной ошибкой. Если произошла однократная ошибка, принятая кодовая комбинация принадлежит одному из множеств, соответствующей одной разрешённой кодовой комбинации. По этому множеству определяется истинное значение кодовой комбинации. Однако этот метод требует большого объёма памяти.
Пример 5.2.Положим необходимо
произвести кодирование пятиразрядных
двоичных кодов с исправлением однократной
ошибки, ().
Записать производящую матрицу
Из неравенства (5.6) определим необходимое число разрядов
и число проверочных символов
.
,
,
=
4.
2. Из неравенства (5.3) определяется минимальное кодовое расстояние
.
3. Определяются требования к проверочной
подматрице
канонической формы производящей матрицы
(5.10).
3.1 Число единиц в кодовых последовательностях,
входящих в подматрицу
должно быть не менее 2.
3.2 Кодовое расстояние между любыми двумя
кодовыми последовательностями, входящими
в подматрицу
,
должно быть не менее 1.
4. Выпишем все четырёхразрядные коды, удовлетворяющие условиям 3.1 и 3.2:
0011, 0101, 0110, 0111, 1001, 1010, 1011, 1100, 1101, 1110, 1111.
5. Информационная часть производящей
матрицы – единичная матрица размерности
[55].
Выберем произвольно пять кодов из пункта
4 и образуем каноническую формупроизводящей матрицы
.
6.
Всего можно образовать
пятиразрядных кода. Пять кодовых
комбинаций уже использовано, нулевая
комбинация известна. Остальные
комбинаций находятся как линейные
комбинации строк, входящих в производящую
матрицу. Например, возьмём 1-ю, 2-ю и 4-ю
строки производящей матрицы
и сложим их поразрядно по модулю 2.
Результат сложения записан в последнюю
строчку.
7.
Используя матрицу
,
запишем каноническую форму проверочной
матрицыX.
|

(5.15)
Таблица 5.1 |
| ||||||||
|
|
|
|
|
|
|
|
| |
0111 |
1010 |
1111 |
0011 |
1101 |
1000 |
0100 |
0010 |
0001 |


сложение по модулю 2, получим код 0111,
который соответствует синдрому
,
(Таблица 5.1). Точно также можно получить
синдромы ошибок для других символов
.
1 001=0 1001=0 11011=0 10100=0
|


9. Введём однократную ошибку
в вектор
-
.
Во всех проверочных уравнениях символ
изменяется на обратный символ. После
подстановки символов вектора
в систему проверочных уравнений получим
значение синдрома
= 1101.
1 011=1 1011=1 11011=0 10110=1 |


Число синдромов, не равных нулю, равно
числу разрядов принятой кодовой
комбинации. Синдромы для символов
кодовой комбинации
имеют вид, приведённый в таблице 5.1.
Указанные синдромы сохраняются для
любых кодовых комбинаций, полученных
по построенной производящей матрице.
Например, для кода
система проверочных уравнений примет вид
0 101 = 0,
0 101 = 0,
0 0101 = 0 ,
0 1001 = 0 .
Если произошла ошибка, скажем, в первом
разряде, получим код
.
Система проверочных уравнений примет
вид
0 101 = 0,
1 101 = 1,
1 0101 = 1,
1 1001 = 1.
Синдром
= 0111 для первого разряда не изменился с
изменением кодовой комбинации.С
изменением производящей матрицы
изменяются и синдромы.