Курсовая работа: Кодирование информации Код Рида-Малера

Курсовая работа: Кодирование информации Код Рида-Малера




👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Министерство образования и науки Украины
на тему "Кодирование информации. Код Рида-Малера "
по курсу "Кодирование и защита информации"
Целью настоящей работы является закрепление знаний, получаемых в процессе изучения дисциплины, приобретение необходимых практических навыков применения методов кодирования информации. В данной курсовой работе рассматривается кодирование информации методом Рида-Малера. Код Рида-Малера относится к избыточным кодам. Заданием на данную работу было разработать алгоритм и программу кодирования и декодирования данных кодом Рида-Малера (16,11).
Избыточные коды – одно из наиболее эффективных средств обеспечения высокой достоверности передаваемых и принимаемых сообщений.
Избыточные коды могут применяться с целью либо только обнаружения возможных ошибок, либо исправления обнаруженных ошибок. Во всех случаях желательно достичь максимальной корректирующей способности. Но в зависимости от конкретного построения кода его способность к исправлению тех или иных ошибок может изменяться в широких пределах.
При некоторых значениях n и kможет быть найдено такое удачное построение кода, при котором веса всех разрешенных ненулевых комбинаций мало отличаются друг от друга и от половины максимально возможного веса. При других значениях n и kможет оказаться, что для некоторой малой части кодовых комбинаций из их общего числа расстояние оказывается существенно меньшим, чем для большинства других. Поэтому при рассмотрении характеристик кодов можно обнаружить, что близкие по избыточности и числу разрядов коды резко отличаются друг от друга по своей корректирующей способности.
В кодах с одной проверкой на четность содержится всего один проверочный символ. Этот символ выбирается таким, чтобы его сумма по модулю два со всеми информационными символами равнялась нулю. Благодаря такому способу выбора проверочного символа кодовая комбинация содержит четное число единиц. И следовательно признаком искажения кодовой комбинации является нечетность единиц в принятой комбинации. Данный код позволяет только обнаруживать однократные ошибки и все ошибки нечетной кратности.
В кодах с простым повторением положе метод повторения исходной кодовой комбинации. На приемной стороне комбинация складывается с исходной и при нулевой сумме комбинация принимается. Этот код позволяет обнаруживать ошибки, за исключением ошибок в парных элементах.
Корелляционный код. Удваиваются символы, при этом если в разряде информационной части стоит 0, то он заменяется на 01, а 1 – на 10. Сигналом ошибки является появление 00 или 11.
В инверсном коде используется повторение исходной комбинации следующим образом: если комбинация содержит нечетное число единиц, то вместо 1 ставится 0, а всесто 0 – 1. Если четное число единиц, то она удваивается без инверсии. На приемной стороне подсчитывается число единиц и, если оно четно, то вторая половинка инвертируется и складывается с первой. Если же число единиц четно, то вторая складывается с первой и должен получиться 0.
Коды Рида-Малера – это блоковые коды, которые строятся следующим образом:
m-положительное, условное число не меньше 3
s-порядок кода, который всегда меньше, чем m.
Т.е. в зависимости от порядка при одном и том же m можно получить разные коды.
Построение кодов Рида-Маллера сводится к следующему.
В начале строится производящая матрица G, первая строка которой содержит n единиц. Далее следует m строк, совокупность которых удобно рассматривать как (m*n) –матрицу, в качестве столбцов которой выбраны двоичные числа (начиная с нуля). Номера разрядов двоичных чисел удобно считать сверху вниз. Эти m строк определяют векторы первого порядка d. Далее идут строки векторов второго порядка, которые получаются из всех произведений двух строк первого порядка, затем - строки третьего порядка, являющиеся всеми произведениями трех строк первого порядка и т д.
Для кодирования определяется общее число символов в блоке через информационные символы, суммируя ненулевые позиции соответствующего столбика, образующей матрицы. Единицы в столбцах матрицы G показывают, какие именно информационные символы Uk определяют значение символов Uiкодового слова.
Декодирование осуществляется по мажоритарному принципу или принципу большинства.
Декодирование осуществляется вначале для всех информационных символов (кроме 1-го) на основе так называемых парных компонентов. Начинать запись таких уравнений надо с векторов максимального порядка.
В нашем примере s=2=> первым выписывается U k
5
.
Для векторов 2-го порядка парными считаются компоненты:
На втором уровне сочетаний каждый 0 соединяется с каждой 1 попарно. Теперь в проверяемое равенство выписываются все объединенные позиции 1-го и 2-го уровней.
При декодировании с помощью векторов 1-го порядка мы также точно пользуемся парными компонентами, но поскольку здесь 1-ый уровень, то мы объединяем просто 0 и 1, стоящую на соответствующих позициях, и, во-вторых, при декодировании в полученных уравнениях используют не исходное, а преобразованное уравнение, которое получается путем сложения по модулю два исходного уравнения и векторов 2-го порядка, (потому что матрица имеет 2-ой порядок),
После этого еще раз преобразуют исходное выражение: к полученному преобразованному выражению прибавляем векторы 1-го порядка, которые содержат единицу в соответствующем информационном разряде.
Если в полученном выражении получили все 1, то значит U k
1
=1, а если все 0, то U k
1
=0.
Если при передаче произошли искажения, то вычисляемый символ по каждой системе проверок выбирается по мажоритарному принципу, в том числе и для символа U k
1
.
В качестве тестового примера использовалась комбинация 11001010000.
В задании к курсовому проекту указано, что n=16, а k=11. Таким образом получили образующую матрицу, которая имеет следующий вид:
Построение матрицы реализовано программно для заданных n и k.
После кодирования исходной комбинации 11001010000 по полученной образующей матрице получили комбинацию1010111101010000. При этом мы суммируем те разряды исходной комбинации, на соответствующих позициях которых, в рассматриваемом столбце образующей матрицы, стоят единицы. Например, возьмем четвертый столбец. Единицы имеются в разрядах 1,2,3,6. При суммировании этих разрядов получим 0. То есть в закодированной комбинации в четвертом разряде получили 0:
Декодирование осуществляется по мажоритарному признаку, то есть при декодировании каждый разряд комбинации проверяется несколькими уравнениями. Благодаря этому можно избежать ошибок при передаче. Даже если в каком-либо разряде ошибка, она поменяет результат только одного уравнения. А в остальных результат останется тот же.
В ходе курсовой работы был исследован простой помехоустойчивый код, а именно код Рида-Малера. Данный код обнаруживает ошибки, но не исправляет их. Рассматривался случай, когда n=16, k=11, поэтому в матрице присутствуют только вектора первого и второго порядка. Однако если появится необходимость использовать также вектора третьего порядка, то образующая матрица станет значительно больше, что не выгодно с точки зрения экономии памяти. При этом также увеличится длина закодированной комбинации, что увеличит время передачи сообщения по каналу связи.
1. Березюк Н.Т. «Кодирование Информации» - 1978.
2. Конспект лекций по дисциплине «Кодирование и защита информации».
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
else { StringGrid1->Cells[i][3]=1; }
{ k1=StringGrid1->Cells[i][b].ToInt();
j++; k2=StringGrid1->Cells[i][j].ToInt(); j--;
{ k1=StringGrid1->Cells[i][b].ToInt(); j++;
k2=StringGrid1->Cells[i][j].ToInt(); j--;
{ k1=StringGrid1->Cells[i][b].ToInt(); j++;
k2=StringGrid1->Cells[i][j].ToInt(); j--;
Memo1->Lines->Add("U4=Uk1+Uk2+Uk3+Uk6");
Memo1->Lines->Add("U6=Uk1+Uk2+Uk4+Uk7");
Memo1->Lines->Add("U7=Uk1+Uk3+Uk4+Uk9");
Memo1->Lines->Add("U8=Uk1+Uk2+Uk3+Uk4+Uk6+Uk7+Uk9");
Memo1->Lines->Add("U10=Uk1+Uk2+Uk5+Uk8");
Memo1->Lines->Add("U11=Uk1+Uk3+Uk5+Uk10");
Memo1->Lines->Add("U12=Uk1+Uk2+Uk3+Uk5+Uk6+Uk8+Uk10");
Memo1->Lines->Add("U13=Uk1+Uk4+Uk5+Uk11");
Memo1->Lines->Add("U14=Uk1+Uk2+Uk4+Uk5+Uk7+Uk8+Uk11");
Memo1->Lines->Add("U15=Uk1+Uk3+Uk4+Uk5+Uk9+Uk10+Uk11");
Memo1->Lines->Add("U16=Uk1+Uk2+Uk3+Uk4+Uk5+Uk6+Uk7+Uk8+Uk9+Uk10+Uk11");}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
int l2[16]; int edin1=0,edin2=0,edin3=0,edin4=0,edin5=0,edin6=0;
{ l1[i]=StringGrid2->Cells[i][0].ToInt(); }
perem[0]=l1[0]+l1[4]+l1[8]+l1[12]; perem[1]=l1[1]+l1[5]+l1[9]+l1[13];
perem[2]=l1[2]+l1[6]+l1[10]+l1[14];perem[3]=l1[3]+l1[7]+l1[11]+l1[15];
{ StringGrid3->Cells[10][0]=1; edin1=10; }
perem[0]=l1[0]+l1[2]+l1[8]+l1[10]; perem[1]=l1[1]+l1[3]+l1[9]+l1[11];
perem[2]=l1[4]+l1[6]+l1[12]+l1[14]; perem[3]=l1[5]+l1[7]+l1[13]+l1[15];
{ StringGrid3->Cells[9][0]=1; edin2=9; }
perem[0]=l1[0]+l1[2]+l1[4]+l1[6]; perem[1]=l1[1]+l1[3]+l1[5]+l1[7];
perem[2]=l1[8]+l1[10]+l1[12]+l1[14]; perem[3]=l1[9]+l1[11]+l1[13]+l1[15];
{ StringGrid3->Cells[8][0]=1; edin3=8; }
perem[0]=l1[0]+l1[1]+l1[8]+l1[9]; perem[1]=l1[2]+l1[3]+l1[10]+l1[11];
perem[2]=l1[4]+l1[5]+l1[12]+l1[13]; perem[3]=l1[6]+l1[7]+l1[14]+l1[15];
{ StringGrid3->Cells[7][0]=1; edin4=7; }
perem[0]=l1[0]+l1[1]+l1[4]+l1[5]; perem[1]=l1[2]+l1[3]+l1[6]+l1[7];
perem[2]=l1[8]+l1[9]+l1[12]+l1[13]; perem[3]=l1[10]+l1[11]+l1[14]+l1[15];
{ StringGrid3->Cells[6][0]=1; edin5=6; }
perem[0]=l1[0]+l1[1]+l1[2]+l1[3]; perem[1]=l1[4]+l1[5]+l1[6]+l1[7];
perem[2]=l1[8]+l1[9]+l1[10]+l1[11]; perem[3]=l1[12]+l1[13]+l1[14]+l1[15];
{ StringGrid3->Cells[5][0]=1; edin6=5; }
{ l1[i]=l1[i]+StringGrid1->Cells[i][10].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][9].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][8].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][7].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][6].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][5].ToInt(); }
{ if (l1[i]==1||l1[i]==3||l1[i]==5||l1[i]==7)
//-----------------------------------
int edin7=0,edin8=0,edin9=0,edin10=0;
perem1[0]=l1[0]+l1[8]; perem1[1]=l1[1]+l1[9];
perem1[2]=l1[2]+l1[10]; perem1[3]=l1[3]+l1[11];
perem1[4]=l1[4]+l1[12]; perem1[5]=l1[5]+l1[13];
perem1[6]=l1[6]+l1[14]; perem1[7]=l1[7]+l1[15];
{ if (perem1[i]==1||perem1[i]==3||perem1[i]==5||perem1[i]==7)
{ StringGrid3->Cells[4][0]=1; edin7=6; }
perem1[0]=l1[0]+l1[4]; perem1[1]=l1[1]+l1[5];
perem1[2]=l1[2]+l1[6]; perem1[3]=l1[3]+l1[7];
perem1[4]=l1[8]+l1[12]; perem1[5]=l1[9]+l1[13];
perem1[6]=l1[10]+l1[14]; perem1[7]=l1[11]+l1[15];
{ if (perem1[i]==1||perem1[i]==3||perem1[i]==5||perem1[i]==7)
{ StringGrid3->Cells[3][0]=1; edin8=7; }
//----------------------------------
perem1[0]=l1[0]+l1[2]; perem1[1]=l1[1]+l1[3];
perem1[2]=l1[4]+l1[6]; perem1[3]=l1[5]+l1[7];
perem1[4]=l1[8]+l1[10]; perem1[5]=l1[9]+l1[11];
perem1[6]=l1[12]+l1[14]; perem1[7]=l1[13]+l1[15];
{ if (perem1[i]==1||perem1[i]==3||perem1[i]==5||perem1[i]==7)
{ StringGrid3->Cells[2][0]=1; edin9=8; }
perem1[0]=l1[0]+l1[1]; perem1[1]=l1[2]+l1[3];
perem1[2]=l1[4]+l1[5]; perem1[3]=l1[6]+l1[7];
perem1[4]=l1[8]+l1[9]; perem1[5]=l1[10]+l1[11];
perem1[6]=l1[12]+l1[13]; perem1[7]=l1[14]+l1[15];
{ if (perem1[i]==1||perem1[i]==3||perem1[i]==5||perem1[i]==7)
{ StringGrid3->Cells[1][0]=1; edin10=9; }
{ l1[i]=l1[i]+StringGrid1->Cells[i][4].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][3].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][2].ToInt(); }
{ l1[i]=l1[i]+StringGrid1->Cells[i][1].ToInt(); }
{ if (l1[i]==1||l1[i]==3||l1[i]==5)
//---------------------------------------------------------------------------

Название: Кодирование информации Код Рида-Малера
Раздел: Рефераты по информатике
Тип: курсовая работа
Добавлен 15:20:26 27 ноября 2010 Похожие работы
Просмотров: 257
Комментариев: 16
Оценило: 2 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Курсовая работа: Кодирование информации Код Рида-Малера
Реферат На Тему Особенности Современной Системы Обучения И Управления Кадрами
Реферат по теме Развитие внешне-экономических связей Республики Беларусь со странами СНГ и дальнего зарубежья в усло...
Реферат: Мышление как познавательный процесс
Реферат На Тему Гиподинамия
Контрольная работа по теме Развитие мелкой и общей моторики у детей с ТНР
Дипломная работа: Роль бюджета в финансовом обеспечении экономического и социального развития региона
Курсовая работа: Обработка почвы при выполнении полевых работ
Реферат: Структура мови
Реферат: Автомобильная промышленность Австралии
Цель Контрольных Работ В Начальной Школе
Реферат: Yellow Wallpaper Essay Research Paper The Yellow 2
Контрольная работа по теме Субъект преступления
Дипломная работа по теме Антикризисное управление в кредитных организациях
Эссе Жазу Әдісі
Реферат по теме Нейронные сети как инструмент интеллектуального моделирования
Учебное Пособие На Тему Алгоритм Решения Диофантовых Уравнений
Сроки Предъявления Исполнительных Документов К Исполнению Курсовая
Курсовая работа по теме Арабская фармация и алхимия эпохи Средневековья
Сочинение: Обличение мещанства и пошлости в рассказе А. П. Чехова Ионыч
Курсовая работа по теме Формирование пространственных представлений у детей старшего дошкольного возраста как условие предупреждения дисграфии
Курсовая работа: Пользуетесь ли вы законом о защите прав потребителя
Курсовая работа: Теория возникновения, сущность и эволюция денег
Реферат: Проявления анемий, лейкозов и геморрагических диатезов в полости рта детей. Особенности оказания стоматологической помощи

Report Page