Отчет по лабораторной работе «Построение проверочной матрицы и кодирование»



Скачать 110.91 Kb.
Дата27.06.2013
Размер110.91 Kb.
ТипОтчет
Государственное образовательное учреждение

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

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

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

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ

«Построение проверочной матрицы и кодирование»

по курсу «Теория кодирования»


Выполнила:

Ухина О.В.,

группа С-65


Москва

2011

Оглавление

Теоретическая часть по коду 3

Работа с программой 3

Листинг 5


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


Как правило все блоковые коды представляются в матричном виде. Задать код - означает записать все разрешенные кодовые комбинации. При достаточно больших m и n матрица будет выглядеть очень громоздкой. Среди всех разрешенных комбинаций часть комбинаций является независимой, а остальные линейно зависимые. Линейная независимость в данном случае означает, что эти комбинации нельзя получить сложением по модулю 2 других различных комбинаций. Линейно независимые комбинации называются базисными или базовыми. Все остальные разрешенные комбинации можно получить сложением по модулю 2 линейно-независимых комбинаций.

Известно, что линейно-независимых комбинаций ровно m, то есть матрица получается размером m на n. Базовые комбинации должны обладать следующими свойствами:

  1. Базовые комбинации должны быть различными и нулевая комбинация не записывается в матрицу, а подразумевается.

  2. Базовые комбинации должны быть линейно-независимыми

  3. Количество единиц в каждой базовой комбинации должно быть не менее dmin

  4. Минимальное кодовое расстояние должно быть не менее заданного dmin

Полученная матрица из линейно-независимых комбинаций называется порождающей матрицей.

Порождающая матрица обозначается как Mn, m.

Mn, m=

Матрицу можно разделить на две: информационную и контрольную. В качестве линейно-независимых комбинаций удобно взять единичную матрицу

Em=

Квадратная единичная матрица.

Строки контрольной матрицы можно определить по свойствам, рассмотренным выше для полной строки порождающей матрицы. Свойства контрольной матрицы:

  1. Количество единиц в строке должно быть не менее dmin -1.

  2. Минимальное кодовое расстояние должно быть не менее dmin -2.

Удобно составлять уравнения для контрольных разрядов по проверочной матрице.
Получают ее следующим образом: строят матрицу Ek, к которой слева приписывают информационную Dm, k, содержащую m столбцов и k строк. Причем каждая её строка соответствует столбцу контрольных разрядов матрицы Ck,m порождающей матрицы. Другими словами Dm, k является транспонированной по отношению к матрице Ck,m .

Таким образом с ее помощью можно составлять уравнения для расчета контрольных разрядов.

Работа с программой


Программа написана на PHP, поэтому для ее запуска необходимо установить веб-сервер Apache. Затем в браузере открыть файл.

Интерфейс программы очень прост:

Необходимо ввести кодируемое слово и нажать OK!




Вывод программы:

Кодируемое слово:1011100101010
Число информационных разрядов:m=13
Число контрольных разрядов, вычисленное по границе Хэмминга:k=5
Общее количество разрядов кодовой комбинации:n=18

Построение единичной матрицы:
1000000000000
0100000000000
0010000000000
0001000000000
0000100000000
0000010000000
0000001000000
0000000100000
0000000010000
0000000001000
0000000000100
0000000000010
0000000000001

Построение контрольной матрицы:
00011
00101
00110
00111
01001
01010
01011
01100
01101
01110
01111
10001
10010

Построение порождающей матрицы:
100000000000000011
010000000000000101
001000000000000110
000100000000000111
000010000000001001
000001000000001010
000000100000001011
000000010000001100
000000001000001101
000000000100001110
000000000010001111
000000000001010001
000000000000110010

Построение транспонированной матрицы:
0000000000011
0000111111100
0111000111100
1011011001101
1101101010110

Единичная матрица:
10000
01000
00100
00010
00001

Построение проверочной матрицы:
Нумерация разрядов:

012345678910111201234
000000000001110000
000011111110001000
011100011110000100
101101100110100010
110110101011000001

Формулы для вычисления контрольных разрядов:
e_0= a_11 + a_12
e_1 = a_4 + a_5 + a_6 + a_7 + a_8 + a_9 + a_10
e_2 = a_1 + a_2 + a_3 + a_7 + a_8 + a_9 + a_10
e_3 = a_0 + a_2 + a_3 + a_5 + a_6 + a_9 + a_10 + a_12
e_4 = a_0 + a_1 + a_3 + a_4 + a_6 + a_8 + a_10 + a_11

Контрольные разряды:
11000

Закодированное слово:
101110010101011000

Листинг







Построение проверочной матрицы и кодирование


$word = $_GET["word"];
$arr_word = str_split($word);
if(!empty($word)) {
echo ''.'Кодируемое слово:'.'';
echo htmlentities($word).'
';
echo ''.'Число информационных разрядов:'.''. 'm=';
echo strlen($word).'
';
$k=0;
$base = 2;
$arg=$k + strlen($word) + 1;
while($k < log($arg, $base)) {
$k++;
$arg=$k + strlen($word) + 1;
}
echo ''.'Число контрольных разрядов, вычисленное по границе Хэмминга:'.''.'k=';
echo htmlentities($k).'
';
echo ''.'Общее количество разрядов кодовой комбинации:'.''. 'n=';
$n=htmlentities($k+strlen($word));
echo htmlentities($k+strlen($word));
echo '
'.'
'.''.'Построение единичной матрицы:'.''.'
';

///////////////////////////////////////////построение единичной
$arr[][]=NULL;
$m=strlen($word);
$d=0;
$q=0;
for($a=0; $a <= $m - 1; $a++) {
for($b=0; $b <= $m - 1; $b++) {
$arr[$a][$b] = 0;
}
}
for($a=0; $a <= $m - 1; $a++) {
$arr[$a][$a] = 1;
}


for($a=0; $a<=$m-1; $a++) {
for($b=0; $b<=$m-1; $b++) {
echo $arr[$a][$b];
}
echo '
';
}

///////////////////////////////////////////////////
$dec=0; //переменная для десятичного числа
$nullarr=array(); //массив дополнительных нулей слева
$result=array(); //нулевой массив + двоичные числа
$count_one=0; //счетчик единиц
$count_ready=0; //счетчик готовых строк контрольной матрицы
$arr_ready=array(); //двумерный массив контрольной матрицы окончательный

while($count_ready != $m) {
$bin=str_split(decbin($dec));
$dec++;
if(count($bin) < $k) {
for($i=0; $i < $k - count($bin); $i++) {
$nullarr[]=0;
}
}
$result = array_merge($nullarr, $bin);
//////////////////////////////////////////////Подсчет единиц в строке
$countEl=count($result)-1;
while($q <= $countEl) {
if($result[$q]==1) {
$count_one++;
}
$q++;
}
$q=0;
////////////////////Запись в массив подходящих строк
if($count_one >= 2) {
$arr_ready[]=$result;
$count_ready++;
}
$nullarr=array();
$count_one=0;
}

echo '
'.''.'Построение контрольной матрицы:'.''.'
';
for($a=0; $a < $m; $a++) {
for($b=0; $b < $k; $b++) {
echo $arr_ready[$a][$b];
}
echo '
';
}
//////////////////////////////////////порождающая
echo '
'.''.'Построение порождающей матрицы:'.''.'
';
$arrcontrol=array();
$i=0;
while($i < $m) {
$arrcontrol[$i]=array_merge($arr[$i],$arr_ready[$i]);
$i++;
}
for($a=0; $a < $m; $a++) {
for($b=0; $b < $n; $b++) {
echo $arrcontrol[$a][$b];
}
echo '
';
}
/*foreach($arrcontrol as $a) {
echo $a;
}
echo '
';
$i++;
} */
//////////////////////////////////////////
echo '
'.''.'Построение транспонированной матрицы:'.''.'
';
$transp[][]=NULL;
$c=0;
$e=0;
while($c < $k) {
$e=0;
while($e < $m) {
$transp[$c][$e]=$arr_ready[$e][$c];
$e++;
}
$c++;
}
////////////////////////////////////вывод транспонированной
for($a=0; $a<=$k-1; $a++) {
for($b=0; $b<=$m-1; $b++) {
echo $transp[$a][$b];
}
echo '
';
}
////////////////////////////////////единичная
echo '
'.''.'Единичная матрица:'.''.'
';
$one[][]=NULL;

for($a=0; $a <= $k - 1; $a++) {
for($b=0; $b <= $k - 1; $b++) {
$one[$a][$b] = 0;
}
}
for($a=0; $a <= $k - 1; $a++) {
$one[$a][$a] = 1;
}
for($a=0; $a<=$k-1; $a++) {
for($b=0; $b<=$k-1; $b++) {
echo $one[$a][$b];
}
echo '
';
}
echo '
'.''.'Построение проверочной матрицы:'.''.'
';
echo '
'.''.'Нумерация разрядов:'.''.'
';
$o=0;
while($o < $n) {
echo $o;
$o++;
}
echo '
';
$control=array();
$i=0;
while($i < $k) {
$control[$i]=array_merge($transp[$i],$one[$i]);
$i++;
}
for($a=0; $a < $k; $a++) {
for($b=0; $b < $n; $b++) {
echo $control[$a][$b];
}
echo '
';
}


///////////////////////////вычисление позиций единиц
$indexes=array();
$r=0;
for($a=0; $a<=$k-1; $a++) {
for($b=0; $b<=$m-1; $b++) {
if($transp[$a][$b]==1) {
$indexes[$a][$r]=$b;
$r++;
}
}
$r=0;
}
echo '
'.''.'Формулы для вычисления контрольных разрядов:'.''.'
';
for($a=0; $a < $k; $a++) {
echo 'e_'.$a.' = ';
for($b=0; $b < count($indexes[$a]); $b++) {
echo 'a_'.$indexes[$a][$b].' + ';
}
echo '
';
}

///////////////////////нахождение контрольных
$x=0;
$y=0;
$tmp=0;
$arr_control=array();
while($x < $k) {
foreach($indexes[$x] as $ind) {
$tmp ^= $arr_word[$ind];
}
$arr_control[] = $tmp;
$tmp=0;
$x++;
}
echo '
'.''.'Контрольные разряды:'.''.'
';
foreach($arr_control as $tm) {
echo $tm;
}
$code_word=array();
$code_word=array_merge($arr_word, $arr_control);
echo '
'.'
'.''.'Закодированное слово:'.''.'
';
foreach($code_word as $cw) {
echo $cw;
}

}
else {
echo ('

Построение проверочной матрицы линейного кода и кодирование











');
}
?>

Похожие:

Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по лабораторной работе №2 по дисциплине «Цифровая обработка сигналов»
Ознакомиться с теоретическим введением и дополнительными материалами к лабораторной работе
Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по лабораторной работе. Отчет по работе включает
Цель работы: изучить тип указатель; получить навыки в организации и обработке однонаправленных списков
Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет По лабораторной работе №1. 2 «Исследование электростатического поля методом моделирования в проводящей среде»
Цель работы: исследование конфигурации электростатического поля; построение эквипотенциалей и линий напряженности для заданной формы...
Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconКафедра икт отчет по лабораторной работе Дисциплина: «Теория информации и кодирование» Тема: «Делитель» Работу Студент группы с-65 Метлов Ю. М
Все мы слышали о crc. Если Вы забыли об этом, то Вам напомнят о нем неприятные сообщения от rar, zip и других архиваторов, когда...
Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по лабораторной работе № Выполнил

Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по домашней работе №1 Вариант №18 Д. Е. Ляпустина Студентка: гр. Р-35011
Рассмотрим порядок составления матрицы спектра плана, полагая, что факторы нормированы и, следовательно, могут принимать значения...
Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по лабораторной работе по дисциплине: " Зашита Информации"

Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по лабораторной работе №15 по дисциплине "Программирование на языке высокого уровня"

Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по лабораторной работе №1 «Утилиты тср/ip и анализ сетевого трафика»

Отчет по лабораторной работе «Построение проверочной матрицы и кодирование» iconОтчет по лабораторной работе №2 по дисциплине: «Сети ЭВМ и средства телекоммуникаций»

Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org