Main Content

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

rsdec

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

構文

decoded = rsdec(code,n,k)
decoded = rsdec(code,n,k,genpoly)
decoded = rsdec(...,paritypos)
[decoded,cnumerr] = rsdec(...)
[decoded,cnumerr,ccode] = rsdec(...)

説明

decoded = rsdec(code,n,k) は、狭義の生成多項式で [n,k] リード・ソロモン復号化プロセスを使用して、code 内の受信した信号の復号化を試みます。code は、それぞれ m ビットをもつシンボルのガロア配列です。code の各 n 要素行は、破損している組織的コードワードを表します。パリティ シンボルは末尾にあり、左端のシンボルが最上位シンボルです。n は最大でも 2m-1 です。n が正確に 2m-1 でない場合、rsdeccode を短縮符号の破損したものとみなします。

ガロア配列 decoded では、各行は code 内の対応する行を復号化する試みを表します。rsdeccode 内の 1 行に (n-k)/2 個より多い誤りを検出すると "復号化失敗" が発生します。この場合、rsdecn-k 個のシンボルを code の行の末尾から削除するだけで、decoded の対応する行を作成します。

decoded = rsdec(code,n,k,genpoly) は、genpoly の空でない値がコードの生成多項式を指定する以外は、上記の構文と同じです。この場合、genpoly は生成多項式の係数を降べきの順に並べたガロア行ベクトルです。生成多項式は次数 n-k をもたなければなりません。既定の狭義の生成多項式を使用する場合、genpoly[] に設定します。

decoded = rsdec(...,paritypos) は、code 内のパリティ シンボルが符号化処理時にメッセージの末尾に追加されたのかそれとも先頭に追加されたのかを指定します。paritypos'end' または 'beginning' のどちらかです。既定の設定は 'end' です。paritypos'beginning' である場合、復号化失敗が原因で rsdecn-k 個のシンボルを行の末尾ではなく先頭から削除します。

[decoded,cnumerr] = rsdec(...) は、列ベクトル cnumerr を返します。各要素は code の対応する行で訂正された誤りの数です。cnumerr の値 -1 は、code 内の該当する行における 1 件の復号化失敗を示します。

[decoded,cnumerr,ccode] = rsdec(...) は、ccode を返します。これは、訂正されたバージョンの code です。ガロア配列 ccode の形式は、code と同じです。復号化失敗が code の特定の行で発生すると、ccode 内の対応する行にその行が変更されずに格納されます。

すべて折りたたむ

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

制限

n および k の差は偶数の整数でなければなりません。n は、3 から 65535 までの間でなければなりません。

アルゴリズム

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 より前に導入

参考

| |

トピック