メインコンテンツ

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
    0.1576    0.7431    0.7655
    0.9706    0.3922    0.7952
    0.9572    0.6555    0.1869
    0.4854    0.1712    0.4898
    0.8003    0.7060    0.4456
      ⋮

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
    0.4854    0.1712    0.4898
    0.6324    0.6557    0.6948
    0.9134    0.9595    0.8235
    0.9706    0.3922    0.7952
    0.8003    0.7060    0.4456
      ⋮

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

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
    0.1576    0.7431    0.7655
    0.9706    0.3922    0.7952
    0.9572    0.6555    0.1869
    0.4854    0.1712    0.4898
    0.8003    0.7060    0.4456
      ⋮

参考文献

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