- •Основные параметры помехоустойчивых кодов.
- •Коды с общей проверкой на чётность и коды с повторениями: их корректирующие способности, описание с помощью матриц, алгоритмы кодирования и декодирования.
- •Итеративные прямоугольные и треугольные коды: их корректирующие способности, описание с помощью матриц, алгоритмы кодирования и декодирования.
- •Группы и их основные свойства. Смежные классы.
- •Поле Галуа. Свойства конечных полей.
- •Расширенное поле Галуа. Вычисления в конечных полях.
- •Неравномерные эффективные коды. Проблема декодирования. Вектор Крафта.
- •Основные информационные характеристики источника сообщений. Коды Шеннона—Фано.
- •Сжатие информации кодами Хаффмана.
- •Алгоритм арифметического кодирования информации, пример.
- •Алгоритм арифметического декодирования информации, пример.
- •Словарные методы кодирования. Метод Зива—Лемпела.
- •17) Общие сведения о линейных кодах.
- •18) Описание линейных блоковых кодов при помощи матриц: формирование проверочной матрицы и порождающей матрицы.
- •19) Декодирование линейных кодов: декодирование методом максимального правдоподобия.
- •20) Декодирование кодов Хэмминга. Понятие синдрома
- •21) Декодирование линейных кодов: мажоритарное декодирование.
- •22) Коды Хэмминга, модификации кодов, формирование.
- •23) Декодирование кодов Хэмминга, области применения данных кодов.
- •24) Описание циклических кодов с помощью матриц.
- •25) Декодирование циклических кодов.
- •26) Описание циклических кодов с помощью полиномов.
- •27) Кодирование информации циклическими кодами.
- •28) Параметры и построение кодов Рида–Маллера.
17) Общие сведения о линейных кодах.
Код называется групповым (линейным), если кодовые комбинации образуют некоторую подгруппу группы всех последовательностей длиной n.
Если передаваемые сообщения представляют собой k-разрядные двоичные числа, то групповой код всегда может быть построен таким образом, что эти сообщения будут являться первыми k символами кода. Код, построенный таким образом, обозначается (n; k); иногда код обозначается как (n; k; d). Первое число в скобках показывает общее число символов в коде (длину кода), второе – число информационных символов, третье – кодовое расстояние кода. Оставшиеся r=n-k символов называются проверочными. В групповых кодах проверочные символы образуются путем суммирования по модулю два символов, стоящих на определенных позициях кодового слова. Поскольку операция суммирования по модулю два является линейной, то коды, образованные таким образом, называются линейными.
Линейные коды бывают систематическими (разделенными) и несистематическими (неразделенными). Если известно местоположение (безразлично, на каких позициях они расположены) проверочных и информационных разрядов, то такой код называют разделенным. В несистематических кодах все символы являются кодовыми символами. Как правило, коды, используемые в цифровой обработке сигналов, являются неразделенными. Нелинейные коды отличаются от линейных кодов тем, что для них не выполняется одна или ряд аксиом группы.
18) Описание линейных блоковых кодов при помощи матриц: формирование проверочной матрицы и порождающей матрицы.
Линейные коды задаются с помощью порождающей G и проверочной H матриц. Эти матрицы связаны основным уравнением кодирования:
G*HT=0
Наиболее удобным и наглядным способом описания линейных блочных кодов
является их задание с использованием порождающей матрицы, являющейся компактной
формой представления системы проверочных уравнений:
1 0 0 … 0 | P00 P01 . . . . P0, n- k- 1
G = 0 1 0 … 0 | P10 P11 . . . . P1, n- k- 1
……… | ……………… .
0 0 0 … 1 | Pk- 1, 0 Pk- 1, 1 . . . . Pk- 1, n- k- 1
единичная матрица | k*k матрица Р k*(n- k)
Линейный блочный систематический (n,k)-код полностью определяется матрицей
G размером k*n с двоичными матричными элементами. При этом каждое кодовое слово
является линейной комбинацией строк матрицы G, а каждая линейная комбинация строк
G - кодовым словом.
Матрицу G можно привести к так называемому приведенно-ступенчатому виду:
G= [Ik;G*] = [Ik;H*T] |k
----n-------
где Ik – единичная подматрица размерностью k.
Пусть m = (m0 , m1 ,. . . , mk -1) будет тем блоком-сообщением, который необходимо
закодировать с использованием данного кода.
Тогда соответствующим ему кодовым словом U будет U = m*G .
С учетом структуры матрицы G символы кодового слова U будут такими:
для i = 0, 1, 2,. . . , k- 1
Ui = mi ;
для i = k, k+1,. . . , n
Ui = m0⋅ P0j + m1⋅ P1j + m2⋅ P2j +…+ mk- 1⋅ Pk- 1, j .
Иными словами, k крайних левых символов кодового слова совпадает с символами
кодируемой информационной последовательности, а остальные (n-к=r) символов
являются линейными комбинациями символов информационной последовательности.
Определенный таким образом код называется линейным блочным систематическим (n,k)-кодом с обобщенными проверками на четность, а задающая его матрица G называется порождающей матрицей кода.
При умножении Ak на G* в приведенно-ступенчатом виде на первых k позициях будет расположен без изменения информационный вектор Ak, так как при умножении какого-либо вектора на единичную матрицу этот вектор не изменяется. i-я проверочная позиция находится из информационных по i-му столбцу подматрицы G* или в вычислении i-го проверочного символа участвуют те информационные символы, которым соответствуют единицы в i-й строке матрицы H.
Линейный систематический блочный код может быть определен также с использованием так называемой проверочной матрицы H, обладающей следующим свойством:
- если некоторая последовательность U является кодовым словом, то U*HT = 0.
Другими словами, проверочная матрица H ортогональна любой кодовой последовательности данного кода.
Проверочная матрица имеет размерность (n-k)*n и следующую структуру :
| P00 P10 … Pk-1, 0 | 1 0 0 … 0
| P01 P11 … Pk-1, 1 | 0 1 0 … 0
H = |P22 P12 … Pk-1, 2 | 0 0 1 … 0
| … … … … | … … … … …
| P0, n-k-1 P1, n-k-1 … Pk-1, n-k-1 | 0 0 0 … 1
P T | I1 (n-k)*(n-k)
где PT - транспонированная подматрица P из порождающей матрицы G ;
I1(n-k)*(n-k) - единичная матрица соответствующего размера.
Исходя из основного уравнения кодирования, проверочная матрица имеет вид
H=[H*;Ir]=[G*T;Ir] |r
-------n------