Учебная работа. Доклад: Теория кодирования в среде MATLAB

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Доклад: Теория кодирования в среде MATLAB

Федеральное агентство по образованию Русской Федерации

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

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

Владимирский Муниципальный Институт

Доклад

по теории кодировки

на тему:

Теория кодировки в среде MATLAB

Владимир 2010


Пакет Communications Toolbox

Применяется научными, коммерческими и военными организациями для разработки новейших алгоритмов кодировки, шифрования, модуляции и передачи данных с учетом разных эффектов преломления и интерференции. Главные способности

— Средства вычислений в конечных полях Галуа.

средства визуализации сигналов: глазковая диаграмма, сигнальное созвездие и др.

— Особые средства визуализации нестационарных характеристик канала.

— Средства вычисления, анализа и сопоставления коэффициента битовой ошибки (BER).

— Готовые функции и средства разработки алгоритмов кодировки источника, помехоустойчивого кодировки, перемежения, модуляции, демодуляция и эквализации.

Генерация проверочной и порождающей матриц для кода Хэмминга

— Синтаксис:

h = hammgen(m); h = hammgen(m,pol); [h,g] = hammgen(…); [h,g,n,k] = hammgen(…);

— Описание:

Для всех вариантов синтаксиса длина кодового слова обозначается как n. Величина n равна 2m
– 1 для некого целочисленного m, большего либо равного трем. Длина блока начального сообщения обозначается как k, она равна n – m.

Пример:

Приведенная ниже команда выводит на экран проверочную и порождающую матрицы для кода Хэмминга с длиной кодового слова 7 = 23
– 1 и длиной блока начального сообщения 4 = 7 – 3.

[h,g,n,k] = hammgen(3)

h = 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 g = 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 n = 7 k = 4

Последующая команда употребляет очевидно данный простой полином 1 + x2
+ x3
, демонстрируя тем, что вид проверочной матрицы зависит от выбора простого полинома. Чтоб в этом убедиться, сравните выведенную ниже матрицу h1 с матрицей h из предшествующего примера.

h1 = hammgen(3,[1 0 1 1])

h1 = 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1

Генерация порождающего полинома для повторяющегося кода

— Синтаксис:

pol = cyclpoly(n,k); pol = cyclpoly(n,k,opt);

— Описание:

Для всех вариантов синтаксиса полином представляется в виде строчки, содержащей коэффициенты полинома в порядке возрастания степеней.

pol = cyclpoly(n,k)


Возвращает вектор-строку, представляющий один из нетривиальных порождающих полиномов для повторяющегося кода с длиной кодового слова n и длиной блока начального сообщения k.

pol = cyclpoly(n,k,opt)

Производит поиск 1-го либо нескольких нетривиальных порождающих полиномов для повторяющихся кодов с длиной кодового слова n и длиной блока начального сообщения k. Итог pol зависит от входного параметра opt.

Пример:

1-ая из приведенных ниже установок дает представления для 3-х порождающих полиномов повторяющегося кода (15, 4).

2-ая команда указывает, что порождающим полиномом с наибольшим весом (числом ненулевых коэффициентов) является 1 + x + x2
+ x3
+ x5
+ x7
+ x8
+ x11
.

3-я команда показывает, что для повторяющегося кода (15, 4) не существует порождающих полиномов с весом (числом ненулевых коэффициентов), равным трем.

c1 = cyclpoly(15,4,’all’) c1 = 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 c2 = cyclpoly(15,4,’max’) c2 = 1 1 1 1 0 1 0 1 1 0 0 1 c3 = cyclpoly(15,4,3) No generator polynomial satisfies the given constraints. c3 = []

Генерация проверочной и порождающей матриц для повторяющегося кода

— Синтаксис:

parmat = cyclgen(n,pol); parmat = cyclgen(n,pol,opt); [parmat,genmat] = cyclgen(…); [parmat,genmat,k] = cyclgen(…);

— Описание:

n- длина кодового слова

k- размер блока начального сообщения.

Полином может породить повторяющийся код с длиной кодового слова n и размером блока начального сообщения k и тогда лишь тогда, когда этот полином имеет степень (n – k) и является делителем полинома xn
– 1. (В двоичном конечном поле GF(2) xn
– 1 — это то же самое, что и xn
+ 1.) Отсюда следует, что k приравнивается n минус степень порождающего полинома. Входной параметр opt описывает, обязана итоговая матрица соответствовать периодическому либо несистематическому коду.

Пример:

pol = cyclpoly(7,4); [parmat,genmat,k] = cyclgen(7,pol) parmat = 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 genmat = 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 k = 4

>> [parmat,genmat,k]= cyclgen(7,cyclpoly(7,4),’nonsys’)

parmat =

1 1 1 0 1 0 0

0 1 1 1 0 1 0

0 0 1 1 1 0 1

genmat =

1 0 1 1 0 0 0

0 1 0 1 1 0 0

0 0 1 0 1 1 0

0 0 0 1 0 1 1

k =

4

//приобретенная проверочная матрица соответствует несистематическому повторяющемуся коду


Преобразование порождающей матрицы в проверочную и назад

— Синтаксис:

parmat = gen2par(genmat); genmat = gen2par(parmat);

— Описание:

parmat = gen2par(genmat)

Конвертирует двоичную порождающую матрицу genmat, представленную в обычной форме, в подобающую проверочную матрицу parmat.

genmat = gen2par(parmat)

Конвертирует двоичную проверочную матрицу parmat, представленную в обычной форме, в подобающую порождающую матрицу genmat.

Пример:

Приведенные ниже команды конвертируют проверочную матрицу для кода Хэмминга в подобающую порождающую матрицу и назад.

parmat = hammgen(3)

parmat =

1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1

genmat = gen2par(parmat)

genmat =

1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1

parmat2 = gen2par(genmat) % Результатдолженбытьравен parmat

parmat2 =

1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1

Расчет кодового расстояния для линейного блокового кода

— Синтаксис:

wt = gfweight(genmat); wt = gfweight(genmat,’gen’); wt = gfweight(parmat,’par’); wt = gfweight(genpoly,n);

— Описание:

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

wt = gfweight(genmat)

Возвращает кодовое расстояние для линейного блокового кода с порождающей матрицей genmat.

wt = gfweight(genmat,’gen’)

Возвращает кодовое расстояние для линейного блокового кода с порождающей матрицей genmat.

wt = gfweight(parmat,’par’)

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

wt = gfweight(genpoly,n)

Возвращает кодовое расстояние для повторяющегося кода с длиной кодового слова n и порождающим полиномом genpoly. Параметр genpoly должен быть вектором-строкой, содержащим коэффициенты порождающего полинома в порядке возрастания степеней.

Пример:

Приведенные ниже команды демонстрируют три метода вычисления кодового расстояния для повторяющегося кода (7,4).

n = 7; % Порождающий полином для повторяющегося кода (7,4) genpoly = cyclpoly(n,4)

genpoly =

1 0 1 1

>> [parmat, genmat] = cyclgen(n,genpoly)

parmat =

1 0 0 1 1 1 0

0 1 0 0 1 1 1

0 0 1 1 1 0 1

genmat =

1 0 1 1 0 0 0

1 1 1 0 1 0 0

1 1 0 0 0 1 0

0 1 1 0 0 0 1 wts = [gfweight(genmat,’gen’), gfweight(parmat,’par’), gfweight(genpoly,n)] wts =

3 3 3

Генерация таблицы зависимости векторов ошибок от синдрома (таблицы декодирования) для двоичных кодов

— Синтаксис:

t = syndtable(parmat);

— Описание:

t = syndtable(parmat)

Возвращает таблицу декодирования для двоичного корректирующего кода с длиной кодового слова n и длиной сообщения k. Параметр parmat — проверочная матрица кода, имеющая (n – k) строк и n столбцов. Итог t — двоичная матрица, содержащая 2n – k
строк и n столбцов. r-я строчка матрицы t представляет собой вектор ошибок для принятого двоичного кодового слова, синдром декодирования которого имеет десятичное целочисленное (совокупность симптомов с общим патогенезом) декодирования равен произведению принятого кодового слова и транспонированной проверочной матрицы.) Другими словами, строчки матрицы t представляют собой фавориты смежных классов (coset leaders) из обычного расположения (standard array) для данного кода.

Пример:

Для кода Хэмминга (7, 4).

m = 3; n = 2^m-1; k = n-m; parmat = hammgen(m) % Проверочная матрица parmat =

1 0 0 1 0 1 1

0 1 0 1 1 1 0

0 0 1 0 1 1 1

trt = syndtable(parmat) % Таблица декодирования trt =

0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0

Пусть принятое кодовое слово — [1 1 0 1 1 0 0]

Методом умножения проверочной матрицы на транспонированное кодовое слово рассчитывается синдром декодирования.

parmat*[1;1;0;1;1;0;0]

ans =

2

3

1

В двоичной системе счисления получили – [0 1 1]. Десятичное

trt(4,:)

ans =

0 0 0 0 1 0 0

Итак следует инвертировать 5-ый разряд принятого кодового слова

[1 1 0 1 0 0 0]

]]>