Main Content

algdeintrlv

代数的に求めた置換テーブルを使用したシンボル順序の復元

構文

deintrlvd = algdeintrlv(data,num,'takeshita-costello',k,h)
deintrlvd = algdeintrlv(data,num,'welch-costas',alph)

説明

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

deintrlvd = algdeintrlv(data,num,'welch-costas',alph) は、Welch-Costas 法を使用します。Welch-Costas 法では、num+1 は素数でなければなりません。alph は、1 と num との間の整数で、有限体 GF(num+1) の原始元を表します。

この関数を関数 algintrlv の逆関数として使用するには、data 入力を除き、両方の関数で同じ入力を使用します。その場合、2 つの関数は関数 algintrlv の後に関数 algdeintrlv を適用してもデータが変更されないという意味で、逆関数といえます。

すべて折りたたむ

この例では、関数 algintrlv と関数 algdeintrlv の Takeshita-Costello 法を使用します。

インターリーブするランダムなデータ シンボルを生成します。入力データの行数 num は 2 のべき乗でなければなりません。

num = 16; 
ncols = 3; 
data = rand(num,ncols)
data = 16×3

    0.8147    0.4218    0.2769
    0.9058    0.9157    0.0462
    0.1270    0.7922    0.0971
    0.9134    0.9595    0.8235
    0.6324    0.6557    0.6948
    0.0975    0.0357    0.3171
    0.2785    0.8491    0.9502
    0.5469    0.9340    0.0344
    0.9575    0.6787    0.4387
    0.9649    0.7577    0.3816
      ⋮

Takeshita-Costello 法を使用して、シンボルをインターリーブします。乗法係数 knum 未満の奇数の整数に設定し、巡回シフト hnum 未満の非負の整数に設定します。

k = 3;
h = 4;
intdata = algintrlv(data,num,'takeshita-costello',k,h)
intdata = 16×3

    0.9572    0.6555    0.1869
    0.2785    0.8491    0.9502
    0.1576    0.7431    0.7655
    0.0975    0.0357    0.3171
    0.8147    0.4218    0.2769
    0.1270    0.7922    0.0971
    0.9058    0.9157    0.0462
    0.9575    0.6787    0.4387
    0.5469    0.9340    0.0344
    0.1419    0.0318    0.6463
      ⋮

シンボルをデインターリーブして元の順序を取得します。

deintdata = algdeintrlv(intdata,num,'takeshita-costello',k,h)
deintdata = 16×3

    0.8147    0.4218    0.2769
    0.9058    0.9157    0.0462
    0.1270    0.7922    0.0971
    0.9134    0.9595    0.8235
    0.6324    0.6557    0.6948
    0.0975    0.0357    0.3171
    0.2785    0.8491    0.9502
    0.5469    0.9340    0.0344
    0.9575    0.6787    0.4387
    0.9649    0.7577    0.3816
      ⋮

参考文献

[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 より前に導入