Main Content

comm.BCHEncoder

BCH 符号化器を使用したデータの符号化

説明

BCHEncoder オブジェクトは、指定のメッセージおよびコードワードの長さの BCH 符号を作成します。

BCH 符号化方式を使用したデータの符号化方法は次のとおりです。

  1. BCH 符号化器オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.BCHEncoder のプロパティに従って指定されたメッセージ長およびコードワード長の BCH 符号を作成します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

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

構築

enc = comm.BCHEncoder は、BCH 符号化を実行する BCH 符号化器 System object enc を作成します。

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

enc = comm.BCHEncoder(N,K,GP)CodewordLength プロパティを NMessageLength プロパティを KGeneratorPolynomial プロパティを GP に設定して、BCH 符号化器オブジェクト enc を作成します。

enc = comm.BCHEncoder(N,K,GP,S) は、CodewordLength プロパティを NMessageLength プロパティを KGeneratorPolynomial プロパティを GPShortMessageLength プロパティを S に設定して、BCH 符号化器オブジェクト enc を作成します。

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

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

プロパティ

メモ

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

CodewordLength

コードワード長

BCH 符号のコードワード長を、倍精度の正の整数スカラーとして指定します。既定の設定は 15 です。CodewordLength プロパティおよび MessageLength プロパティの値は、狭義の有効な BCH 符号を生成しなければなりません。フルレングスの BCH 符号の場合、このプロパティの値は 2M1 の形式を使用しなければなりません。ここで、M は 3M16 となる整数です。既定の設定は 15 です。

MessageLength

メッセージ長

メッセージ長を、倍精度の正の整数スカラーとして指定します。CodewordLength プロパティおよび MessageLength プロパティの値は、狭義の有効な BCH 符号を生成しなければなりません。既定の設定は 5 です。

ShortMessageLengthSource

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

短縮メッセージのソースを Auto または Property のいずれかに指定します。このプロパティが Auto に設定されている場合、BCH 符号は CodewordLengthMessageLengthGeneratorPolynomial および PrimitivePolynomial プロパティによって定義されます。ShortMessageLengthSourceProperty に設定されている場合、他のプロパティとともに RS 符号の定義に使用されるように ShortMessageLength プロパティを指定しなければなりません。既定の設定は Auto です。

ShortMessageLength

短縮メッセージ長

短縮メッセージの長さを、倍精度の正の整数スカラーとして指定します。この値は MessageLength 以下でなければなりません。ShortMessageLength < MessageLength の場合、BCH 符号は短縮されます。既定の設定は 5 です。

GeneratorPolynomialSource

生成多項式のソース

生成多項式のソースを Auto または Property のいずれかに指定します。このプロパティを Auto に設定すると、生成多項式が自動的に作成されます。GeneratorPolynomial プロパティを使用して生成多項式を指定するには、Property に設定します。既定の設定は Auto です。

GeneratorPolynomial

生成多項式

生成多項式を、倍精度のバイナリ行ベクトル、降べきの順の生成多項式の係数を表すバイナリ ガロア行ベクトルまたは多項式の文字ベクトルとして指定します。生成多項式の長さは、CodewordLength-MessageLength+1 の値でなければなりません。このプロパティは GeneratorPolynomialSourceProperty に設定した場合に適用されます。既定の設定は 'X^10 + X^8 + X^5 + X^4 + X^2 + X + 1' ですが、これは bchgenpoly(15,5,[],'double') の結果であり、(15,5) 符号に対応します。

CheckGeneratorPolynomial

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

このプロパティを true に設定すると、step メソッドを最初に呼び出すときに生成多項式のチェックを実行します。このチェックにより、指定した生成多項式が有効であることを検証できます。大きいコードの場合、チェックを無効にすることで処理時間が短縮されます。最も良い方法は、少なくとも 1 回チェックを実行してからこのプロパティを false に設定することです。このプロパティは GeneratorPolynomialSourceProperty に設定した場合に適用されます。既定の設定は true です。

PrimitivePolynomialSource

原始多項式のソース

原始多項式のソースを Auto または Property のいずれかに指定します。このプロパティを Auto に設定すると、次数 M=ceil(log2(CodewordLength+1)) の原始多項式が作成されます。PrimitivePolynomial プロパティを使用して多項式を指定するには、Property に設定します。既定の設定は Auto です。

PrimitivePolynomial

原始多項式

有限ガロア体 GF(2) を定義する、M 次原始多項式を指定します。降べきの順での多項式の係数をもつ倍精度のバイナリ行ベクトルを使用するか、多項式の文字ベクトルとして使用します。このプロパティは、PrimitivePolynomialSource プロパティを Property に設定した場合に適用されます。既定の設定は 'X^4 + X + 1' ですが、これは int2bit(primpoly(4),5)' の結果です。

PuncturePatternSource

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

パンクチャ パターンのソースを None または Property のいずれかに指定します。パンクチャを無効にするにはこのプロパティを None に設定します。パンクチャされたコードワードを復号化するには、Property に設定します。この復号化は、PuncturePattern プロパティで指定するパンクチャ パターン ベクトルに基づいています。既定の設定は None です。

PuncturePattern

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

オブジェクトが符号化データをパンクチャするために使用するパターンを指定します。長さ CodewordLength-MessageLength の倍精度のバイナリ列ベクトルを使用します。パンクチャ パターン ベクトルのゼロは、オブジェクトがパンクチャするか、あるいは各コードワードから除外するパリティ ビットの位置を示します。このプロパティは PuncturePatternSourceProperty に設定した場合に適用されます。既定の設定は [ones(8,1); zeros(2,1)] です。

メソッド

stepBCH 符号化器を使用してデータを符号化する
すべての System object に共通
release

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

すべて折りたたむ

BCH 符号化され 8-DPSK 変調されたビット ストリームを AWGN チャネル経由で送信し、受信信号の復調、復号化、誤りのカウントを行います。

enc = comm.BCHEncoder;
mod = comm.DPSKModulator('BitInput',true);
chan = comm.AWGNChannel( ...
    'NoiseMethod','Signal to noise ratio (SNR)', ...
    'SNR',10);
demod = comm.DPSKDemodulator('BitOutput',true);
dec = comm.BCHDecoder;
errorRate = comm.ErrorRate('ComputationDelay',3);

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

短縮 BCH 符号で符号化された BPSK 変調信号を送受信後、誤りをカウントします。

コードワード長、メッセージ長、および短縮メッセージ長を指定します。

N = 255;
K = 239;
S = 63;

BCH (255,239) 生成多項式を作成します。生成多項式を使用して、BCH 符号化器と復号化器のペアを作成します。BCH 符号は AMR 標準に基づきます。

gp = bchgenpoly(255,239);
bchEncoder = comm.BCHEncoder(N,K,gp,S);
bchDecoder = comm.BCHDecoder(N,K,gp,S);

エラー レート カウンターを作成します。

errorRate = comm.ErrorRate('ComputationDelay',3);

主処理ループ。

for counter = 1:20
  data = randi([0 1],630,1);                 % Generate binary data
  encodedData = bchEncoder(data);            % BCH encode data
  modSignal = pskmod(encodedData,2);         % BPSK modulate
  receivedSignal = awgn(modSignal,5);        % Pass through AWGN channel
  demodSignal = pskdemod(receivedSignal,2);  % BSPK demodulate
  receivedBits = bchDecoder(demodSignal);    % BCH decode data
  errorStats = errorRate(data,receivedBits); % Compute error statistics
end

誤りの統計を表示します。

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
  errorStats(1), errorStats(2))
Error rate = 0.000318
Number of errors = 4

(31,26) BCH 符号を (11,6) BCH 符号に短縮して、ランダムなバイナリ データの符号化と復号化に使用します。

(31,26) 符号用の BCH 符号化器および復号化器のペアを作成します。生成多項式 x5+x2+1 と短縮メッセージ長 6 を指定します。

enc = comm.BCHEncoder(31,26,'x5+x2+1',6);
dec = comm.BCHDecoder(31,26,'x5+x2+1',6);

ランダムなバイナリ データの符号化と復号化を行い、復号化されたビット ストリームが元のデータと一致することを確認します。

x = randi([0 1],60,1);
y = step(enc,x);
z = step(dec,y);
isequal(x,z)
ans = logical
   1

参考文献

[1] Clark, George C. Jr., and J. Bibb Cain, Error-Correction Coding for Digital Communications. New York, Plenum Press, 1981.

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

アルゴリズム

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

拡張機能