Main Content

rsgenpoly

リード・ソロモン符号の生成多項式

説明

genpoly = rsgenpoly(N,K) は、[N,K] リード・ソロモン符号の狭義の生成多項式を返します。出力 genpoly は生成多項式の係数を降べきの順に並べたガロア体配列です。狭義の BCH 符号は、B = 1 の BCH 符号です。ここで、狭義の生成多項式は (X – α1)(X – α2)...(X – αNK) です。ここで、α は体 GF(N+1) の既定の原始多項式の根です。詳細については、狭義の BCH 符号およびリード・ソロモン符号を参照してください。

genpoly = rsgenpoly(N,K,prim_poly) は、根として α をもつ GF(N+1) の原始多項式 prim_poly も指定します。

genpoly = rsgenpoly(N,K,prim_poly,B) は、生成多項式 (X – αB)(X – αB+1)...(X – αB+NK – 1) を返します。ここで、B は整数です。

genpoly = rsgenpoly(N,K,prim_poly,B,outputFormat) は、genpoly の出力形式をガロア体配列または倍精度配列として指定します。

[genpoly,T] = rsgenpoly(___) は、前述の入力引数構文のいずれかを使用して、[N,K] リード・ソロモン符号の誤り訂正能力 T も返します。

すべて折りたたむ

コードワード長 n とメッセージ長 k を指定します。

n = 7;
k = 3;

[n,k] リード・ソロモン符号の狭義の生成多項式を作成します。既定では、genpoly はこの生成多項式の係数を降べきの順に並べたガロア体配列です。

genpoly = rsgenpoly(n,k)
 
genpoly = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
 
Array elements = 
 
   1   3   1   2   3

原始多項式 D3+D2+1 に対するリード・ソロモン符号の狭義の生成多項式を作成します。

コードワード長 n、メッセージ長 k、および小数点形式で表された原始多項式 D3+D2+1 を指定します。

n = 7;
k = 3;
prim_poly = 13;

GF(8) の原始多項式 D3+D2+1 に対する [n,k] リード・ソロモン符号の狭義の生成多項式を作成します。既定では、genpoly はこの生成多項式の係数を降べきの順に並べたガロア体配列です。

genpoly = rsgenpoly(n,k,prim_poly)
 
genpoly = GF(2^3) array. Primitive polynomial = D^3+D^2+1 (13 decimal)
 
Array elements = 
 
   1   4   5   1   5

既定の原始多項式に対するリード・ソロモン符号の生成多項式を作成します。

コードワード長 n、メッセージ長 k、および α の指数 b を指定します。

n = 7;
k = 3;
b = 4;

既定の原始多項式に対する生成多項式 (X-α4)(X-α5)(X-α6)(X-α7) を作成します。genpoly はこの生成多項式の係数を降べきの順に並べたガロア体配列です。符号の誤り訂正能力を表示します。

[genpoly,t] = rsgenpoly(n,k,[],b)
 
genpoly = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
 
Array elements = 
 
   1   5   5   3   2
t = 2

原始多項式 D8+D4+D3+D2+1 に対するリード・ソロモン符号の生成多項式を作成します。

コードワード長 n、メッセージ長 k、小数点形式で表された原始多項式、および α の指数 b を指定します。

n = 255;
k = 239;
prim_poly = 285;
b = 0;

[n,k] リード・ソロモン符号の生成多項式を作成します。genpoly は生成多項式を表し、DVB-S および WiMAX に準拠するガロア体配列です。

genpoly = rsgenpoly(n,k,prim_poly,b)
 
genpoly = GF(2^8) array. Primitive polynomial = D^8+D^4+D^3+D^2+1 (285 decimal)
 
Array elements = 
 
     1    59    13   104   189    68   209    30     8   163    65    41   229    98    50    36    59

リード・ソロモン符号の狭義の生成多項式を作成します。出力データ型を倍精度配列として指定します。

コードワード長 n とメッセージ長 k を指定します。

n = 7;
k = 3;

[n,k] リード・ソロモン符号の狭義の生成多項式を作成します。genpoly はこの生成多項式の係数を降べきの順に並べた倍精度配列です。[ ] を割り当てて、原始多項式と α 入力の指数に既定値を指定します。

genpoly = rsgenpoly(n,k,[],[],'double')
genpoly = 1×5

     1     3     1     2     3

関数 genpoly2b を使用して、対応するガロア体配列値を判定します。

コードワード長を 7、メッセージ語長を 3 としてrsgenpolyを使用し、有効なガロア体配列を作成します。

n = 7;
k = 3;

genpoly = rsgenpoly(n,k)
 
genpoly = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
 
Array elements = 
 
   1   3   1   2   3

genpoly2b を使用して、多項式入力の対応するガロア体配列値を判定します。

b = genpoly2b(genpoly)
b = 1

入力引数

すべて折りたたむ

コードワード長。形式 N = 2M – 1 の整数として指定します。ここで、M の範囲は [3,16] です。詳細については、制限を参照してください。

例: M=4 の場合は、N15 に設定します。

メッセージ長。正の整数として指定します。詳細については、制限を参照してください。

原始多項式。正の整数として指定します。prim_poly は、バイナリ表現が原始多項式の係数である整数です。既定の原始多項式 GF(N+1) を使用するには、prim_poly[] に設定します。詳細については、既定の原始多項式を参照してください。

例: 19 は、バイナリ表現が 10011 のため、原始多項式 D4+D+1 を指定します。

α の指数。正の整数として指定します。α は prim_poly の根です。

genpoly の出力形式。以下で指定します。

  • 'gf' — ガロア体配列を出力。

  • 'double' — ガロア体の値の倍精度配列を出力。

詳細については、ガロア体の取り扱いを参照してください。

出力引数

すべて折りたたむ

降順の生成多項式の係数。ガロア体配列または倍精度配列として返されます。genpoly は、降べきの順に並べた [N,K] リード・ソロモン符号の狭義の生成多項式の係数を表す行ベクトルです。

符号の誤り訂正能力。⌊(NK)/2⌋ に等しい正の整数として返されます。

制限

  • N の有効な値は 2M – 1 です。ここで、M は範囲 [3,16] の整数です。N の最大許容値は 216 – 1 = 65,535 です。

  • K の有効な値は [1,N – 1] です。

詳細

すべて折りたたむ

既定の原始多項式

次の表は、各ガロア体配列 GF(2m) に使用される既定の原始多項式をまとめています。異なる原始多項式を使用するには、入力引数として prim_poly を指定します。prim_poly は [(2m + 1), (2m+1 – 1)] の範囲内で、既約多項式を示さなければなりません。詳細については、原始多項式と元の表現を参照してください。

m の値既定の原始多項式整数表現
1D + 13
2D2 + D + 17
3D3 + D + 111
4D4 + D + 119
5D5 + D2 + 137
6D6 + D + 167
7D7 + D3 + 1137
8D8 + D4 + D3 + D2 + 1285
9D9 + D4 + 1529
10D10 + D3 + 11033
11D11 + D2 + 12053
12D12 + D6 + D4 + D + 14179
13D13 + D4 + D3 + D + 18219
14D14 + D10 + D6 + D + 117475
15D15 + D + 132771
16D16 + D12 + D3 + D + 169643

拡張機能

バージョン履歴

R2006a より前に導入