Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

gfconv

ガロア体上の多項式を乗算

説明

c = gfconv(a,b) は、GF(2) 多項式の係数を昇べきの順に指定する行ベクトルを返します。返されるベクトルは、GF(2) 多項式の ab の乗算結果です。結果の GF(2) 多項式 c の多項式次数は、a の次数と b の次数を足したものと等価です。

詳細は、ヒントを参照してください。

c = gfconv(a,b,p) は、2 つの GF(p) 多項式を乗算します。ここで、p は素数です。ab、および c は同じガロア体にあります。ab、および c は、昇べきの順の係数をもつ多項式です。各係数の範囲は、[0, p–1] です。

c = gfconv(a,b,field) は、2 つの GF(pm) 多項式を乗算します。ここで、field は GF(pm) のすべての要素の m 組を含む行列です。p は素数、m は正の整数です。ab、および c は同じガロア体にあります。

この構文では、各係数は指数形式で指定されます。具体的には、[-Inf, 0, 1, 2, ...] の形式です。指数形式の要素は、GF(pm) の原始元 α に対応する field 要素 [0, 1, α, α2, ...] を表します。

c = gfconv(polys) は、GF(2) 多項式の係数を昇べきの順に指定する行ベクトルを返します。返されるベクトルは、polys で指定された GF(2) 多項式の乗算結果です。結果の GF(2) 多項式 c の多項式次数は、polys に含まれる多項式の次数の合計と等しくなります。polys で多項式を文字ベクトルの cell 配列または string 配列として指定する場合は、この構文を使用します。

c = gfconv(polys,p) は、polys で指定された GF(p) 多項式を乗算します。ここで、p は素数です。polysc は、係数を昇べきの順に含む多項式です。各係数の範囲は [0, p–1] です。ab、および c は同じガロア体にあります。

c = gfconv(polys,field) は、polys の GF(pm) 多項式を乗算します。ここで、field は GF(pm) のすべての要素の m 組を含む行列です。p は素数、m は正の整数です。ab、および c は同じガロア体にあります。

この構文では、各係数は指数形式で指定されます。具体的には、[-Inf, 0, 1, 2, ...] の形式です。指数形式の要素は、GF(pm) の原始元 α に対応する field 要素 [0, 1, α, α2, ...] を表します。

すべて折りたたむ

1+2x+3x2+4x31+x を 3 回乗算します。多項式を行ベクトル、文字ベクトル、および string として表します。

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 に対応します。

ガロア体 GF(3) 上の 1+x+x4x+x2 を乗算します。

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 に対応します。

ガロア体 GF(24) の 1+2x+3x2+4x3+5x4 および 1+x を乗算します。

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 

乗算すると t=3 の DVB-S2 生成多項式になる、3 つの多項式を含む cell 配列を作成します。

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  

ガロア体 GF(24) の 1+2x+3x2+4x3+5x41+x、および 1+x3 を乗算します。

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 

入力引数

すべて折りたたむ

ガロア体の多項式。行ベクトル、文字ベクトル、または string として指定します。a は、多項式の文字表現または数値ベクトルのいずれかにできます。

ab は、両方とも GF(p) 多項式または GF(pm) 多項式でなければなりません。ここで、p は素数です。p の値は、含まれている場合は指定された値、省略されている場合は 2 になり、field が指定されている場合は暗黙的に決まります。

例: [1 2 3 4] は、行ベクトルとして表された GF(5) の多項式 1+2x+3x2+4x3 です。

データ型: double | char | string

ガロア体の多項式。行ベクトル、文字ベクトル、または string として指定します。b は、多項式の文字表現または数値ベクトルのいずれかにできます。

ab は、両方とも GF(p) 多項式または GF(pm) 多項式でなければなりません。ここで、p は素数です。p の値は、含まれている場合は指定された値、省略されている場合は 2 になり、field が指定されている場合は暗黙的に決まります。

例: '1 + x' は、文字ベクトルとして表された GF(24) の多項式です。

データ型: double | char | string

素数。素数として指定します。

データ型: double

GF(pm) のすべての要素の m 組。行列として指定します。field は、同じ原始元に対応して配置された GF(pm) のすべての要素をリストする行列です。GF(pm) のすべての要素の m 組を生成するには、次を使用します。

field =gftuple([-1:p^m-2]',m,p)
指数形式で指定された係数は、GF(pm) の体の元を表します。これらの形式の説明は、ガロア体の元の表現を参照してください。

データ型: double

ガロア体の多項式のリスト。文字ベクトルの cell 配列または string 配列として指定します。

例: ["1+x+x3+x5+x14","1+x6+x8+x11+x14"] は多項式の string 配列です。

データ型: cell | string

出力引数

すべて折りたたむ

ガロア体の多項式。昇べきの順に並べた多項式の係数の行ベクトルとして返されます。結果の GF(pm) 多項式 c の多項式次数は、入力多項式の次数の合計と等しくなります。c は、入力多項式と同じガロア体にあります。

ヒント

  • 関数 gfconv は、GF(pm) の計算を行います。ここで、p は素数、m は正の整数です。この関数は、ガロア体上の多項式を乗算します。GF(2m) で実行するために、ガロア配列に対して gf オブジェクトの関数 conv を使用することもできます。詳細は、多項式の乗算と除算を参照してください。

  • ガロア体の要素を乗算するには、gfconv の代わりに gfmul を使用します。代数的には、ガロア体上の多項式の乗算は、多項式の係数を含むベクトルの畳み込みと等価です。この畳み込み操作では、同じガロア体上の演算が使用されます。

R2006a より前に導入