Отчет к курсовой работе «Циклический код в матричном виде»




Скачать 96.06 Kb.
НазваниеОтчет к курсовой работе «Циклический код в матричном виде»
Дата публикации02.07.2013
Размер96.06 Kb.
ТипОтчет
odtdocs.ru > Информатика > Отчет
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение

высшего профессионального образования

Московский государственный институт электроники и математики

(Технический университет)

Кафедра ИКТ


ОТЧЕТ К КУРСОВОЙ РАБОТЕ

«Циклический код в матричном виде»

Выполнил:

Клюев А.А., группа С-65

Проверила:

Гоманилова Н.Б.

Москва 2011

Оглавление


Оглавление..........................................................................................................................................2

Теоретическая часть...........................................................................................................................3

Пример кода........................................................................................................................................4

Пример работы программы.............................................................................................................10

Инструкция по использованию.......................................................................................................12

Вывод.................................................................................................................................................13

Список литературы...........................................................................................................................14
^

Теоретическая часть

Методы построения циклических кодов.


Могут быть построены различными способами:

1) В основе циклических кодов лежит положение о том, что любая разрешённая комбинация этого кода всегда должна делиться на порождающий полином без остатка. Исходя из этого положения получить все разрешённые комбинации циклического кода зная информационную часть очень просто. А именно: надо каждую информационную часть умножить на порождающий полином. При этом мы получим все разрешённые кодовые комбинации. К сожалению полученный таким способом код не является систематическим т.е. в комбинации этого кода нельзя выделить информационные и контрольные разряды. При декодировании в таком коде необходимо производить дополнительную операцию деления на P(x), чтобы выделить информационную часть.

В этом заключается основной недостаток данного способа построения.

2) Разрешённые комбинации кода можно легко получить используя вышерассмотренное выражение для кодирования:



3) Как и большинство кодов циклические коды могут быть представлены в матричном виде:

Порождающая матрица циклического кода как и для других кодов состоит из единичной матрицы (подматрицы) и контрольной подматрицы Ckm . В циклических кодах в качестве информационной части принято использовать единичную транспонированную матрицу E_m^T (хотя это и не обязательно). В единичной транспонированной матрице единицы расположены не по основной, а по побочной диагонали. Необходимо правильно строить подматрицу Ckm .

Рассмотрим способ построения контрольной подматрицы Ckm, который я использовал для написания программы:

    Строку контрольной подматрицы можно также определять путём деления каждой строки подматрицы , предварительно сдвинутой на k разрядов влево, на порождающий полином P(x). при этом полученные наименьшие остатки и будут являться строками .


^

Пример кода


Файл index.php





Циклический код в матричном виде





Циклический код в матричном виде с обнаружением одиночных ошибок.
















$word = $_POST["word"];// слово

$word_len= strlen($word); // длина слова

$word_string = (string)$word;

$fail = $_POST["fail"];// слово

$fail_string = (string)$fail;

echo ("Информационая комбинация: ".$word."
");

if($word_len < 1) {

echo "Информационная комбинация не введена!
";

return 0;

}

if($word_len > 32) {

echo "Информационная комбинация должна быть короче 32 разрядов!
";

return 0;

}

for($i = 0; $i < $word_len; $i++) {

if($word_string[$i] != 1 and $word_string[$i] != 0) {

echo "
Информационная часть слова должна быть введена в двоичном виде!
";

return 0;

}

}

echo ("Количество информационных разрядов m = ".$word_len."
");

$m = $word_len; // также длина слова

echo "Номер искажённого младшего разряда равен: ".$fail;

$k = 1;

while(POW(2,$k) < $k+($word_len+1))

$k++;

echo "
Найдём количество контрольных разрядов k:
";

?>

2k >= m + k + 1


k = ?

2 >= + 1


= ".($m + $k + 1) ?>

k = !


$n = $k + $m;

echo ("

Количество контрольных разрядов k = ".$k);

switch($k) {

case "2":

$polinom = 111;

break;

case "3":

$polinom = 1011;

break;

case "4":

$polinom = 10011;

break;

case "5":

$polinom = 100101;

break;

case "6":

$polinom = 1000011;

break;

}

$a;

//$n = $k + $m;

$polinom_len= strlen($polinom);

echo ("
Порождающий полином P = ".$polinom."
");

$polinom_string = (string)$polinom;

$result_string = (string)$a; // Делимое

for($kk = 0; $kk <= $m-1; $kk++) {

$result_len = $k + $kk + 1;

$result_string[0] = 1;

echo "
Делим ";

echo $result_string[0];

for($i = 1; $i < ($polinom_len + $kk); $i++) {

$result_string[$i] = 0;

echo $result_string[$i];

}

echo " на порождающий полином ".$polinom;

while($result_len > $k) {

echo ("
Сложение по модулю 2 равно ");

for($i = 0; $i < $result_len; $i++) {

if(($result_string[$i] == 1) and ($polinom_string[$i] == 1))

$result_string[$i] = 0;

elseif(($result_string[$i] == 0) and ($polinom_string[$i] == 0))

$result_string[$i] = 0;

else

$result_string[$i] = 1;

echo $result_string[$i];

}

echo "
Сдвиг... ";

while($result_string[0] == 0 and $result_len > $k) {

for($i = 0; $i < $result_len; $i++) {

$result_string[$i] = $result_string[$i+1];

echo $result_string[$i];

}

$result_len--;

echo "--";

}

}

echo ("
Остаток от деления равен: ");

for($i = 0; $i < $result_len; $i++)

echo $result_string[$i];

for($ii = 0; $ii < $result_len; $ii++)

$e[$kk][$m+$ii] = $result_string[$ii];

echo "
";

}

echo "
Составим матрицу:
";

$mm=$m - 1;

for ($i = 0; $i < $m; $i++) {

for ($j = 0; $j < $m; $j++) {

if ($j == $mm) {

$e[$i][$j] = 1;

echo $e[$i][$j];

}

else {

$e[$i][$j] = 0;

echo $e[$i][$j];

}

}

echo "|";

for($ii = 0; $k > $ii; $ii++)

echo $e[$i][$m+$ii];

$mm--;

echo "
";

}

$mm=$m;

echo "
Транспонируем матрицу:
";

for($j = 0; $j < $k; $j++) {

for($i = 0; $i < $m; $i++) {

$x[$j][$i] = $e[$i][$j+$m];

echo $x[$j][$i];

}

echo "|";

for ($i = 0; $i < $k; $i++) {

if ($i == $j) {

echo "1";

}

else {

echo "0";

}

}

echo "
";

}

echo "
Найдём контрольные разряды:
";

$xx;

for($i = 0; $i < $k; $i++) {

$xx = 0;

echo ("e(".($i+1).") = ");

for($j = 0; $j < $m; $j++) {

if($x[$i][$j] == 1)

$xx++;

}

for($j = 0, $jj = 0; $j < $m; $j++) {

if($x[$i][$m-$j-1] == 1) {

echo ("a(".($j+1).")");

$jj++;

if($xx == $jj)

echo " = ";

else

echo " + ";

}

}

for($j = 0, $jj = 0; $j < $m; $j++) {

if($x[$i][$m-$j-1] == 1) {

echo ($word_string[$j]);

$jj++;

if($xx != $jj)

echo " + ";

}

}

echo "
";

}

for($i = 0; $i < $k; $i++) {

for($j = 0; $j < $m; $j++) {

if($x[$i][$m-$j-1] == 1)

$x[$i][$m-$j-1] = $word_string[$j];

}

}

for($i = 0; $i < $k; $i++) {

$len = 0;

for($j = 0; $j < $m; $j++) {

if($x[$i][$j] == 1)

$len++;

}

echo ("e(".($i+1).") = ");

if($len == 0 or $len == 2 or $len == 4 or $len == 6 or $len == 8 or $len == 10) {

echo "0";

$word_string[$i+$m] = 0;

}

if($len == 1 or $len == 3 or $len == 5 or $len == 7 or $len == 9 or $len == 11) {

echo "1";

$word_string[$i+$m] = 1;

}

echo "
";

}

echo "
Закодированная кодовая комбинация: ";

for($i = 0; $i < $m+$k; $i++)

echo $word_string[$i];

echo "

Проверим на наличие ошибок:
";

?>








for($i = $n; $i > 0; $i--)

echo ""; ?>






for($i = 0; $i < $m+$k; $i++)

echo "";

?>






for($i = 0; $i < $n; $i++)

echo ""

?>






if($word_string[$n-$fail] == 0)

$word_string[$n-$fail] = 1;

else

$word_string[$n-$fail] = 0;

for($i = 0; $i < $m+$k; $i++)

echo "";

?>





".($i)."
".$word_string[$i]."
\/
".$word_string[$i]."



echo "
Делим закодированную кодовую комбинацию ";

for($i = 0; $i < $n; $i++) {

$result_string[$i] = $word_string[$i];

echo $result_string[$i];

}

echo (" на полином ".$polinom);

while($n > $k) {

echo ("
Сложение по модулю 2 равно: ");

for($i = 0; $i < $n; $i++) {

if(($result_string[$i] == 1) and ($polinom_string[$i] == 1))

$result_string[$i] = 0;

elseif(($result_string[$i] == 0) and ($polinom_string[$i] == 0))

$result_string[$i] = 0;

else

$result_string[$i] = 1;

echo $result_string[$i];

}

echo "
Сдвиг влево... ";

while($result_string[0] == 0 and $n > $k) {

for($i = 0; $i < $n; $i++) {

$result_string[$i] = $result_string[$i+1];

echo $result_string[$i];

}

$n--;

echo "--";

}

}

echo ("
Остаток от деления равен: ");

for($i = 0; $i < $n; $i++)

echo $result_string[$i];

$cnt = 0;

for($i = 0; $i < $n; $i++) {

if($result_string[$i] == 1)

$cnt++;

}

if($cnt > 0)

echo "
Обнаружена одиночная ошибка!";

$count = 0;

for($i = 0; $i < $n; $i++) {

if($result_string[$i] == 0)

$count++;

if($count == $n)

echo "
Ошибок не обнаружено!";

}

?>

Добавить документ в свой блог или на сайт

Похожие:

Отчет к курсовой работе Циклический код в матричном виде
К сожалению полученный таким способом код не является систематическим т е в комбинации этого кода нельзя выделить информационные...

Пояснительная записка к курсовой работе по дисциплине «моделирование»
В данной курсовой работе проводится логическое моделирование цифрового устройства с последующим анализом правильности его функционирования....

Пояснительная записка к курсовой работе по дисциплине «Теория Автоматов»
Цель данной курсовой работы является разработать структурные автоматы в базисе трандъюсеров

Пояснительная записка к курсовой работе по дисциплине «Теория Автоматов»
Цель данной курсовой работы является разработать структурные автоматы в базисе трандъюсеров ┐

Пояснительная записка к курсовой работе по дисциплине «Схемотехника»...
В данной курсовой работе разработан усилитель низких частот на основе цифро-аналогового преобразователя и операционного усилителя,...

Отчет по курсовой работе «Использование конечных автоматов для регуляции температуры»
Цель данной работы — построить устройство, поддерживающее температуру жала паяльника на заданном уровне

Пояснительная записка к курсовой работе по дисциплине «Схемотехника...
В курсовой работе разработан многоканальный коммутатор аналоговых сигналов, на 32 аналоговых сигнала. Разработана принципиальная...

Отчет по лабораторной работе №1 Исследование разомкнутой линейной системы
Исследуется система, описываемая математической моделью в виде передаточной функции

Отчёт о курсовой работе по предмету: «Программирование для Internet»
Известно множество подобных сервисов, например icq, irc, aim, msn, Google talk и многие другие. Такие средства связи могут очень...

Отчет по курсовой работе по курсу: "Моделирование в физике конденсированных...
Постановка задачи: построить потенциальный рельеф при перетаскивании межузельного атома в треугольной решетке на расстояние порядка...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница