gfconv

Умножьте полиномы по Полю Галуа

Синтаксис

c = gfconv(a,b)
c = gfconv(a,b,p)
c = gfconv(a,b,field)
c = gfconv(polys)
c = gfconv(polys,p)
c = gfconv(polys,field)

Описание

пример

c = gfconv(a,b) возвращает вектор - строку, который задает GF (2) полиномиальные коэффициенты в порядке возрастающих степеней. Возвращенный вектор следует из умножения GF (2) полиномы a и b. Полиномиальная степень получившегося GF (2) полиномиальный c равняется степени a плюс степень b.

Для получения дополнительной информации смотрите Советы.

пример

c = gfconv(a,b,p) умножает два GF (p) полиномы, где p является простым числом. a, b и c находятся в том же Поле Галуа. a, b и c являются полиномами с коэффициентами в порядке возрастающих степеней. Каждый коэффициент находится в области значений [0, p –1].

пример

c = gfconv(a,b,field) умножает два GF (pm) полиномы, где field является матрицей, содержащей m - кортеж всех элементов в GF (pm). p является простым числом, и m является положительным целым числом. a, b и c находятся в том же Поле Галуа.

В этом синтаксисе каждый коэффициент задан в экспоненциальном формате, в частности [-Inf, 0, 1, 2...]. Элементы в экспоненциальном формате представляют элементы field [0, 1, α, α 2...] относительно некоторого примитивного элемента α GF (pm).

пример

c = gfconv(polys) возвращает вектор - строку, который задает GF (2) полиномиальные коэффициенты в порядке возрастающих степеней. Возвращенный вектор следует из умножения GF (2) полиномы, заданные в polys. Полиномиальная степень получившегося GF (2) полиномиальный c равняется сумме степеней полиномов, содержавшихся в polys. Используйте этот синтаксис, когда polys задаст полиномы как массив ячеек из символьных векторов или как массив строк.

c = gfconv(polys,p) умножает GF (p) полиномы, заданные в polys, где p является простым числом. polys и c являются полиномами с коэффициентами в порядке возрастающих степеней. Каждый коэффициент находится в области значений [0, p –1]. a, b и c находятся в том же Поле Галуа.

пример

c = gfconv(polys,field) умножает GF (pm) полиномы в polys, где field является матрицей, содержащей m - кортеж всех элементов в GF (pm). p является простым числом, и m является положительным целым числом. a, b и c находятся в том же Поле Галуа.

В этом синтаксисе каждый коэффициент задан в экспоненциальном формате, в частности [-Inf, 0, 1, 2...]. Элементы в экспоненциальном формате представляют элементы field [0, 1, α, α 2...] относительно некоторого примитивного элемента α GF (pm).

Примеры

свернуть все

Умножиться 1+2x+3x2+4x3 и 1+x три раза. Представляйте полиномы как векторы - строки, векторы символов и строки.

c_rv = gfconv([1 1 0 1],[1 1])
c_rv = 1×5

     1     0     1     1     1

c_cv = gfconv('1 + x + x^3','1 + x')
c_cv = 1×5

     1     0     1     1     1

c_s = gfconv("1 + x + x^3","1 + x")
c_s = 1×5

     1     0     1     1     1

Результаты соответствуют 1+x2+x3+x4.

Умножиться 1+x+x4 и x+x2 по GF Поля Галуа (3).

gfc = gfconv([1 1 0 0 1],[0 1 1],3)
gfc = 1×7

     0     1     2     1     0     1     1

Результат соответствует x+2x2+x3+x5+x6.

Умножиться 1+2x+3x2+4x3+5x4 и 1+x в GF Поля Галуа (24).

field = gftuple([-1:2^4-2]',4,2);
c = gfconv('1 + 2x + 3x^2 + 4x^3 + 5x^4','1 + x',field)
c = 1×6

     2     6     7     8     9     6

Используйте функцию gfpretty, чтобы отобразить результат в полиномиальной форме.

gfpretty(c)
 
                                   2      3      4      5
                      2 + 6 X + 7 X  + 8 X  + 9 X  + 6 X 

Создайте массив ячеек, содержащий три полинома, которые приводят к полиному генератора DVB-S2 для t=3 когда умножено вместе.

polyCell = {'1 + x + x3 + x5 + x14', ...
    '1 + x6 + x8 + x11 + x14','1 + x + x2 + x6 + x9 + x10 + x14'};
gp = gfconv(polyCell); % DVB-S2 for t=3

Используйте функцию gfpretty, чтобы отобразить результат в полиномиальной форме.

gfpretty(gp)
 
     4    6    8    10    11    13    16    17    20    24    25    26    27
1 + X  + X  + X  + X   + X   + X   + X   + X   + X   + X   + X   + X   + X  
 
              30    31    32    33    34    35    36    37    38    39    42
           + X   + X   + X   + X   + X   + X   + X   + X   + X   + X   + X  

Умножиться 1+2x+3x2+4x3+5x4, 1+x, и 1+x3 в GF Поля Галуа (24).

field = gftuple((-1:2^4-2)', 4, 2);
c = gfconv(["1 + 2x + 3x^2 + 4x^3 + 5x^4","1 + x","1 + x3"],field)
c = 1×9

     4    13    14     9     2     1     7     8     8

Используйте функцию gfpretty, чтобы отобразить результат в полиномиальной форме.

gfpretty(c)
 
                          2      3      4    5      6      7      8
           4 + 13 X + 14 X  + 9 X  + 2 X  + X  + 7 X  + 8 X  + 8 X 

Входные параметры

свернуть все

Полином поля Галуа, заданный как вектор - строка, вектор символов или строка. a может быть или Символьное представление Полиномов или числовой вектор.

a и b должны оба быть GF (p) полиномы или GF (pm) полиномы, где p является главным. Значение p столь же задано, когда включено, 2, когда не использовано, или подразумевало, когда field задан.

Пример: [1 2 3 4] является полиномом 1+2x+3x2+4x3 в GF (5) выраженный как вектор - строка.

Типы данных: double | char | string

Полином поля Галуа, заданный как вектор - строка, вектор символов или строка. b может быть или Символьное представление Полиномов или числовой вектор.

a и b должны оба быть GF (p) полиномы или GF (pm) полиномы, где p является главным. Значение p столь же задано, когда включено, 2, когда не использовано, или подразумевало, когда field задан.

Пример: '1 + x' является полиномом в GF (24) выраженный как вектор символов.

Типы данных: double | char | string

Простое число, заданное как простое число.

Типы данных: double

m - кортеж всех элементов в GF (pm), заданный как матрица. field является матрицей, перечисляющей все элементы GF (pm), расположенный относительно того же примитивного элемента. Чтобы сгенерировать m - кортеж всех элементов в GF (pm), использовать

field =gftuple([-1:p^m-2]',m,p)
Коэффициенты, заданные в экспоненциальном формате, представляют полевые элементы в GF (pm). Для объяснения этих форматов смотрите Элементы Представления Полей Галуа.

Типы данных: double

Список полиномов поля Галуа, заданный как массив ячеек из символьных векторов или массив строк.

Пример: ["1+x+x3+x5+x14","1+x6+x8+x11+x14"] является массивом строк полиномов.

Типы данных: cell | string

Выходные аргументы

свернуть все

Полином поля Галуа, возвращенный как вектор - строка из полиномиальных коэффициентов в порядке возрастающих степеней. Полиномиальная степень получившегося GF (pm) полином c равняется сумме степеней входных полиномов. c находится в том же Поле Галуа как входные полиномы.

Советы

  • Функция gfconv выполняет вычисления в GF (pm), где p является главным, и m является положительным целым числом. Это умножает полиномы по Полю Галуа. Чтобы работать в GF (2m), можно также использовать функцию conv объекта gf с массивами Галуа. Для получения дополнительной информации смотрите Умножение и Деление Полиномов.

  • Чтобы умножить элементы Поля Галуа, используйте gfmul вместо gfconv. Алгебраически, умножение полиномов по Полю Галуа эквивалентно свертке к векторам, содержащим коэффициенты полиномов. Эта операция свертки использует арифметику по тому же Полю Галуа.

Представлено до R2006a