Доклад: Теория кодирования в среде MATLAB
Вторая команда показывает, что порождающим полиномом с максимальным весом (числом ненулевых коэффициентов) является 1 + x + x2 + x3 + x5 + x7 + x8 + x11 .
Третья команда демонстрирует, что для циклического кода (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);
Описание: