SlideShare a Scribd company logo
1 of 12
Лабораторная работа № 3
Помехоустойчивое кодирования
Коды для обнаружения ошибок
Код с проверкой на четность. Такой код образуется путем
добавления к передаваемой комбинации, состоящей из k
информационных символов, одного контрольного символа (0 или 1),
так, чтобы общее число единиц в передаваемой комбинации было
четным.
Код с постоянным весом. Этот код содержит постоянное число
единиц и нулей.
Корреляционный код (код с удвоением). Элементы данного кода
заменяются двумя символами: 1 преобразуется в 10, а 0 – в 01
Инверсный код. К исходной комбинации добавляется такая же
комбинация по длине. В линию посылается удвоенное число
символов. Если в исходной комбинации четное число единиц, то
добавляемая комбинация повторяет исходную комбинацию, если
нечетное – то добавляемая комбинация является инверсной
относительно исходной.
Код Грея. Для перевода двоичного числа AnAn-1…A0 в код Грея anan-
1…a0 используются правила:
 an= An,
 ai= Ai, если Ai+1 = 0,
 ai= Ai ⊕ 1, если Ai+1 = 1.
Корректирующие коды
Корректирующими называются коды
позволяющие обнаруживать и исправлять ошибки.
Для построения корректирующих кодов
используется кодовое расстояние − минимальное
число элементов, в которых одна кодовая
комбинация отличается от другой. Для определения
кодового расстояния достаточно сложить две
кодовые комбинации по модулю 2 и подсчитать
число единиц в сумме.
Требуемое кодовое расстояние между двумя
различными комбинациями корректирующего кода
определяется по формуле d = t + l + 1, где t – число
исправляемых ошибок, l – число обнаруживаемых
ошибок (обычно l > t).
Циклические коды
Циклическими кодами называют
специальную группу кодов, для построения
которых могут быть использованы циклические
свойства квадратных матриц, а также коды,
которые описываются неприводимыми,
образующими (порождающими) многочленами
(полиномами).
Циклические коды относятся к
систематическим (n,k)-кодам, в которых
контрольные r и информационные k разряды
расположены на строго определенных местах (n
= k + r).
Полиномиальное представление
кодовой комбинации
P(x) = anxn
+ an-1xn-1
+ an-2xn-2
+ …+ a2x2
+ a1x + a0x,
где an, an-1, an-2, …, a2, a1, a0 – значения разрядов
кодовой комбинации с номерами
n, n–1, n–2, …, 2, 1, 0.
Например, P(x) = x5
+ x3
+ x2
+ 1 –
полиномиальное представление кодовой
комбинации 101101.
Построение циклических кодов
Кодовые комбинации при построении циклических
кодов рассматриваются как многочлены. Действия
над ними производятся также, как в обычной
алгебре, с заменой сложения и вычитания
операцией сложения по модулю 2.
Циклический (n,k)-код получают следующим
образом:
1. заданный многочлен h(х) умножается на одночлен
хn-k,
2. полученный многочлен делится на образующий
многочлен g(х),
3. полученный остаток суммируется с произведением
h(х)хn-k.
Построение циклических кодов
Для построения циклических кодов можно использовать
образующую (порождающую) матрицу Gk×n:
,
где
Rk×(n–k) – матрица остатков ri от деления полинома x2(n–k)–
i–1
на образующий многочлен g(x) для всех строк с
номерами i = 1, 2, …, k.
( ))( knkknk RIG −×× =
Обнаружение и исправление
ошибок
Для обнаружения ошибок можно
использовать проверочную матрицу
( )kn
T
knknkn IRH −−××− = )()(
Порядок выполнения лабораторной работы
1. Ознакомиться с основными сведениями по
помехоустойчивому кодированию.
2. Получить задание на выполнение лабораторной
работы.
3. Выполнить необходимые расчеты для выполнения
задания с помощью программы Microsoft Excel.
4. Написать и отладить программы для выполнения
задания на языке C++ в среде Microsoft Visual Studio.
5. Сделать выводы по результатам выполнения
лабораторной работы.
6. Оформить отчет о выполнении лабораторной работы.
7. Ответить на контрольные вопросы.
Контрольные вопросы
1. Назначение помехоустойчивых кодов?
2. Как строятся коды с проверкой на четность, с
удвоением, с постоянным весом, инверсные, Грея?
3. Какие коды называются корректирующими?
4. Что определяет минимальное кодовое расстояние?
5. Как определяются линейные коды?
6. Как определяются циклические коды?
7. Как выбирается образующий многочлен?
8. Как построить образующую и проверочную матрицы
циклического кода?
9. Как выполняются кодирование и декодирование
циклического кода?
10.Как выявляется и исправляется ошибка в циклическом
коде?
Задания на лабораторную работу
1. Определить исходные кодовые комбинации,
соответствующие заданному неприводимому
полиному из таблицы 2.
2. Построить циклические коды, соответствующие
исходным кодовым комбинациям.
3. Выполнить декодирование циклических кодов.
4. Внести ошибку в одну из кодовых комбинаций
циклического кода.
5. Выполнить декодирование циклического кода с
ошибкой.
6. Построить коды с проверкой на четность, с
удвоением, с постоянным весом, инверсные, Грея
для исходных кодовых комбинаций.
Таблица 2
Образующие полиномы
1. x+1
2. x2
+x+1
3. x3
+x+1
4. x3
+x2
+1
5. x4
+x+1
6. x4
+x3
+1
7. x4
+x3
+x2
+x+1
8. x5
+x2
+1
9. x5
+x3
+1
10. x5
+x3
+x4
+x+1
11.x5
+x4
+x2
+x+1
12.x5
+x4
+x3
+x+1
13.x5
+x4
+x3
+x2
+1
14.x6
+x+1
15.x6
+x3
+1
16.x6
+x5
+1
17.x7
+x+1
18.x7
+x3
+1
19.x7
+x3
+x2
+x+1
20.…

More Related Content

What's hot

Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на rubyEvgeny Smirnov
 
программирование на Maple. Лекция 1
программирование на Maple. Лекция 1программирование на Maple. Лекция 1
программирование на Maple. Лекция 1Andrei V, Zhuravlev
 
программирование на Maple. Лекция 2
программирование на Maple. Лекция 2программирование на Maple. Лекция 2
программирование на Maple. Лекция 2Andrei V, Zhuravlev
 
вывод алфавитно цифровой информации
вывод алфавитно цифровой информациивывод алфавитно цифровой информации
вывод алфавитно цифровой информацииLungu
 
04
0404
04JIuc
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмовAndrey Dolinin
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаTatyanazaxarova
 
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1DEVTYPE
 
Управляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условияУправляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условияEvgeny Smirnov
 
Лекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийЛекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийsimple_people
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...Iosif Itkin
 
лабораторная работа 4
лабораторная работа 4лабораторная работа 4
лабораторная работа 4Gulnaz Shakirova
 

What's hot (19)

8 3-4
8 3-48 3-4
8 3-4
 
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на ruby
 
программирование на Maple. Лекция 1
программирование на Maple. Лекция 1программирование на Maple. Лекция 1
программирование на Maple. Лекция 1
 
программирование на Maple. Лекция 2
программирование на Maple. Лекция 2программирование на Maple. Лекция 2
программирование на Maple. Лекция 2
 
вывод алфавитно цифровой информации
вывод алфавитно цифровой информациивывод алфавитно цифровой информации
вывод алфавитно цифровой информации
 
04
0404
04
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
 
8 3-5
8 3-58 3-5
8 3-5
 
8 3-3
8 3-38 3-3
8 3-3
 
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1
 
777
777777
777
 
Управляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условияУправляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условия
 
Лекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийЛекция 1 Скорость роста функций
Лекция 1 Скорость роста функций
 
лекция 16
лекция 16лекция 16
лекция 16
 
87
8787
87
 
C language. Introduction
C language. IntroductionC language. Introduction
C language. Introduction
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
 
лабораторная работа 4
лабораторная работа 4лабораторная работа 4
лабораторная работа 4
 

Similar to лабораторная работа 3

Линейные коды
Линейные кодыЛинейные коды
Линейные кодыAlex Dainiak
 
коды хемминга
коды хеммингакоды хемминга
коды хеммингаYuliyaGridneva
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаTatyanazaxarova
 
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2Gulnaz Shakirova
 
Циклические коды. Граница БЧХ
Циклические коды. Граница БЧХЦиклические коды. Граница БЧХ
Циклические коды. Граница БЧХAlex Dainiak
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисленияjula-mam
 
курсовой проект
курсовой проекткурсовой проект
курсовой проектGulnaz Shakirova
 
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информацииryabuha
 
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информацииryabuha
 
Помехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические кодыПомехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические кодыnauryzbaevr
 
лекция 4 системы счисления информатика
лекция 4 системы счисления информатикалекция 4 системы счисления информатика
лекция 4 системы счисления информатикаGulnaz Shakirova
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Sergey Vasilyev
 

Similar to лабораторная работа 3 (20)

лекция 13
лекция 13лекция 13
лекция 13
 
лекция 14
лекция 14лекция 14
лекция 14
 
лекция 14
лекция 14лекция 14
лекция 14
 
Линейные коды
Линейные кодыЛинейные коды
Линейные коды
 
коды хемминга
коды хеммингакоды хемминга
коды хемминга
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
 
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2
 
Циклические коды. Граница БЧХ
Циклические коды. Граница БЧХЦиклические коды. Граница БЧХ
Циклические коды. Граница БЧХ
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисления
 
курсовой проект
курсовой проекткурсовой проект
курсовой проект
 
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информации
 
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информации
 
23
2323
23
 
Test
TestTest
Test
 
Помехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические кодыПомехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические коды
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
лекция 4 системы счисления информатика
лекция 4 системы счисления информатикалекция 4 системы счисления информатика
лекция 4 системы счисления информатика
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...
 

More from Gulnaz Shakirova (20)

лекция1
лекция1лекция1
лекция1
 
слайды курса
слайды курсаслайды курса
слайды курса
 
зис презентация метод реком по практике
зис презентация метод реком по практикезис презентация метод реком по практике
зис презентация метод реком по практике
 
зис презентация метод реком по практике
зис презентация метод реком по практикезис презентация метод реком по практике
зис презентация метод реком по практике
 
лекция 17
лекция 17лекция 17
лекция 17
 
лекция 16
лекция 16лекция 16
лекция 16
 
лекция 15
лекция 15лекция 15
лекция 15
 
лекция 14
лекция 14лекция 14
лекция 14
 
лекция 13
лекция 13лекция 13
лекция 13
 
лекция 12
лекция 12лекция 12
лекция 12
 
лекция 11
лекция 11лекция 11
лекция 11
 
лекция 10
лекция 10лекция 10
лекция 10
 
лекция 9
лекция 9лекция 9
лекция 9
 
лекция 8
лекция 8лекция 8
лекция 8
 
лекция 8
лекция 8лекция 8
лекция 8
 
лекция 8
лекция 8лекция 8
лекция 8
 
лекция 7
лекция 7лекция 7
лекция 7
 
лекция 6
лекция 6лекция 6
лекция 6
 
лекция 5
лекция 5лекция 5
лекция 5
 
лекция 4
лекция 4лекция 4
лекция 4
 

лабораторная работа 3

  • 1. Лабораторная работа № 3 Помехоустойчивое кодирования
  • 2. Коды для обнаружения ошибок Код с проверкой на четность. Такой код образуется путем добавления к передаваемой комбинации, состоящей из k информационных символов, одного контрольного символа (0 или 1), так, чтобы общее число единиц в передаваемой комбинации было четным. Код с постоянным весом. Этот код содержит постоянное число единиц и нулей. Корреляционный код (код с удвоением). Элементы данного кода заменяются двумя символами: 1 преобразуется в 10, а 0 – в 01 Инверсный код. К исходной комбинации добавляется такая же комбинация по длине. В линию посылается удвоенное число символов. Если в исходной комбинации четное число единиц, то добавляемая комбинация повторяет исходную комбинацию, если нечетное – то добавляемая комбинация является инверсной относительно исходной. Код Грея. Для перевода двоичного числа AnAn-1…A0 в код Грея anan- 1…a0 используются правила:  an= An,  ai= Ai, если Ai+1 = 0,  ai= Ai ⊕ 1, если Ai+1 = 1.
  • 3. Корректирующие коды Корректирующими называются коды позволяющие обнаруживать и исправлять ошибки. Для построения корректирующих кодов используется кодовое расстояние − минимальное число элементов, в которых одна кодовая комбинация отличается от другой. Для определения кодового расстояния достаточно сложить две кодовые комбинации по модулю 2 и подсчитать число единиц в сумме. Требуемое кодовое расстояние между двумя различными комбинациями корректирующего кода определяется по формуле d = t + l + 1, где t – число исправляемых ошибок, l – число обнаруживаемых ошибок (обычно l > t).
  • 4. Циклические коды Циклическими кодами называют специальную группу кодов, для построения которых могут быть использованы циклические свойства квадратных матриц, а также коды, которые описываются неприводимыми, образующими (порождающими) многочленами (полиномами). Циклические коды относятся к систематическим (n,k)-кодам, в которых контрольные r и информационные k разряды расположены на строго определенных местах (n = k + r).
  • 5. Полиномиальное представление кодовой комбинации P(x) = anxn + an-1xn-1 + an-2xn-2 + …+ a2x2 + a1x + a0x, где an, an-1, an-2, …, a2, a1, a0 – значения разрядов кодовой комбинации с номерами n, n–1, n–2, …, 2, 1, 0. Например, P(x) = x5 + x3 + x2 + 1 – полиномиальное представление кодовой комбинации 101101.
  • 6. Построение циклических кодов Кодовые комбинации при построении циклических кодов рассматриваются как многочлены. Действия над ними производятся также, как в обычной алгебре, с заменой сложения и вычитания операцией сложения по модулю 2. Циклический (n,k)-код получают следующим образом: 1. заданный многочлен h(х) умножается на одночлен хn-k, 2. полученный многочлен делится на образующий многочлен g(х), 3. полученный остаток суммируется с произведением h(х)хn-k.
  • 7. Построение циклических кодов Для построения циклических кодов можно использовать образующую (порождающую) матрицу Gk×n: , где Rk×(n–k) – матрица остатков ri от деления полинома x2(n–k)– i–1 на образующий многочлен g(x) для всех строк с номерами i = 1, 2, …, k. ( ))( knkknk RIG −×× =
  • 8. Обнаружение и исправление ошибок Для обнаружения ошибок можно использовать проверочную матрицу ( )kn T knknkn IRH −−××− = )()(
  • 9. Порядок выполнения лабораторной работы 1. Ознакомиться с основными сведениями по помехоустойчивому кодированию. 2. Получить задание на выполнение лабораторной работы. 3. Выполнить необходимые расчеты для выполнения задания с помощью программы Microsoft Excel. 4. Написать и отладить программы для выполнения задания на языке C++ в среде Microsoft Visual Studio. 5. Сделать выводы по результатам выполнения лабораторной работы. 6. Оформить отчет о выполнении лабораторной работы. 7. Ответить на контрольные вопросы.
  • 10. Контрольные вопросы 1. Назначение помехоустойчивых кодов? 2. Как строятся коды с проверкой на четность, с удвоением, с постоянным весом, инверсные, Грея? 3. Какие коды называются корректирующими? 4. Что определяет минимальное кодовое расстояние? 5. Как определяются линейные коды? 6. Как определяются циклические коды? 7. Как выбирается образующий многочлен? 8. Как построить образующую и проверочную матрицы циклического кода? 9. Как выполняются кодирование и декодирование циклического кода? 10.Как выявляется и исправляется ошибка в циклическом коде?
  • 11. Задания на лабораторную работу 1. Определить исходные кодовые комбинации, соответствующие заданному неприводимому полиному из таблицы 2. 2. Построить циклические коды, соответствующие исходным кодовым комбинациям. 3. Выполнить декодирование циклических кодов. 4. Внести ошибку в одну из кодовых комбинаций циклического кода. 5. Выполнить декодирование циклического кода с ошибкой. 6. Построить коды с проверкой на четность, с удвоением, с постоянным весом, инверсные, Грея для исходных кодовых комбинаций.
  • 12. Таблица 2 Образующие полиномы 1. x+1 2. x2 +x+1 3. x3 +x+1 4. x3 +x2 +1 5. x4 +x+1 6. x4 +x3 +1 7. x4 +x3 +x2 +x+1 8. x5 +x2 +1 9. x5 +x3 +1 10. x5 +x3 +x4 +x+1 11.x5 +x4 +x2 +x+1 12.x5 +x4 +x3 +x+1 13.x5 +x4 +x3 +x2 +1 14.x6 +x+1 15.x6 +x3 +1 16.x6 +x5 +1 17.x7 +x+1 18.x7 +x3 +1 19.x7 +x3 +x2 +x+1 20.…