Main Content

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

algintrlv

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

構文

intrlvd = algintrlv(data,num,'takeshita-costello',k,h)
intrlvd = algintrlv(data,num,'welch-costas',alph)

説明

intrlvd = algintrlv(data,num,'takeshita-costello',k,h) は、置換テーブルを使用して data の要素を再配列します。この置換テーブルは、Takeshita-Costello 法で代数的に求めたものです。num は、data がベクトルの場合には data の要素数であり、data が複数の列をもつ行列の場合には data の行数です。Takeshita-Costello 法では、num は 2 のべき乗でなければなりません。乗法係数 k は、num 未満の奇数の整数でなければなりません。また、巡回シフト h は、num 未満の非負の整数でなければなりません。data が複数の行と列をもつ行列である場合、この関数は列を個別に処理します。

intrlvd = algintrlv(data,num,'welch-costas',alph) は、Welch-Costas 法を使用します。Welch-Costas 法では、num+1 は素数でなければなりません。alph は、1 と num との間の整数で、有限体 GF(num+1) の原始元を表します。これは、GF(num+1) の非ゼロの各要素を、alph の整数乗として表現できることを意味します。

すべて折りたたむ

この例では代数インターリーブの Welch-Costas 法の使用方法について説明します。

num+1 が素数となるように num を定義します。インターリーブするデータを作成します。

num = 10; 
ncols = 3; % Number of columns of data to interleave
data = randi([0 num-1],num,ncols); % Random data to interleave

有限体 GF(num+1) の原始多項式を求めます。関数 gfprimfd は、各原始多項式を昇べきの順で係数を格納する行として表します。

pr = gfprimfd(1,'all',num+1)
pr = 4×2

     3     1
     4     1
     5     1
     9     1

出力から、pr に列は 2 列で 2 列目は 1 だけで構成されていることがわかります。言い換えると、各原始多項式は最高次の係数が 1 に等しい多項式です。こうなるのは、num+1 が素数だからです。したがって、各原始多項式の根である原始元を求めるには、多項式の根を求めればよく、具体的には、num+1 から pr の最初の列を減算します。

primel = (num+1)-pr(:,1) % Primitive elements of GF(num+1)
primel = 4×1

     8
     7
     6
     2

次に、alphprimel の要素の 1 つとして定義し、関数 algintrlv を使用してインターリーブします。

alph = primel(1); 
intrlvd = algintrlv(data,num,'Welch-Costas',alph);

アルゴリズム

  • Takeshita-Costello インターリーバーでは、1 ~ num までの整数 n に対する n 番目の要素が mod(k*(n-1)*n/2, num) である長さ-num の循環ベクトルを使用します。この関数は循環ベクトルの各要素に対して昇順で次の要素に 1 を加えて並べた置換ベクトルを生成します。インターリーバーの実際の置換テーブルは、置換ベクトルの要素を左に h だけシフトした結果です (この関数は数とインデックスの剰余 num をすべて計算します)。

  • Welch-Costas インターリーバーでは、整数 Kmod(AK,num+1)-1 にマッピングする置換を使用します。

参考文献

[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. p. 419.

拡張機能

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

R2006a より前に導入