MATH_IFFTReal

構文

#include <nitro/math/fft.h>

void MATH_IFFTReal( fx32* data, u32 nShift, const fx16* sinTable, const fx16* sinTable2 );

引数

data 変換するデータへのポインタ。変換後のデータは上書きされる。
nShift 出力予定の実数の個数に2を底とした対数を取った値。
sinTable sin 値のテーブルのポインタ。
sinTable2 sinTable を一つおきに間引いた sin 値テーブルへのポインタ。

返り値

なし。

説明

離散フーリエ変換の逆変換を高速フーリエ変換のアルゴリズムを用いて行います。
MATH_FFTReal()の出力形式の複素数列データを、同関数の入力形式である実数列データに変換します。

以下、2nShift(2のnShift乗) を N と置きます。data は fx32 型の長さ N の配列で、MATH_FFTReal()の出力形式のデータです。
sinTable は sinTable[k] = sin( (2π/N) * k ) (k = 0, 1,..., N*3/4-1) となるように fx16 型の sin 値を代入した、長さ N*3/4 の配列へのポインタです。MATH_MakeFFTSinTable()で作成することもできます。
sinTable2 は sinTable2[k] = sin( (2π/(N/2)) * k ) (k = 0, 1,..., (N/2)*3/4-1) となるように fx16 型の sin 値を代入した、長さ (N/2)*3/4 の配列へのポインタです。MATH_MakeFFTSinTable()で nShift 引数に1少ない値を与えて作成することもできます。

固定小数点数を用いて計算しているため、大きな値を入力として与えると桁あふれを起こす危険があります。 入力値を s32 型として見たときの絶対値が 0x80000000/N 以上にならないことを目安としてください。 また、順変換と逆変換を行った場合の誤差は最大で FX32_ONE の数倍程度となります。

参照

MATH_MakeFFTSinTable, MATH_FFT, MATH_IFFT, MATH_FFTReal

履歴

2005/07/21 sinTable の説明の修正
2005/07/11 説明の修正
2005/05/13 初版