ドキュメンテーション

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

comm.BCHEncoder System object

パッケージ: comm

BCH 符号器を使用してデータを符号化する

説明

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

BCH コーディング方式を使用してデータを符号化するには、以下の手順に従います。

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

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

構築

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

H = comm.BCHEncoder(Name,Value) は、指定の各プロパティが指定の値に設定された BCH Encoder オブジェクト H を作成します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前/値の組み合わせ引数を任意の順番で指定できます。

プロパティ

CodewordLength

符号語長

BCH 符号の符号語長を、倍精度、正の整数スカラーで指定します。既定の設定は 15 です。CodewordLength プロパティおよび MessageLength プロパティの値は、有効で狭義の BCH 符号を生成しなければなりません。フルレングスの BCH 符号の場合、このプロパティの値は 2M1 の形式を使用しなければなりません。この場合、M は整数であり、3M16PrimitivePolynomialSource プロパティと PrimitivePolynomial プロパティで指定する原始多項式の次数に対応します。このプロパティが 2M1 未満の場合、オブジェクトは短縮されたコード形式とみなされます。

MessageLength

メッセージ長

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

PrimitivePolynomialSource

原始多項式のソース

原始多項式のソースを Auto または Property のいずれかとして指定します。既定の設定は Auto です。このプロパティを Auto に設定すると、オブジェクトは次数 M=ceil(log2(CodewordLength+1)) の原始多項式を使用します。fliplr(de2bi(primpoly(M))) の結果は、この多項式に値を設定します。このプロパティを Property に設定して、PrimitivePolynomial プロパティを使用して多項式を指定します。

PrimitivePolynomial

原始多項式

有限ガロア体 GF(2) を定義する、M 次原始多項式を指定します。降べき順の多項式の係数の、倍精度バイナリ行ベクトルを使用します。このプロパティは、PrimitivePolynomialSource プロパティを Property に設定した場合に適用されます。既定の設定は fliplr(de2bi(primpoly(4))) = [1 0 0 1 1] であり、多項式 x4+x+1 に対応します。

GeneratorPolynomialSource

生成多項式のソース

生成多項式のソースを、Auto または Property のいずれかとして指定します。既定の設定は Auto です。このプロパティを Auto に設定すると、オブジェクトは生成多項式を自動的に選択します。オブジェクトは PrimitivePolynomialSource プロパティの値に基づいて生成多項式を計算します。PrimitivePolynomialSource プロパティを Auto に設定すると、オブジェクトは生成多項式を bchgenpoly(CodewordLength+SL,MessageLength+SL) として計算します。PrimitivePolynomialSource プロパティを 'Property' に設定すると、オブジェクトは bchgenpoly(CodewordLength+SL,MessageLength+SL, PrimitivePolynomial) で生成多項式を計算します。どちらの場合も、SL = (2M1)-CodewordLength は短縮された長さです。M は、PrimitivePolynomialSource プロパティと PrimitivePolynomial プロパティで指定する原始多項式の次数を示します。このプロパティを Property に設定して、GeneratorPolynomial プロパティを使用して生成多項式を指定します。

GeneratorPolynomial

生成多項式

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

CheckGeneratorPolynomial

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

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

PuncturePatternSource

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

パンクチャ パターン原始多項式のソースを、None または Property のいずれかとして指定します。既定の設定は None です。このプロパティを None に設定すると、パンクチャが無効になります。パンクチャ符号語を復号化するには、このプロパティを Property に設定します。この復号化は、PuncturePattern プロパティで指定するパンクチャ パターン ベクトルに基づいています。

PuncturePattern

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

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

メソッド

clone同じプロパティ値で BCH Encoder オブジェクトを作成する
getNumInputsstep メソッドへの予想される入力数
getNumOutputsstep メソッドからの出力数
isLocked入力属性と調整不可能なプロパティのロック状態
releaseプロパティ値と入力特性の変更を許可する
stepBCH 符号器を使用してデータを符号化する

すべて展開する

BCH 信号の送信と復号化、およびエラーのカウント

% The following code transmits a BCH-encoded, 8-DPSK-modulated bit stream
% through an AWGN channel.  Then, the example demodulates, decodes, and counts errors.

    hEnc = comm.BCHEncoder;
    hMod = comm.DPSKModulator('BitInput',true);
    hChan = comm.AWGNChannel(...
            'NoiseMethod','Signal to noise ratio (SNR)','SNR',10);
    hDemod = comm.DPSKDemodulator('BitOutput',true);
    hDec = comm.BCHDecoder;
    hError = comm.ErrorRate('ComputationDelay',3);

    for counter = 1:20
      data = randi([0 1], 30, 1);
      encodedData = step(hEnc, data);
      modSignal = step(hMod, encodedData);
      receivedSignal = step(hChan, modSignal);
      demodSignal = step(hDemod, receivedSignal);
      receivedBits = step(hDec, demodSignal);
      errorStats = step(hError, 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 Encoder ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。

この情報は役に立ちましたか?