|
Раздел "Обработка сигналов и изображений\Communications Toolbox"
Список функций Communications Toolbox: Вычисления в конечных полях (полях Галуа)
\ \
|
|
Создание объекта, представляющего массив элементов конечного поля |
(начиная с версии 2.1 пакета Communications Toolbox (Release 13))
Синтаксис:
x_gf = gf(x,m);
x_gf = gf(x,m,prim_poly);
x_gf = gf(x);
Описание:
x_gf = gf(x,m)
Создает массив элементов конечного поля из матрицы x. Конечное поле имеет 2^m элементов, при этом m должно быть целым числом в диапазоне от 1 до 16. Элементы x должны быть целыми числами в диапазоне от 0 до 2^m-1. Результат x_gf является переменной, которую MATLAB трактует не как массив целых чисел, а как массив элементов конечного поля. Вследствие этого при применении к переменной x_gf операторов или функций, таких как + или det, MATLAB будет производить вычисления в данном конечном поле.
x_gf = gf(x,m,prim_poly)
То же, что предыдущий вариант синтаксиса, но для задания поля используется примитивный полином, указанный параметром prim_poly. Параметр prim_poly должен быть целочисленным представлением примитивного полинома. Например, число 41 представляет полином D5 + D2 + 1, потому что в двоичном виде число 41 записывается как 1 0 0 1 0 1 (левая цифра здесь соответствует младшему разряду).
x_gf = gf(x)
Создает массив элементов простого двоичного конечного поля GF(2) из матрицы x. Элементы x может быть равны 0 или 1.
Примитивные полиномы по умолчанию
В приведенной ниже таблице перечислены примитивные полиномы, которые функция gf использует для всех возможных конечных полей GF(2^m). Чтобы использовать иной примитивный полином, следует задать его при вызове функции gf явно — в виде третьего входного параметра prim_poly.
|
m
|
Примитивный полином по умолчанию
|
Целочисленное представление
|
|
1
|
D + 1
|
3
|
|
2
|
D2 + D + 1
|
7
|
|
3
|
D3 + D + 1
|
11
|
|
4
|
D4 + D + 1
|
19
|
|
5
|
D5 + D2 + 1
|
37
|
|
6
|
D6 + D + 1
|
67
|
|
7
|
D7 + D3 + 1
|
137
|
|
8
|
D8 + D4 + D3 + D2 + 1
|
285
|
|
9
|
D9 + D4 + 1
|
529
|
|
10
|
D10 + D3 + 1
|
1033
|
|
11
|
D11 + D2 + 1
|
2053
|
|
12
|
D12 + D6 + D4 + D + 1
|
4179
|
|
13
|
D13 + D4 + D3 + D + 1
|
8219
|
|
14
|
D14 + D10 + D6 + D + 1
|
17475
|
|
15
|
D15 + D + 1
|
32771
|
|
16
|
D16 + D12 + D3 + D + 1
|
69643
|
Примеры:
Приведенный ниже код создает вектор-строку, элементы которого принадлежат конечному полю GF(4), а затем складывает эту строку с самой собой.
x = 0:3; % Строка целых чисел
m = 2; % Будем работать в конечном поле GF(2^2), то есть GF(4)
a = gf(x,m) % Создаем массив элементов поля GF(2^m)
b = a + a % Складываем a с самим собой, создавая массив b
Результат работы примера выглядит так:
a = GF(2^2) array. Primitive polynomial = D^2+D+1 (7 decimal)
Array elements =
0 1 2 3
b = GF(2^2) array. Primitive polynomial = D^2+D+1 (7 decimal)
Array elements =
0 0 0 0
Результат показывает значения переменных a и b — массивов элементов конечного поля. Каждая секция вывода отображает следующую информацию:
- Размерность поля — в данном случае она равна GF(2^2) = GF(4).
- Примитивный полином, использованный для данного поля. В данном примере используется примитивный полином, принятый в пакете Communications Toolbox для поля GF(4) по умолчанию (см. приведенную ранее таблицу).
- Собственно элементы массива. В нашем примере элементы массива a в точности совпадают с элементами вектора x, а все элементы массива b равны нулю.
Строка кода, создавшая массив b, показывает, что с массивами элементов конечных полей можно выполнять математические операции, используя операторную нотацию (в данном примере для сложения массивов использовался обычный оператор +). Проверив тип переменной, MATLAB узнает, что выполнять вычисления следует в поле GF(4). Анализ результата демонстрирует следующее:
- Слагаемые a и сумма b определены в одном и том же конечном поле и используют один и тот же примитивный полином. При создании переменной b не нужно указывать размерность поля, поскольку MATLAB возьмет необходимую информацию из переменных-слагаемых (в данном случае — из переменной a).
- Все элементы массива b равны нулю, поскольку сумма любого числа с самим собой в двоичном конечном поле, простом или расширенном, равна нулю. Этот результат отличается от результата сложения x + x, который представляет собой результат выполнения операции сложения в бесконечном поле целых чисел.
Сопутствующие функции: gftable
\ \
|