Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Algebraic Interleaver

代数的に求めた置換テーブルを使用した入力シンボルの並べ替え

ライブラリ

Interleaving の Block サブライブラリ

  • Algebraic Interleaver block

説明

Algebraic Interleaver ブロックは、代数的に求められた置換テーブルを使用して入力ベクトルの要素を並べ替えます。[Number of elements] パラメーターである N は、入力ベクトルにどの程度の数があるかを示します。このブロックは、列ベクトル入力信号を受け入れます。

このブロックは次のデータ型を受け入れます。int8uint8int16uint16int32uint32booleansingledouble および固定小数点。出力信号のデータ型は、入力信号から継承されます。

[Type] パラメーターは、ブロックが適切な置換テーブルを生成するために使用する代数的手法を示します。選択肢としては、[Takeshita-Costello] および [Welch-Costas] があります。これらの手法のそれぞれには、手法に固有のパラメーターと制限があります。

  • [Type][Welch-Costas] に設定した場合、N + 1 は素数でなければなりません。[Primitive element] パラメーターは有限体 GF(N + 1) の原始元を表す 1 から N までの整数 A です。これは、GF(N + 1) の非ゼロの各要素を、A の整数乗として表現できることを意味します。

    Welch-Costas インターリーバーでは、置換は、整数 k を mod(Ak,N + 1) - 1 にマップします。

  • [Type][Takeshita-Costello] に設定された場合、いくつかの整数 m に対しては N は 2m にしなければなりません。[Multiplicative factor] パラメーター k は N 未満の奇数の整数でなければなりません。[Cyclic shift] パラメーター h は N 未満の非負の整数でなければなりません。

    Takeshita-Costello インターリーバーは n 番目の要素が以下となる、長さ N の "循環ベクトル" を使用します。

    c(n)=mod(kn(n1)2,N)+1,n

    この場合、n は 1 から N までの整数です。中間の置換関数は、次の関係を使用することで取得されます。

    Π(c(n))=c(n+1)

    ここで、

    n=1:N

    インターリーバーの実際の置換ベクトルは、置換ベクトル π の要素を [Cyclic shift] パラメーターの h 分だけ、循環的にシフトした結果です。

パラメーター

Type

ブロックがインターリーブに使用する置換テーブルのタイプ。

Number of elements

入力ベクトルの要素の数 N。

Multiplicative factor

インターリーバーの循環ベクトルを計算するために使用する因子。このフィールドは、[Type][Takeshita-Costello] に設定されているときにだけ表示されます。

Cyclic shift

ブロックが置換テーブルを作成するときにインデックスをシフトする量。このフィールドは、[Type][Takeshita-Costello] に設定されているときにだけ表示されます。

Primitive element

有限体 GF(N+1) の次数 N の要素。このフィールドは、[Type][Welch-Costas] に設定されているときにだけ表示されます。

ペア ブロック

Algebraic Deinterleaver

参考文献

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

[2] Takeshita, O. Y. and D. J. Costello, Jr. "New Classes Of Algebraic Interleavers for Turbo-Codes." Proc. 1998 IEEE International Symposium on Information Theory, Boston, Aug. 16-21, 1998. 419.

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

R2006a より前に導入