Практикум на ЭВМ (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. | 

