最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

comm.RSDecoder

リード・ソロモン復号化器を使用したデータの復号化

説明

RSDecoder オブジェクトは、メッセージ ベクトルをリード・ソロモン符号語ベクトルから復元します。適切に復号化するには、このオブジェクトのプロパティ値と、対応する RS 符号化器オブジェクトのプロパティ値が一致していなければなりません。

リード・ソロモン復号化方式を使用したデータの復号化方法は次の通りです。

  1. リード・ソロモン復号化器オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.RSDecoder のプロパティに従い、データを復号化します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

R2016b 以降では、step メソッドを使用して、System object™ によって定義された演算を実行する代わりに、引数を関数であるかのように使ってオブジェクトを呼び出すことができます。たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

構築

dec = comm.RSDecoder はブロック復号化器 System object、dec を作成します。このオブジェクトはリード・ソロモン (RS) 復号化を実行します。

dec = comm.RSDecoder(N,K) は、CodewordLength プロパティを NMessageLength プロパティを K に設定して、RS 復号化器オブジェクト dec を作成します。

dec = comm.RSDecoder(N,K,GP) は、RS 復号化器オブジェクト dec を作成します。このとき、CodewordLength プロパティは N に、MessageLength プロパティは K に、GeneratorPolynomial プロパティは GP に設定します。

dec = comm.RSDecoder(N,K,GP,S) は、RS 復号化器オブジェクト dec を作成します。このとき、CodewordLength プロパティは N に、MessageLength プロパティは K に、GeneratorPolynomial プロパティは GP に、ShortMessageLength プロパティは S に設定します。

dec = comm.RSDecoder(N,K,GP,S,Name,Value) は、CodewordLength プロパティを NMessageLength プロパティを KGeneratorPolynomial プロパティを GP に設定し、さらに指定の各 Name プロパティを指定の Value に設定して、RS 復号化器オブジェクト dec を作成します。

dec = comm.RSDecoder(Name,Value) は、指定の各プロパティ名を指定の値に設定して、RS 復号化器オブジェクト dec を作成します。(Name1,Value1,...,NameN,ValueN) のように、のように、追加の名前と値のペアの引数を任意の順番で指定できます。

プロパティ

メモ

入出力信号長の一覧は、comm.BCHDecoder のリファレンス ページのBCH System object と RS System object の入出力信号長の表に記載されています。

BitInput

入力をビットと仮定

入力がビットか整数かを指定します。既定値は false です。

このプロパティを false に設定した場合、step メソッドの入力データ値は整数の数値列ベクトルでなければなりません。step メソッドは符号化されたデータ出力ベクトルを出力します。出力は、整数の列ベクトルの結果です。入力メッセージと出力符号語を形成する各シンボルは、0 と 2M – 1 の間の整数です。これらの整数は、有限ガロア体 gf(2M) の要素に対応します。M は、PrimitivePolynomialSource プロパティおよび PrimitivePolynomial プロパティで指定される原始多項式の次数です。

このプロパティを true に設定した場合、入力値はビットの数値列ベクトルでなければなりません。符号化されたデータの出力結果はビットの列ベクトルです。

CodewordLength

符号語長

シンボル内の RS 符号の符号語長を倍精度、正の整数スカラー値として指定します。既定の設定は 7 です。

フルレングスの RS 符号では、このプロパティの値は 2M–1 でなければなりません。ここで、M は 3M 16 を満たす整数です。

MessageLength

メッセージ長

シンボル内のメッセージ長を、倍精度の正の整数スカラー値で指定します。既定の設定は 3 です。

ShortMessageLengthSource

短縮メッセージ長のソース

短縮メッセージのソースを Auto または Property として指定します。このプロパティが Auto に設定されている場合、RS 符号は CodewordLengthMessageLengthGeneratorPolynomial および PrimitivePolynomial プロパティによって定義されます。

ShortMessageLengthSourceProperty に設定されている場合、ShortMessageLength プロパティを指定し、他のプロパティとともに RS 符号の定義に使用しなければなりません。既定値は Auto です。

ShortMessageLength

短縮メッセージ長

短縮メッセージの長さを、シンボル内の倍精度の正の整数スカラーとして指定します。この値は MessageLength 以下でなければなりません。

ShortMessageLength < MessageLength の場合、RS 符号は短縮されます。既定の設定は 3 です。

GeneratorPolynomialSource

生成多項式のソース

生成多項式のソースを Auto または Property として指定します。既定の設定は Auto です。

このプロパティを Auto に設定すると、オブジェクトは生成多項式を自動的に選択します。オブジェクトは PrimitivePolynomialSource プロパティの値に基づいて生成多項式を計算します。

このプロパティを Auto に設定すると、オブジェクトは自動的に生成多項式を選択します。オブジェクトは PrimitivePolynomial プロパティの値に基づいて生成多項式を計算します。

このプロパティを Property に設定した場合は、GeneratorPolynomial プロパティを使用して生成多項式を指定しなければなりません。

GeneratorPolynomial

生成多項式

RS 符号の生成多項式を、倍精度の整数行ベクトル、またはエントリが 0 から 2M–1 の範囲で、降べきの順で生成多項式を表すガロア体の行ベクトルとして指定します。生成多項式の長さは CodewordLength-MessageLength+1 でなければなりません。このプロパティは GeneratorPolynomialSourceProperty に設定した場合に適用されます。

既定の設定は rsgenpoly(7,3,[],[],'double') の結果であり、[1 3 1 2 3] に対応します。

このオブジェクトを使用してコードを生成する場合、生成多項式を倍精度の整数行ベクトルに設定しなければなりません。

CheckGeneratorPolynomial

生成多項式の検証を有効にする

このプロパティを true に設定すると、生成多項式の検証が実行されます。既定の設定は true です。このチェックにより、指定した生成多項式が有効であることを検証できます。

大きいコードの場合、この検証を無効にすると、処理時間が短縮されます。最も良い方法は、少なくとも 1 回チェックを実行してからこのプロパティを false に設定することです。このプロパティは GeneratorPolynomialSourceProperty に設定した場合に適用されます。

PrimitivePolynomialSource

原始多項式のソース

原始多項式のソースを Auto または Property のいずれかに指定します。既定の設定は Auto です。

このプロパティを Auto に設定すると、オブジェクトは次数 M = ceil(log2(CodewordLength+1)) の原始多項式を使用します。

PrimitivePolynomialSourceProperty に設定した場合は、PrimitivePolynomial を使用して多項式を指定しなければなりません。

PrimitivePolynomial

原始多項式

メッセージと符号語を形成する整数に対応して、有限体 gf(2M) を定義する原始多項式を指定します。既定の設定は fliplr(de2bi(primpoly(3))) の結果で、これは [1 0 1 1] または多項式 x3+x+1 です。このプロパティを、降べきの順に次数 M の GF(2) 上の原始多項式を表す、倍精度のバイナリ行ベクトルとして指定します。このプロパティは PrimitivePolynomialSourceProperty に設定した場合に適用されます。

PuncturePatternSource

パンクチャ パターンのソース

パンクチャ パターンのソースを None または Property のいずれかに指定します。既定の設定は None です。

このプロパティを None に設定すると、オブジェクトは符号にパンクチャを適用しません。Property に設定すると、オブジェクトは PuncturePattern で指定したパンクチャ パターン ベクトルに基づいて符号をパンクチャします。

PuncturePattern

パンクチャ パターン ベクトル

符号化されたデータをパンクチャするために使用するパターンを、長さ (CodewordLength-MessageLength) の倍精度、バイナリ列ベクトルとして指定します。既定の設定は [ones(2,1); zeros(2,1)] です。パンクチャ パターン ベクトルのゼロは、パンクチャされる、つまり各符号語から除外されるパリティ シンボルの位置を示します。このプロパティは PuncturePatternSourceProperty に設定した場合に適用されます。

ErasuresInputPort

消去入力の有効化

消去のベクトルを step メソッドへの入力として指定するには、このプロパティを true に設定します。既定の設定は false です。消去入力は、入力符号語の消去対象のシンボルを示す倍精度または論理バイナリ列ベクトルでなければなりません。

消去ベクトルの長さについては、BCH System object と RS System object の入出力信号長で説明しています。

このプロパティを false に設定すると、オブジェクトは消去を行いません。

NumCorrectedErrorsOutputPort

訂正された誤り数の出力の有効化

訂正された誤りの数を step メソッドへの出力として取得するには、このプロパティを true に設定します。既定の設定は true です。誤り出力ベクトルの i 番目の要素の非負の値は i 番目の入力符号語内の訂正された誤りの数を示します。誤り出力ベクトルの i 番目の要素の -1 の値は、その符号語で発生した復号化の誤りを示します。入力符号語に RS 符号の誤り訂正能力を超える誤りがあると、復号化の誤りが発生します。

OutputDataType

出力のデータ型

出力データ型を Same as inputdouble または logical に指定します。既定の設定は Same as input です。このプロパティは BitInputtrue に設定した場合に適用されます。

メソッド

stepリード・ソロモン復号化器を使用したデータの復号化
すべての System object に共通
release

System object のプロパティ値の変更の許可

すべて折りたたむ

RS 符号化され、8-DPSK 変調されたシンボル ストリームを AWGN チャネル経由で送信します。次に、復調、復号および誤りカウントを行います。

    enc = comm.RSEncoder;
    mod = comm.DPSKModulator('BitInput',false);
    chan = comm.AWGNChannel(...
                'NoiseMethod','Signal to noise ratio (SNR)','SNR',10);
    demod = comm.DPSKDemodulator('BitOutput',false);
    hDdecec = comm.RSDecoder;
    errorRate = comm.ErrorRate('ComputationDelay',3);

    for counter = 1:20
      data = randi([0 7], 30, 1);
      encodedData = step(enc, data);
      modSignal = step(mod, encodedData);
      receivedSignal = step(chan, modSignal);
      demodSignal = step(demod, receivedSignal);
      receivedSymbols = step(hDdecec, demodSignal);
      errorStats = step(errorRate, data, receivedSymbols);            
    end      
      
  fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
Error rate = 0.115578
Number of errors = 69

RS 符号化され、256-QAM 変調された短縮シンボル ストリームを AWGN チャネルを介して送信します。次に、誤りの復調、復号化、カウントを行います。

リード・ソロモン符号のパラメーターを設定します。ここで、N は符号語長、K は公称メッセージ長、S は短縮メッセージ長です。変調次数 M およびフレーム数 L を設定します。

N = 255;
K = 239;
S = 188;
M = 256;
L = 50;

AWGN チャネル System object と誤り率 System object を作成します。

awgnChan = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Eb/No)', ...
    'EbNo',15,'BitsPerSymbol',log2(M));
errorRate = comm.ErrorRate('ComputationDelay',3);

DVB-T 規格からリード・ソロモン生成多項式を作成します。

gp = rsgenpoly(N,K,[],0);

短縮メッセージ長 S と DVB-T 生成多項式 gp を使用して、リード・ソロモン符号化器および復号化器のペアを作成します。

enc = comm.RSEncoder(N,K,gp,S);
dec = comm.RSDecoder(N,K,gp,S);

1 つのメッセージ ブロックと等しい長さをもつ、ランダムなシンボル フレームを生成します。符号化、変調、AWGN 適用、復調、復号化および統計収集を行います。

for counter = 1:L
    data = randi([0 1],S,log2(M));
    encodedData = step(enc,bi2de(data));
    modSignal = qammod(encodedData,M,'UnitAveragePower',true);
    rxSignal = awgnChan(modSignal);
    demodSignal = qamdemod(rxSignal,M,'UnitAveragePower',true);
    rxBits = dec(demodSignal);
    dataOut = de2bi(rxBits);
    errorStats = errorRate(data(:),dataOut(:));
end

誤り率および誤り数を表示します。

fprintf('Error rate = %5.2e\nNumber of errors = %d\n', ...
    errorStats(1), errorStats(2))
Error rate = 2.01e-02
Number of errors = 1509

アルゴリズム

このオブジェクトは、BCH と RS の誤りのみの復号化のアルゴリズムで説明されているアルゴリズム、入力および出力を実装しています。

拡張機能

R2012a で導入