Main Content

hammgen

ハミング符号のパリティ チェック行列と生成行列

説明

h = hammgen(m) は、コードワード長が n = 2m–1 であるハミング符号の mn 列のパリティ チェック行列 h を返します。ハミング符号のメッセージ長は nm です。ハミング符号の作成に関数で使用されるバイナリ原始多項式は、GF(2^m) の既定の原始多項式です。この既定の多項式の詳細については、関数 gfprimdf を参照してください。

h = hammgen(m,poly) は、GF(2m) のバイナリ原始多項式 poly を指定します。関数で poly を使用してハミング符号が作成されます。

[h,g] = hammgen(___) は、パリティ チェック行列 h に対応する kn 列の生成行列 g を追加で返します。前の構文の入力引数を任意に組み合わせて指定します。

[h,g,n,k] = hammgen(___) は、ハミング符号のコードワード長 n とメッセージ長 k も返します。

すべて折りたたむ

コードワード長 7 のハミング符号のパリティ チェック行列 h を生成します。関数でのハミング符号の作成には GF(8) の既定の原始多項式が使用されます。

h = hammgen(3)
h = 3×7

     1     0     0     1     0     1     1
     0     1     0     1     1     1     0
     0     0     1     0     1     1     1

GF(16) の原始多項式 1+D+D4 および 1+D3+D4 を指定して、コードワード長 15 のハミング符号のパリティ チェック行列を生成します。

h1 = hammgen(4,'1+D+D^4')
h1 = 4×15

     1     0     0     0     1     0     0     1     1     0     1     0     1     1     1
     0     1     0     0     1     1     0     1     0     1     1     1     1     0     0
     0     0     1     0     0     1     1     0     1     0     1     1     1     1     0
     0     0     0     1     0     0     1     1     0     1     0     1     1     1     1

h2 = hammgen(4,'1+D^3+D^4')
h2 = 4×15

     1     0     0     0     1     1     1     1     0     1     0     1     1     0     0
     0     1     0     0     0     1     1     1     1     0     1     0     1     1     0
     0     0     1     0     0     0     1     1     1     1     0     1     0     1     1
     0     0     0     1     1     1     1     0     1     0     1     1     0     0     1

組み込みの 4 行 4 列の単位行列、つまり各パリティ チェック行列の左端の 4 列を削除します。

h1 = h1(:,5:end)
h1 = 4×11

     1     0     0     1     1     0     1     0     1     1     1
     1     1     0     1     0     1     1     1     1     0     0
     0     1     1     0     1     0     1     1     1     1     0
     0     0     1     1     0     1     0     1     1     1     1

h2 = h2(:,5:end)
h2 = 4×11

     1     1     1     1     0     1     0     1     1     0     0
     0     1     1     1     1     0     1     0     1     1     0
     0     0     1     1     1     1     0     1     0     1     1
     1     1     1     0     1     0     1     1     0     0     1

結果の 2 つの行列が異なることを確認します。

isequal(h1,h2)
ans = logical
   0

コードワード長 7 のハミング符号のパリティチェック行列 h と生成行列 g を生成します。ハミング符号のコードワード長 n とメッセージ長 k も返します。関数でのハミング符号の作成には GF(8) の既定の原始多項式が使用されます。

[h,g,n,k] = hammgen(3)
h = 3×7

     1     0     0     1     0     1     1
     0     1     0     1     1     1     0
     0     0     1     0     1     1     1

g = 4×7

     1     1     0     1     0     0     0
     0     1     1     0     1     0     0
     1     1     1     0     0     1     0
     1     0     1     0     0     0     1

n = 
7
k = 
4

入力引数

すべて折りたたむ

パリティ チェック行列の行数。2 以上の整数として指定します。関数は、この値を使用してハミング符号のコードワード長とメッセージ長を計算します。

データ型: double

GF(2m) のバイナリ原始多項式。次の値のいずれかとして指定します。

  • 昇べきの順に並べた多項式の係数のバイナリ行ベクトル

  • 文字ベクトル

  • string スカラー

関数 hammgenpoly に原始多項式以外を指定した場合、エラーが表示されます。

データ型: double | char | string

出力引数

すべて折りたたむ

ハミング符号のパリティ チェック行列。ハミング符号のバイナリ値の mn 列の行列として返されます。

データ型: single | double

ハミング符号の生成行列。パリティ チェック行列 h に対応するバイナリ値の kn 列の行列として返されます。

データ型: single | double

ハミング符号のコードワード長。正の整数として返されます。この値は 2m–1 で計算されます。

データ型: single | double

ハミング符号のメッセージ長。正の整数として返されます。この値は nm で計算されます。

データ型: single | double

アルゴリズム

hammgen は関数 gftuple を使用して、ガロア体 (GF) の各元を多項式表現に変換することでパリティ チェック行列を作成します。GF(2m) の計算を行って一度に 1 つの m 組を処理する gftuple とは異なり、関数 hammgen は 0 ~ 2m–1 のシーケンス全体を生成します。計算アルゴリズムは、あらかじめ計算されたすべての値を使用して計算結果を生成します。m の値が 25 よりも小さく原始多項式が GF(2m) の既定の原始多項式の場合、構文 hammgen(m) は構文 hammgen(m,poly) よりも高速になる可能性があります。

バージョン履歴

R2006a より前に導入

参考

関数

トピック