Main Content

comm.MultiplexedDeinterleaver

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

説明

comm.MultiplexedDeinterleaver System object™ は、それぞれ独自に遅延を指定した一連のシフト レジスタを使用して、入力シーケンスのシンボルをデインターリーブします。このデインターリーバーは、N シフト レジスタを使用します。ここで N は、Delay プロパティで指定されたベクトルの要素の数です。新しい入力シンボルがデインターリーバーに入力されると、System object はコミュテーターを新しいレジスタに切り替え、そのレジスタの最も古いシンボルをシフト アウトして新しいシンボルをシフト インします。コミュテーターが N 番目のレジスタに到達し、次の新しい入力が発生すると、System object は最初のレジスタに戻ります。comm.MultiplexedInterleaver System object に関連づけられた多重デインターリーバーには、インターリーバーと同じ数のレジスタがあります。デインターリーバーの特定のレジスタで遅延がどれだけ発生するかは、インターリーバーの最大遅延と特定のレジスタのインターリーバー遅延との差に依存しています。詳細については、インターリーブを参照してください。

入力シーケンスのシンボルをデインターリーブするには、以下の手順に従います。

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

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

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

作成

説明

muxdeinterleaver = comm.MultiplexedDeinterleaver は、既定の多重デインターリーバー System object を作成します。

muxdeinterleaver = comm.MultiplexedDeinterleaver(Name,Value) は、1 つ以上の名前と値の引数を使用してプロパティを設定します。たとえば、'InitialConditions',1 はシフト レジスタの初期条件を 1 に設定します。

プロパティ

すべて展開する

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

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

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

インターリーバー遅延。整数の列ベクトルとして指定します。このベクトルの値はシフト レジスタの長さを指定します。

データ型: double

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

  • 数値スカラー — 既定値は 0 です。指定したスカラーはすべてのシフト レジスタに適用されます。

  • 列ベクトル — このベクトルの長さは Delay プロパティの値の長さと等しくなければなりません。i 番目の初期条件が i 番目のシフト レジスタに適用されます。

データ型: double

使用法

説明

deintrlvseq = muxdeinterleaver(intrlvseq) は、Delay プロパティで指定された遅延をもつ一連のシフト レジスタを使用して、シンボルの入力シーケンス deintrlvseq をデインターリーブします。System object は、デインターリーブしたシーケンス deintrlvseq を返します。

入力引数

すべて展開する

シンボルのインターリーブ済みシーケンス。列ベクトルとして指定します。このシーケンスは、comm.MultiplexedInterleaver System object を使用してインターリーブされたシーケンスである必要があります。

データ型: double | logical | fi

出力引数

すべて展開する

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

データ型: double | logical | fi

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

インターリーバー遅延を指定して、多重インターリーバー System object を作成します。

interleaver = comm.MultiplexedInterleaver('Delay',[1; 0; 2; 1]);

インターリーバー遅延を指定して、多重デインターリーバー System object を作成します。

deinterleaver = comm.MultiplexedDeinterleaver('Delay',[1; 0; 2; 1]);

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

[dataIn,dataOut] = deal([]); % Initialize data arrays

for index = 1:50
    data = randi([0 7],20,1);
    intrlvSequence = interleaver(data);
    deintrlvSequence = deinterleaver(intrlvSequence);
    % Save original data and deinterleaved data
    dataIn = cat(1,dataIn,data);
    dataOut = cat(1,dataOut,deintrlvSequence);
end

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

delay = finddelay(dataIn,dataOut)
delay = 8

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

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

Copyright 2012 The MathWorks, Inc.

参照

[1] Heegard, Chris and Stephen B. Wicker. Turbo Coding. Boston: Kluwer Academic Publishers, 1999.

拡張機能

バージョン履歴

R2012a で導入