ݺߣ

ݺߣShare a Scribd company logo
Лабораторная работа № 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 (19)

8 3-4
8 3-48 3-4
8 3-4
natanikonenko19
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на ruby
Evgeny Smirnov
программирование на Maple. Лекция 1
программирование на Maple. Лекция 1программирование на Maple. Лекция 1
программирование на Maple. Лекция 1
Andrei V, Zhuravlev
программирование на Maple. Лекция 2
программирование на Maple. Лекция 2программирование на Maple. Лекция 2
программирование на Maple. Лекция 2
Andrei V, Zhuravlev
вывод алфавитно цифровой информации
вывод алфавитно цифровой информациивывод алфавитно цифровой информации
вывод алфавитно цифровой информации
Lungu
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
Andrey Dolinin
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
Tatyanazaxarova
8 3-5
8 3-58 3-5
8 3-5
natanikonenko19
8 3-3
8 3-38 3-3
8 3-3
natanikonenko19
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1
DEVTYPE
777
777777
777
ssusera868ff
Управляющие структуры в 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
лабораторная работа 4
Gulnaz Shakirova
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на ruby
Evgeny Smirnov
программирование на Maple. Лекция 1
программирование на Maple. Лекция 1программирование на Maple. Лекция 1
программирование на Maple. Лекция 1
Andrei V, Zhuravlev
программирование на Maple. Лекция 2
программирование на Maple. Лекция 2программирование на Maple. Лекция 2
программирование на Maple. Лекция 2
Andrei V, Zhuravlev
вывод алфавитно цифровой информации
вывод алфавитно цифровой информациивывод алфавитно цифровой информации
вывод алфавитно цифровой информации
Lungu
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
Andrey Dolinin
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
Tatyanazaxarova
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1
DEVTYPE
Управляющие структуры в 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
лабораторная работа 4
Gulnaz Shakirova

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

Линейные коды
Линейные кодыЛинейные коды
Линейные коды
Alex Dainiak
ntroduction to Information System22.pptx
ntroduction to Information System22.pptxntroduction to Information System22.pptx
ntroduction to Information System22.pptx
gulshatbgb2
Lk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.ppt
Lk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.ppt
Lk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.ppt
milanaorucova
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
milanaorucova
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
Tatyanazaxarova
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2
Gulnaz Shakirova
Циклические коды. Граница БЧХ
Циклические коды. Граница БЧХЦиклические коды. Граница БЧХ
Циклические коды. Граница БЧХ
Alex Dainiak
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисления
jula-mam
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информации
ryabuha
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информации
ryabuha
23
2323
23
ssusera868ff
Помехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические кодыПомехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические коды
nauryzbaevr
Линейные коды
Линейные кодыЛинейные коды
Линейные коды
Alex Dainiak
ntroduction to Information System22.pptx
ntroduction to Information System22.pptxntroduction to Information System22.pptx
ntroduction to Information System22.pptx
gulshatbgb2
Lk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.ppt
Lk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.ppt
Lk7.pptLk7.pptLk7.pptLk7.pptLk7.pptLk7.ppt
milanaorucova
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
milanaorucova
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
Tatyanazaxarova
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2
Gulnaz Shakirova
Циклические коды. Граница БЧХ
Циклические коды. Граница БЧХЦиклические коды. Граница БЧХ
Циклические коды. Граница БЧХ
Alex Dainiak
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисления
jula-mam
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информации
ryabuha
Кодирование информации
Кодирование информацииКодирование информации
Кодирование информации
ryabuha
Помехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические кодыПомехоустойчивое кодирование - Циклические коды
Помехоустойчивое кодирование - Циклические коды
nauryzbaevr

More from Gulnaz Shakirova (20)

лабораторная работа 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.…