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
を使用して取得した y
と muxintrlv
を使用して取得した y1
が同じであることを示しています。
ans = 1
この関数を利用する別の例がMATLAB を使用して畳み込みインターリーブされたデータの再生に対する遅延の影響にあります。
muxdeintrlv
のリファレンス ページの例はこの関数での state
出力および init_state
入力の使用方法を示します。この関数のプロセスは同じです。
詳細
参考文献
[1] Heegard, Chris and Stephen B. Wicker. Turbo Coding. Boston: Kluwer Academic Publishers, 1999.
バージョン履歴
R2006a より前に導入