Практикум на ЭВМ (317)/2013/Коды БЧХ
Материал из MachineLearning.
(Различия между версиями)
(→Формулировка задания) |
(→Оформление задания) |
||
| Строка 26: | Строка 26: | ||
== Оформление задания == | == Оформление задания == | ||
| - | Выполненное задание | + | Выполненное задание с отчетом и всеми исходными кодами необходимо прислать преподавателю. Большая просьба строго следовать указанным ниже прототипам реализуемых функций. |
| - | + | | |
| - | + | ||
| - | + | {|class="standard" | |
| + | !''Построение матрицы соответствия между десятичным и степенным представлением для всех элементов поля <tex>GF(2^l)</tex>'' | ||
| + | |- | ||
| + | |pm = '''gf_gen_pow_matrix'''(pp) | ||
| + | |- | ||
| + | |ВХОД | ||
| + | |- | ||
| + | |pp — примитивный многочлен в поле <tex>GF(2^l)</tex> степени <tex>l</tex>, десятичное число; | ||
| + | |- | ||
| + | |ВЫХОД | ||
| + | |- | ||
| + | |pm — матрица соответствия между десятичным представлением и степенным представлением по стандартному примитивному элементу <tex>x</tex>, матрица размера <tex>2^l-1{\times}2</tex>, в которой в первой колонке в позиции <tex>i</tex> стоит степень <tex>j:\alpha^j=i</tex>, а во второй колонке в позиции <tex>i</tex> стоит значение <tex>\alpha^i</tex>. | ||
| + | |} | ||
| | ||
{|class="standard" | {|class="standard" | ||
| - | !'' | + | !''Суммирование в <tex>GF(2^l)</tex>'' |
|- | |- | ||
| - | |res = '''gf_sum'''(X, Y | + | |res = '''gf_sum'''(X, Y) — поэлементное суммирование двух матриц |
|- | |- | ||
| - | |res = ''' | + | |res = '''gf_sum'''(X, [], dim) — суммирование по заданной размерности |
|- | |- | ||
| - | | | + | |ВХОД |
|- | |- | ||
| - | |res = ''' | + | |X, Y — матрица из элементов поля <tex>GF(2^l)</tex>, каждый элемент представляет собой десятичное число, двоичная запись которого соответствует коэффициентам полинома над полем <tex>GF(2)</tex>, первый разряд соответствует старшей степени полинома; |
| + | |- | ||
| + | |dim — (необязательный параметр) номер размерности для суммирования, по умолчанию = 1; | ||
| + | |- | ||
| + | |ВЫХОД | ||
| + | |- | ||
| + | |res — результат суммирования. | ||
| + | |} | ||
| + | |||
| + | | ||
| + | |||
| + | {|class="standard" | ||
| + | !''Умножение/деление в поле <tex>GF(2^l)</tex>'' | ||
| + | |- | ||
| + | |res = '''gf_prod'''(X, Y, pm) — поэлементное умножение двух матриц | ||
| + | |- | ||
| + | |res = '''gf_divide'''(X, Y, pm) — поэлементное деление двух матриц | ||
|- | |- | ||
|ВХОД | |ВХОД | ||
|- | |- | ||
| - | | | + | |X, Y — матрица из элементов поля <tex>GF(2^l)</tex>; |
| - | {| | + | |- |
| - | + | |pm — матрица соответствия между десятичным и степенным представлением в поле <tex>GF(2^l)</tex>; | |
| - | + | |- | |
| - | + | |ВЫХОД | |
| - | + | |- | |
| - | + | |res — результат операции, при делении на ноль соответствующий элемент равен NaN. | |
| - | + | |} | |
| + | |||
| + | | ||
| + | |||
| + | {|class="standard" | ||
| + | !''Решение СЛАУ <tex>A\vec{x}=\vec{b}</tex> в поле <tex>GF(2^l)</tex> методом Гаусса'' | ||
| + | |- | ||
| + | |x = '''gf_linsolve'''(A, b, pm) | ||
| + | |- | ||
| + | |ВХОД | ||
| + | |- | ||
| + | |A — квадратная матрица из элементов поля <tex>GF(2^l)</tex>; | ||
| + | |- | ||
| + | |b — вектор-столбец из элементов поля <tex>GF(2^l)</tex>; | ||
| + | |- | ||
| + | |p — матрица соответствия между десятичным и степенным представлением в поле <tex>GF(2^l)</tex>; | ||
| + | |- | ||
| + | |ВЫХОД | ||
| + | |- | ||
| + | |x — решение СЛАУ, вектор-столбец из элементов поля, в случае вырожденности <tex>A</tex> равен NaN. | ||
| + | |} | ||
| + | |||
| + | | ||
| + | |||
| + | {|class="standard" | ||
| + | !''Значение полинома из <tex>GF(2^l)[x]</tex> на элементе из <tex>GF(2^l)</tex>'' | ||
| + | |- | ||
| + | |res = '''gf_polyval'''(p, X, pm) | ||
| + | |- | ||
| + | |ВХОД | ||
| + | |- | ||
| + | |p — полином из <tex>GF(2^l)[x]</tex>, вектор-столбец коэффициентов, начиная со старшей степени; | ||
| + | |- | ||
| + | |X — матрица из элементов поля <tex>GF(2^l)</tex>; | ||
| + | |- | ||
| + | |pm — матрица соответствия между десятичным и степенным представлением в поле <tex>GF(2^l)</tex>; | ||
|- | |- | ||
|ВЫХОД | |ВЫХОД | ||
|- | |- | ||
| - | |res — | + | |res — значение полинома для всех элементов X. |
|} | |} | ||
Версия 16:08, 7 мая 2013
| | Формулировка задания находится в стадии разработки. Убедительная просьба не приступать к выполнению задания до тех пор, пока это предупреждение не будет удалено. |
Начало выполнения задания: 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 — вектор-столбец из элементов поля |
| p — матрица соответствия между десятичным и степенным представлением в поле |
| ВЫХОД |
| x — решение СЛАУ, вектор-столбец из элементов поля, в случае вырожденности |
| Значение полинома из |
|---|
| res = gf_polyval(p, X, pm) |
| ВХОД |
| p — полином из |
| X — матрица из элементов поля |
| pm — матрица соответствия между десятичным и степенным представлением в поле |
| ВЫХОД |
| res — значение полинома для всех элементов X. |

