Теорія кодування в середовищі MATLAB

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти Російської Федерації

Державна освітня установа

Вищої професійної освіти

Володимирський Державний Університет

Доповідь

з теорії кодування

на тему:

Теорія кодування в середовищі MATLAB

Володимир 2010

Пакет Communications Toolbox

Застосовується науковими, комерційними і військовими організаціями для розробки нових алгоритмів кодування, шифрування, модуляції і передачі даних з урахуванням різних ефектів спотворення і інтерференції. Ключові можливості

  • Засоби обчислень в кінцевих полях Галуа.

  • Засоби візуалізації сигналів: Глазкова діаграма, сигнальне сузір'я і ін

  • Спеціальні засоби візуалізації нестаціонарних параметрів каналу.

  • Засоби обчислення, аналізу та порівняння коефіцієнта бітової помилки (BER).

  • Готові функції і засоби розробки алгоритмів кодування джерела, завадостійкого кодування, перемежения, модуляції, демодуляція і еквалізациі.

Генерація перевірочної і породжує матриць для коду Хеммінга

  • Синтаксис:

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

  • Опис:

Для всіх варіантів синтаксису довжина кодового слова позначається як n. Величина n дорівнює 2 m - 1 для деякого цілочисельного m, більшого чи рівного трьом. Довжина блоку вихідного повідомлення позначається як k, вона дорівнює n - m.

Приклад:

Наведена нижче команда виводить на екран перевірочну і породжує матриці для коду Хеммінга з довжиною кодового слова 7 = 2 3 - 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 + x 2 + x 3, показуючи тим самим, що вид перевірочної матриці залежить від вибору примітивного полінома. Щоб у цьому переконатися, порівняйте виведену нижче матрицю 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)

Виробляє пошук одного або декількох нетривіальних породжують поліномів для циклічних кодів з довжиною кодового слова n і довжиною блоку вихідного повідомлення k. Результат pol залежить від вхідного параметра opt.

Приклад:

Перша з наведених нижче команд дає уявлення для трьох породжують поліномів циклічного коду (15, 4).

Друга команда показує, що породжує поліномом з максимальною вагою (числом ненульових коефіцієнтів) є 1 + x + x 2 + x 3 + x 5 + x 7 + x 8 + x 11.

Третя команда демонструє, що для циклічного коду (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) і є дільником полінома x n - 1. (У двійковому кінцевому полі GF (2) x n - 1 - це те ж саме, що і x n + 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 - двійкова матриця, що містить 2 n - k рядків і n стовпців. r-й рядок матриці t являє собою вектор помилок для прийнятого двійкового кодового слова, синдром декодування якого має десяткове цілочисельне значення r - 1. (Синдром декодування дорівнює добутку прийнятого кодового слова і транспонованої перевірочної матриці.) Іншими словами, рядки матриці t представляють собою лідери суміжних класів (coset leaders) із стандартного розташування (standard array) для даного коду.

    Приклад:

    Для коду Хеммінга (7, 4).

    m = 3; n = 2 ^ m-1; k = nm; 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]. Десяткове значення синдрому 3. Відповідний вектор помилок, таким чином, слід брати з четвертої (3 + 1) рядки таблиці декодування:

    trt (4,:)

    ans =

    0 0 0 0 1 0 0

    Отже слід інвертувати п'ятий розряд прийнятого кодового слова -

    [1 1 0 1 0 0 0]

    Додати в блог або на сайт

    Цей текст може містити помилки.

    Програмування, комп'ютери, інформатика і кібернетика | Доповідь
    38.2кб. | скачати


    Схожі роботи:
    Моделювання структурних схем в середовищі SIMULINK пакета MATLAB
    Моделювання траєкторії руху космічного апарату в середовищі MathCAD і Matlab
    Реалізація математичних моделей використовують методи інтегрування в середовищі MATLAB
    Моделювання руху невагомою зарядженої частинки в електричному полі в середовищі MathCAD і Matlab
    Метод словникового кодування Зеева-Лемпела Диференціальне кодування
    Метод словникового кодування Зеева Лемпела Диференціальне кодування
    Арифметичне кодування Кодування довжин повторень
    Matlab 2
    MatLab
    © Усі права захищені
    написати до нас