Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

rsdec

リード・ソロモン復号化器

説明

decoded = rsdec(code,n,k) は、狭義の生成多項式による [n,k] リード・ソロモン復号化プロセスを使用して、code 内の受信した信号の復号化を試みます。n はコードワード長、k はメッセージ長です。出力 decoded は、復号化されたリード・ソロモン符号化信号です。

decoded = rsdec(code,n,k,genpoly) は、値が 0 でない符号の生成多項式を指定します。

decoded = rsdec(___,paritypos) は、code 内のパリティ シンボルの位置を指定します。

[decoded,cnumerr] = rsdec(___) は、さらに訂正された誤りの数を列ベクトルとして返します。

[decoded,cnumerr,ccode] = rsdec(___) は、さらに訂正後の code を返します。

すべて折りたたむ

RS 符号パラメーターを設定します。

m = 3;                   % Number of bits per symbol
n = 2^m-1;               % Codeword length
k = 3;                   % Message length

3 ビット シンボルで構成されるコードワードを 3 つ生成します。(7,3) RS 符号でメッセージを符号化します。

msg = gf([2 7 3; 4 0 6; 5 1 1],m);
code = rsenc(msg,n,k);

コードワードの 1 番目に 1 つ、2 番目に 2 つ、3 番目に 3 つの誤りをそれぞれ発生させます。

errors = gf([2 0 0 0 0 0 0; 3 4 0 0 0 0 0; 5 6 7 0 0 0 0],m);
noisycode = code + errors;

破損したコードワードを復号化します。

[rxcode,cnumerr] = rsdec(noisycode,n,k);

最初の 2 行について、修正された誤りの数が発生させた誤りと一致することを確認します。(7,3) RS 符号は 2 つを超える誤りを修正できないため、3 行目では、修正された誤りの数が -1 となっています。

cnumerr
cnumerr = 3×1

     1
     2
    -1

入力引数

すべて折りたたむ

破損した状態で受信されたリード・ソロモン符号化コードワード。すべての値がゼロ以上である行列として指定します。code は、それぞれ m ビットのシンボルから成るガロア配列です。code の各 n 要素行は、破損している組織的コードワードを表します。パリティ シンボルは末尾にあり、左端のシンボルが最上位シンボルです。

データ型: double

コードワード長。2m–1 形式の整数として指定します。ここで、m の範囲は [3, 16] です。n は [7, 65535] の範囲内になければなりません。

n が正確に 2m-1 でない場合、rsdeccode を短縮符号の破損したものとみなします。

メモ

nk の差は正の偶数でなければなりません。

データ型: double

メッセージ長。正の整数として指定します。

データ型: double

降順の生成多項式の係数。ガロア行ベクトルとして返されます。genpoly は、降べきの順に並べた狭義の生成多項式の係数を表します。既定の狭義の生成多項式を使用する場合、genpoly[] に設定します。

生成多項式の次数は n-k でなければなりません。

データ型: double

code 内のパリティ シンボルの位置。次のいずれかのオプションとして指定します。

  • "end"code を形成する符号化処理の際、入力メッセージの末尾にパリティ シンボルを追加。

  • "beginning"code を形成する符号化処理の際、入力メッセージの先頭にパリティ シンボルを追加。

データ型: double

出力引数

すべて折りたたむ

復号化されたリード・ソロモン符号化信号。行列として返されます。行列の各行は、code 内の対応する行を復号化する試みを表します。

rsdec が符号内の 1 行に (n-k)/2 個より多い誤りを検出すると、復号化は失敗となります。この場合、rsdecn-k 個のシンボルを符号の行の末尾から削除するだけで、decoded の対応する行を作成します。引数 paritypos"beginning" に設定されている場合、rsdec は、復号化に失敗したときに n-k 個のシンボルを行の末尾ではなく先頭から削除します。

データ型: double

訂正された誤りの数。列ベクトルとして返されます。このベクトルの各要素は、code の対応する行で訂正された誤りの数を表します。

値が -1 の場合は、符号内のその行で復号化が失敗したことを意味します。

データ型: double

入力符号 code を訂正した後の符号。すべての値がゼロ以上である行列として返されます。ccode は、code と同じ形式のガロア配列です。

復号化失敗が code の特定の行で発生すると、ccode 内の対応する行にその行が変更されずに格納されます。

データ型: double

アルゴリズム

rsdec は、Berlekamp-Massey 復号化アルゴリズムを使用します。このアルゴリズムの詳細については、参照にある文献を参照してください。

参照

[1] Wicker, S. B., Error Control Systems for Digital Communication and Storage, Upper Saddle River, NJ, Prentice Hall, 1995.

[2] Berlekamp, E. R., Algebraic Coding Theory, New York, McGraw-Hill, 1968.

バージョン履歴

R2006a より前に導入

参考

関数

オブジェクト

トピック