Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

comm.HelicalDeinterleaver

ヘリカル配列を使用したシンボルのデインターリーブ

説明

comm.HelicalDeinterleaver System object™ は、入力信号のシンボルを配列中に 1 行ずつ配置し、その配列かららせん状に選択したグループを出力端子から送信することで、入力信号内のシンボルを並べ替えます。この System object は、comm.HelicalInterleaver System object を使用してインターリーブされたシーケンスの元の順序を復元します。詳細については、アルゴリズムを参照してください。

ヘリカル配列を使用してシンボルをデインターリーブするには、次のようにします。

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

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

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

作成

説明

deintrlvr = comm.HelicalDeinterleaver は、既定のヘリカル デインターリーバー System object を作成します。

deintrlvr = comm.HelicalDeinterleaver(Name=Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、NumColumns=6 は、ヘリカル配列の列数を 6 に設定します。

プロパティ

すべて展開する

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

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

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

ヘリカル配列の列数。正の整数として指定します。

入力シンボルの各グループのサイズ。正の整数として指定します。

ヘリカル配列のステップ サイズ。正の整数として指定します。ステップ サイズは、ヘリカル配列の該当列の、連続して入力されるグループ間を分離する行の数を示します。

ヘリカル配列の初期条件。数値スカラーの値として指定します。これは、ヘリカル配列に格納される初期値です。

使用法

説明

deintrlvseq = deintrlvr(intrlvseq) は、ヘリカル配列を使用してシンボルの入力シーケンスをデインターリーブします。オブジェクトは、シンボルのデインターリーブ済みシーケンスを出力します。

入力引数

すべて展開する

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

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical | fi

出力引数

すべて展開する

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

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical | fi

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

ヘリカル インターリーバーとヘリカル デインターリーバーの System™ object を作成します。

intrlver = comm.HelicalInterleaver(GroupSize=2,NumColumns=3, ...
            InitialConditions=-1);
deintrlvr = comm.HelicalDeinterleaver(GroupSize=2,NumColumns=3, ...
            InitialConditions=-1);

ランダム データを生成します。データをインターリーブし、次にデインターリーブします。

[dataIn,dataOut] = deal([]);
for k = 1:10
    data = randi(7,6,1);
    intData = intrlver(data);
    deIntData = deintrlvr(intData);
    
    dataIn = cat(1,dataIn,data);
    dataOut = cat(1,dataOut,deIntData);
end

インターリーバーとデインターリーバーのペアによる遅延を求めます。

intlvDelay = finddelay(dataIn,dataOut)
intlvDelay = 6

インターリーブによる遅延を考慮し、元のデータとデインターリーブされたデータが同一であることを確認します。

isequal(dataIn(1:end-intlvDelay),dataOut(1+intlvDelay:end))
ans = logical
   1

アルゴリズム

すべて展開する

参照

[1] Berlekamp, E. R. and P. Tong. "Improved Interleavers for Algebraic Block Codes." US Patent 4559625, Dec. 17, 1985.

拡張機能

バージョン履歴

R2012a で導入