ホーム 道しるべ 憩いの広場 濃緑空間 濃緑研の日記

Round2:DCT Matrix
ホーム ] 上へ ] 参戦メカニックリスト ] Round1:Orbit ] [ Round2:DCT Matrix ]

 

テスト走行模様
公式計測結果
公式結果 II

Round2は、MDCT用の行列乗算です。

 MDCTは、離散コサイン変換(DCT)と呼ばれる直交変換に改良を加えたものです。離散コサイン変換は入力信号列をサブバンド毎に分類する場合などに使われる変換で、逆変換を使えば、もとの信号列に復元できます。

 MDCTは、DCTにオーバーラップを持たせてブロック歪みを無くした変換で、MPEG Audioで採用されています。MDCTでは、実数変換に行列の掛け算を使いますので、大量の計算を行います。

 Round2 では、18*36の単精度実数行列と36次の単精度実数ベクトルを掛け合わせ、18次の実数ベクトルを計算します。これはMDCTの一番重い部分のコードになります。

 また、このロジックはRound1にも参戦されているへるみさんが制作に携わっておられる、「午後のこーだ」で使用されているMDCTルーチンの一部でもあります。


サーキットに関する最新情報についてはサーキット整備班のページをご覧下さい。

参考文献

「DCT入門」貴家仁志、村松正吾。CQ出版社

基本アルゴリズムを以下に示します。

float coeff[18][36]
float in_vector[36]
float out_vector[18]

for( i=0; i<18; i++)
{
    out_vector[ i ] = 0;
    for( j=0; j<36; j++ )
    {
        out_vector[ i ] += coeff[ i ][ j ] * in_vector[ j ];
    }
}

ベンチマークとしては上記処理をサーキットから与えられた回数分(int count)繰り返してもらいます。