Main Content

convintrlv

シフト レジスタを使用したシンボルの並べ替え

構文

intrlved = convintrlv(data,nrows,slope)
[intrlved,state] = convintrlv(data,nrows,slope)
[intrlved,state] = convintrlv(data,nrows,slope,init_state)

説明

intrlved = convintrlv(data,nrows,slope) は、一連の nrows 内部シフト レジスタを使用して data 内の要素を並べ替えます。関数がデータを処理する前に、すべてのシフト レジスタをゼロで初期化します。data が複数の行と列をもつ行列である場合、この関数は列を個別に処理します。遅延の詳細については、畳み込みインターリーブと畳み込みデインターリーブの遅延を参照してください。

[intrlved,state] = convintrlv(data,nrows,slope) はシフト レジスタの最終状態を保持する構造体を出力します。state.value は任意のシフトされないシンボルを保存します。state.index はシフトされる次のレジスタのインデックスです。

[intrlved,state] = convintrlv(data,nrows,slope,init_state) はシフト レジスタを init_state.value に含まれるシンボルで初期化し、最初の入力シンボルを init_state.index で参照されるシフト レジスタへ導きます。構造体 init_state は通常、この同じ関数への前の呼び出しからの state 出力で、対応するデインターリーバーには無関係です。

下記の例は convintrlv がより一般的な関数 muxintrlv の特殊な場合であることを示します。両関数ともに同じ数値結果になります。

x = randi([0 1],100,1); % Original data
nrows = 5; % Use 5 shift registers
slope = 3; % Delays are 0, 3, 6, 9, and 12.
y = convintrlv(x,nrows,slope); % Interleaving using convintrlv.
delay = [0:3:12]; % Another way to express set of delays
y1 = muxintrlv(x,delay); % Interleave using muxintrlv.
isequal(y,y1)

下記の出力は、convintrlv を使用して取得した ymuxintrlv を使用して取得した y1 が同じであることを示しています。

ans =

     1

この関数を利用する別の例がMATLAB を使用して畳み込みインターリーブされたデータの再生に対する遅延の影響にあります。

muxdeintrlv のリファレンス ページの例はこの関数での state 出力および init_state 入力の使用方法を示します。この関数のプロセスは同じです。

詳細

すべて折りたたむ

畳み込みインターリーブと畳み込みデインターリーブの遅延

畳み込みインターリーバーと畳み込みデインターリーバーのペアによる合計遅延は N × slope × (N – 1) です。

  • N はレジスタの数で、引数 nrows の値と同じ

  • slope はレジスタの長さのステップで、引数 slope の値と同じ

次の図は、シフト レジスタのセットで構成される一般的な畳み込みインターリーバーの構造を示しています。各シフト レジスタには、D(1)、D(2)、...、D(N) として示される指定された遅延と、入力を切り替え、レジスタを経由してシンボルを出力するコミュテーターがあります。k 番目のシフト レジスタは D(k) 個のシンボルを保持します。ここで k = 1, 2, 3, … N です。k 番目のシフト レジスタの遅延値は ((k–1) × slope) です。新しい入力シンボルごとに、コミュテーターは新しいレジスタに切り替わり、新しいシンボルをシフトインしながら、そのレジスタ内の最も古いシンボルをシフトアウトします。コミュテーターが N 番目のレジスタに到達し、次の新しい入力が発生すると、コミュテーターは最初のレジスタに戻ります。

General convolutional interleaver showing the set of shift registers, the delay values D(1), D(2),..., D(N) for each register, and a commutator to switch input and output symbols through registers

参考文献

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

バージョン履歴

R2006a より前に導入