Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

comm.ConvolutionalEncoder

バイナリ データの畳み込み符号化

説明

ConvolutionalEncoder オブジェクトは、バイナリ入力ベクトルのシーケンスを符号化して、バイナリ出力ベクトルのシーケンスを生成します。

バイナリ信号を畳み込み符号化するには、以下の手順に従います。

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

  2. step を呼び出して、comm.ConvolutionalEncoder のプロパティに従い、バイナリ入力ベクトルのシーケンスを符号化して、バイナリ出力ベクトルのシーケンスを生成します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

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

構築

H = comm.ConvolutionalEncoder は、バイナリ データを畳み込み符号化する System object H を作成します。

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

H = comm.ConvolutionalEncoder(TRELLIS,Name,Value) は、畳み込み符号化器オブジェクト H を作成します。このオブジェクトでは TrellisStructure プロパティが TRELLIS に設定され、その他の指定のプロパティは指定の値に設定されます。

プロパティ

TrellisStructure

畳み込み符号のトレリス構造体

トレリスを、畳み込み符号のトレリス表現を含む MATLAB 構造体として指定します。構造体が有効なトレリス構造体かどうかを確認するには、関数 istrellis を使用します。既定の設定は、poly2trellis(7, [171 133]) の結果です。

TerminationMethod

符号化フレームの終了方法

符号化されたフレームの終了方法を ContinuousTruncated または Terminated のいずれかとして指定します。既定の設定は Continuous です。このプロパティを Continuous に設定すると、次の入力ベクトルで使用するために、オブジェクトによって各入力ベクトルの最後に符号化器状態が保持されます。このプロパティを Truncated に設定すると、オブジェクトは各入力ベクトルを個別に扱います。符号化器の状態は、各入力ベクトルの開始時にリセットされます。InitialStateInputPort プロパティを false に設定した場合、オブジェクトはその状態をすべてゼロの状態にリセットします。InitialStateInputPort プロパティを true に設定した場合、オブジェクトは step メソッド入力の初期状態で指定された値に状態をリセットします。このプロパティを Terminated に設定すると、オブジェクトは各入力ベクトルを個別に扱います。オブジェクトは、個々の入力ベクトルごとに追加のビットを使用することで、符号化器状態をベクトルの終了時にすべて 0 の状態にリセットします。符号化率 K/N の符号に対して、step メソッドは、長さ N×(L+S)K のベクトルを出力します。ここで S = constraintLength–1 (複数の拘束長がある場合、S = sum(constraintLength(i)–1)) です。L は step メソッドへの入力の長さです。

ResetInputPort

符号化器のリセット入力を有効にする

このプロパティを true に設定して、step メソッドに対する追加の入力を有効にします。既定の設定は false です。この追加のリセット入力が非ゼロの値のとき、符号化器の内部状態はその初期条件にリセットされます。このプロパティは、TerminationMethod プロパティを Continuous に設定した場合に適用されます。

DelayedResetAction

出力リセットの遅延

このプロパティを true に設定すると、オブジェクト出力のリセットが遅延されます。既定の設定は false です。このプロパティを true に設定すると、オブジェクトが符号化データを計算した後、符号化器の内部状態のリセットが発生します。このプロパティを false に設定すると、符号化器の内部状態のリセットが、符号化したデータをオブジェクトが計算する前に発生します。このプロパティは、ResetInputPort プロパティを true に設定した場合に適用されます。

InitialStateInputPort

初期状態入力を有効にする

このプロパティを true に設定すると、各入力ベクトルの符号化器の初期状態を指定する step メソッド入力が有効になります。既定の設定は false です。このプロパティは、TerminationMethod プロパティを Truncated に設定した場合に適用されます。

FinalStateOutputPort

最終状態出力を有効にする

このプロパティを true に設定すると、step メソッド出力を経由して符号化器の最終状態を取得します。既定の設定は false です。このプロパティは、TerminationMethod プロパティを Continuous または Truncated に設定した場合に適用されます。

PuncturePatternSource

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

パンクチャ パターン原始多項式のソースを、None または Property のいずれかとして指定します。既定の設定は None です。このプロパティを None に設定すると、オブジェクトはパンクチャを行いません。このプロパティを Property に設定すると、オブジェクトはコードをパンクチャします。このパンクチャは、PuncturePattern プロパティで指定するパンクチャ パターン ベクトルに基づいています。このプロパティは、TerminationMethod プロパティを Continuous または Truncated に設定した場合に適用されます。

PuncturePattern

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

符号化されたデータを列ベクトルとしてパンクチャするために使用するパンクチャ パターンを指定します。既定の設定は [1; 1; 0; 1; 0; 1] です。ベクトルは 10 から成り、ここで、0 はパンクチャまたは除外されたビットを示します。このプロパティは、TerminationMethod プロパティを Continuous または Truncated に、PuncturePatternSource プロパティを Property に設定した場合に適用されます。

メソッド

reset畳み込み符号化器オブジェクトの状態のリセット
stepバイナリ データの畳み込み符号化
すべての System object に共通
release

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

すべて折りたたむ

畳み込み符号化され、8-DPSK 変調されたビット ストリームを AWGN チャネル経由で送信します。次に、ビタビ復号化器を使用して復調と復号化を行います。

必要な System object を作成します。

hConEnc = comm.ConvolutionalEncoder;
hMod = comm.DPSKModulator('BitInput',true);
hChan = comm.AWGNChannel('NoiseMethod', ...
    'Signal to noise ratio (SNR)',...
    'SNR',10);
hDemod = comm.DPSKDemodulator('BitOutput',true);
hDec = comm.ViterbiDecoder('InputFormat','Hard');
hError = comm.ErrorRate('ComputationDelay',3,'ReceiveDelay', 34);

次の手順を使用して、データを処理します。

  1. ランダムなビットの生成

  2. データの畳み込み符号化

  3. DPSK 変調の適用

  4. 変調した信号の AWGN 経由の引き渡し

  5. ノイズを含む信号の復調

  6. ビタビ アルゴリズムを使用したデータの復号化

  7. 誤り統計の収集

for counter = 1:20
    data = randi([0 1],30,1);
    encodedData = step(hConEnc, data);
    modSignal = step(hMod, encodedData);
    receivedSignal = step(hChan, modSignal);
    demodSignal = step(hDemod, receivedSignal);
    receivedBits = step(hDec, demodSignal);
    errors = step(hError, data, receivedBits);
end

誤り数を表示します。

errors(2)
ans = 3

定義されたパンクチャ パターンで畳み込み符号化器およびビタビ復号化器を使用し、ビットのシーケンスを符号化して復号化します。入力ビットと出力ビットが同一であることを確認します

パンクチャ パターン行列を定義し、符号化器オブジェクトと復号化器オブジェクトで使用するためにベクトル形式に変更します。

pPatternMat = [1 0 1;1 1 0];
pPatternVec = reshape(pPatternMat,6,1);

内部で pPatternVec によってパンクチャ パターンを定義する、畳み込み符号化器およびビタビ復号化器を作成します。

ENC = comm.ConvolutionalEncoder(...
    'PuncturePatternSource','Property', ...
    'PuncturePattern',pPatternVec);

DEC = comm.ViterbiDecoder('InputFormat','Hard', ...
    'PuncturePatternSource','Property',...
    'PuncturePattern',pPatternVec);

適切な受信遅延を適用して誤り率カウンターを作成します。

ERR = comm.ErrorRate('ReceiveDelay',DEC.TracebackDepth);

ランダムなビットのシーケンスを符号化して復号化します。

dataIn = randi([0 1],600,1);

dataEncoded = step(ENC,dataIn);

dataOut = step(DEC,dataEncoded);

出力データに誤りがないことを確認します。

errStats = step(ERR,dataIn,dataOut);
errStats(2)
ans = 0

アルゴリズム

このオブジェクトは、Convolutional Encoder ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応しますが、以下の場合を除きます。

操作モード [Reset on nonzero input via port] ブロック パラメーターは ResetInputPort プロパティに対応します。

拡張機能

R2012a で導入