Main Content

comm.ConvolutionalDeinterleaver

遅延指定のあるシフト レジスタを使ってシンボルをデインターリーブする

説明

comm.ConvolutionalDeinterleaver System object™ は、それぞれ独自に遅延を指定した一連のシフト レジスタを使用して、入力シーケンスのシンボルをデインターリーブします。comm.ConvolutionalDeinterleaver オブジェクトは、関連付けられているインターリーバーとレジスタの数が同じでなければなりません。遅延の詳細については、畳み込みインターリーブと畳み込みデインターリーブの遅延を参照してください。

遅延指定のあるシフト レジスタを使ってシンボルをデインターリーブするには、次のようにします。

  1. comm.ConvolutionalDeinterleaver オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

deintrlvr = comm.ConvolutionalDeinterleaver は、既定の畳み込みデインターリーバー System object を作成します。

deintrlvr = comm.ConvolutionalDeinterleaver(Name=Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、NumRegisters=10 は、10 個の内部シフト レジスタを指定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

内部シフト レジスタの数。正の整数として指定します。

データ型: double

連続する各シフト レジスタのシンボル容量の差。正の整数として指定します。最後のレジスタはゼロ シンボルを保持します。

データ型: double

シフト レジスタの初期条件。次のいずれかのオプションとして指定します。

  • スカラー — 最後のシフト レジスタを除くすべてのシフト レジスタが同一の指定値を格納します。

  • 列ベクトル — 列ベクトルの長さが NumRegisters プロパティの値と等しい場合、k 番目のシフト レジスタは指定のベクトルの (N–k+1) 番目の要素を格納します。N はシフト レジスタの総数 (NumRegisters) です。

最初のシフト レジスタの遅れがゼロであるため、オブジェクトはこのプロパティの最初の要素を無視します。

データ型: double

使用法

説明

deintrlvseq = deintrlvr(intrlvseq) は、一連のシフト レジスタを使用して、シンボルの入力シーケンスをデインターリーブします。オブジェクトは、シンボルのデインターリーブ済みシーケンスを出力します。遅延の詳細については、畳み込みインターリーブと畳み込みデインターリーブの遅延を参照してください。

入力引数

すべて展開する

シンボルのインターリーブ済みシーケンス。列ベクトルとして指定します。このシーケンスは、comm.ConvolutionalInterleaver System object を使用してインターリーブされたシーケンスでなければなりません。

データ型: numeric | logical | fi

出力引数

すべて展開する

シンボルのデインターリーブ済みシーケンス。intrlvseq 引数と同じデータ型とサイズの列ベクトルとして返されます。

データ型: numeric | logical | fi

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

シフト レジスタの数とレジスタの長さのステップを指定して、畳み込みインターリーバー System object を作成します。

intrlvr = comm.ConvolutionalInterleaver(NumRegisters=2, ...
                                        RegisterLengthStep=3);

シフト レジスタの数とレジスタの長さのステップを指定して、畳み込みデインターリーバー System object を作成します。

deintrlvr = comm.ConvolutionalDeinterleaver(NumRegisters=2, ...
                                            RegisterLengthStep=3);

ランダム データ シーケンスを生成します。データ シーケンスをインターリーバーを介して渡してから、デインターリーバーを介して渡します。

data = (0:20)';
intrlvData = intrlvr(data);
deintrlvData = deintrlvr(intrlvData);

元のシーケンス、インターリーブ シーケンス、復元されたシーケンスを表示します。

[data,intrlvData,deintrlvData]
ans = 21×3

     0     0     0
     1     0     0
     2     2     0
     3     0     0
     4     4     0
     5     0     0
     6     6     0
     7     1     1
     8     8     2
     9     3     3
      ⋮

インターリーバーとデインターリーバーのペアを経由するときの遅延は、NumRegisters プロパティと RegisterLengthStep プロパティの積に等しくなります。

intrlvDelay = intrlvr.NumRegisters*intrlvr.RegisterLengthStep
intrlvDelay = 6

この遅延を考慮して、元のデータとデインターリーブしたデータが同一であることを検証します。

numSymErrors = symerr(data(1:end-intrlvDelay), ...
                      deintrlvData(1+intrlvDelay:end))
numSymErrors = 0

詳細

すべて展開する

参照

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

[2] Forney, G., D., Jr. "Burst-Correcting Codes for the Classic Bursty Channel." IEEE Transactions on Communications, vol. COM-19, October 1971. 772-781.

[3] Ramsey, J. L. "Realization of Optimum Interleavers." IEEE Transactions on Information Theory, IT-16 (3), May 1970. 338-345.

拡張機能

バージョン履歴

R2012a で導入