MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Обработка сигналов и изображений\Communications Toolbox

Список функций Communications Toolbox: Вычисления в конечных полях (полях Галуа)

  В оглавление \ К следующему разделу \ К предыдущему разделу

GF
Создание объекта, представляющего массив элементов конечного поля

(начиная с версии 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

  В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика