Практикум на ЭВМ (317)/2013/Коды БЧХ
Материал из MachineLearning.
|   | Формулировка задания находится в стадии разработки. Убедительная просьба не приступать к выполнению задания до тех пор, пока это предупреждение не будет удалено. | 
Начало выполнения задания: 6 мая 2013 г.
Срок сдачи: 19 мая 2013 г. (воскресенье), 23:59.
Программная среда для выполнения задания — MATLAB. Неэффективная реализация кода может негативно отразиться на оценке.
Коды БЧХ
Формулировка задания
-  Реализовать основные операции в поле 
: сложение, умножение, деление, решение СЛАУ, вычисление значения многочлена для заданного элемента поля, поиск примитивного элемента;
 - Реализовать процедуру систематического кодирования для циклического кода, заданного своим порождающим многочленом;
 - Реализовать процедуру построения порождающего многочлена для БЧХ-кода двумя способами: с помощью решения СЛАУ для коэффициентов многочлена и с помощью построения минимальных многочленов для каждого корня кода;
 - Реализовать процедуру декодирования БЧХ-кода двумя способами: с помощью алгоритма Берлекемпа-Мэсси и с помощью прямого решения СЛАУ (декодер PGZ);
 - Провести экспериментальное исследование БЧХ-кода на модельных данных;
 - Составить отчет в формате PDF обо всех проведенных исследованиях.
 
Рекомендации по выполнению задания
Оформление задания
Выполненное задание с отчетом и всеми исходными кодами необходимо прислать преподавателю. Большая просьба строго следовать указанным ниже прототипам реализуемых функций.
| Построение матрицы соответствия между десятичным и степенным представлением для всех элементов поля  | 
|---|
| pm = gf_gen_pow_matrix(pp) | 
| ВХОД | 
| pp — примитивный многочлен в поле  | 
| ВЫХОД | 
| pm — матрица соответствия между десятичным представлением и степенным представлением по стандартному примитивному элементу  | 
| Суммирование в  | 
|---|
| res = gf_sum(X, Y) — поэлементное суммирование двух матриц | 
| res = gf_sum(X, [], dim) — суммирование по заданной размерности | 
| ВХОД | 
| X, Y — матрица из элементов поля  | 
| dim — (необязательный параметр) номер размерности для суммирования, по умолчанию = 1; | 
| ВЫХОД | 
| res — результат суммирования. | 
| Умножение/деление в поле  | 
|---|
| res = gf_prod(X, Y, pm) — поэлементное умножение двух матриц | 
| res = gf_divide(X, Y, pm) — поэлементное деление двух матриц | 
| ВХОД | 
| X, Y — матрица из элементов поля  | 
| pm — матрица соответствия между десятичным и степенным представлением в поле  | 
| ВЫХОД | 
| res — результат операции, при делении на ноль соответствующий элемент равен NaN. | 
| Решение СЛАУ  | 
|---|
| x = gf_linsolve(A, b, pm) | 
| ВХОД | 
| A — квадратная матрица из элементов поля  | 
| b — вектор-столбец из элементов поля  | 
| pm — матрица соответствия между десятичным и степенным представлением в поле  | 
| ВЫХОД | 
| x — решение СЛАУ, вектор-столбец из элементов поля, в случае вырожденности  | 
| Поиск минимального полинома в  | 
|---|
| p = gf_minpoly(x, pm, method) | 
| ВХОД | 
| x — вектор-столбец из элементов поля  | 
| pm — матрица соответствия между десятичным и степенным представлением в поле  | 
| method — (необязательный параметр) метод поиска, строка, возможные значения 'ls' (с помощью решения СЛАУ) и 'cosets' (с помощью построения циклотомических классов смежности), по умолчанию = 'cosets'; | 
| ВЫХОД | 
| p — найденный полином, десятичное число. | 
| Значение полинома из  | 
|---|
| res = gf_polyval(p, X, pm) | 
| ВХОД | 
| p — полином из  | 
| X — матрица из элементов поля  | 
| pm — матрица соответствия между десятичным и степенным представлением в поле  | 
| ВЫХОД | 
| res — значение полинома для всех элементов X. | 
| Систематическое кодирование циклическим кодом с заданным порождающим многочленом | 
|---|
| V = cyclic_coding(U, g, n) | 
| ВХОД | 
| U — исходные сообщения для кодирования, вектор-столбец десятичных чисел; | 
| g — порождающий полином кода, десятичное число; | 
| n — длина кода, десятичное число; | 
| ВЫХОД | 
| V — закодированные сообщения, вектор-столбец десятичных чисел. | 
| Поиск порождающего многочлена для БЧХ-кода | 
|---|
| g = bch_genpoly(n, d) | 
| ВХОД | 
| n — длина кода, число вида  | 
| d — минимальное расстояние кода, число; | 
| ВЫХОД | 
| g — порождающий полином кода, число. | 

