「Complex DFTs」の編集履歴(バックアップ)一覧はこちら

Complex DFTs」(2009/03/24 (火) 12:57:27) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

[[FFTWマニュアル]] - [[FFTWリファレンス>FFTW Reference]] - [[ベーシックインターフェース>>Basic Interface]] - [[複素離散フーリエ変換>>Complex DFTs]] * 複素離散フーリエ変換 fftw_plan fftw_plan_dft_1d( int n, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan fftw_plan_dft_2d( int nx, int ny, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan fftw_plan_dft_3d( int nx, int ny, int nz, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan fftw_plan_dft( int rank, const int *n, fftw_complex *in, fftw_complex *out, int sign, unsigned flags );  複素数を入出力とする、0次元または多次元の離散フーリエ変換(DFT)をおこない、fftw_planを返り値として返します(4.2章[[プランの利用>>Using Plans]]参照)。  一たび、特定の型及びパラメータに対しプランを作り、その後同じ型、パラメータに対する異なるプラン(ただし対象とする配列が異なるもの)を生成すれば、プラン生成は高速におこなわれ、最初のプランと同じデータは共有されます(仮に最初のプランがまだ存在すれば)。  プランナーは、プランの生成に失敗すればNULLを返します。 FFTWの設定をカスタマイズして、特定の変換を行うようにしない限りベーシックインターフェースは常にNULLでない値を返します。 ** 引数 *** rank ランク(rank)は変換の次元(配列*nのサイズであるはずです)であり、任意の非負整数をとりえます。"_1d","_2d","_3d"のプランナーはそれぞれrankが1,2,3に対応します。rankが0は、サイズ1の変換に対応し、これはすなわち1つの数を入力から出力へコピーとなります。 *** n, nx, ny, nz, n[rank] nまたは、nx,ny,nzもしくは、n[rank]はそれぞれ変換の次元のサイズを与え、任意の非負整数をとりえます。 - 多次元の配列は列メジャー順で次元が格納されます。すなわちnx x ny、あるいはnx x ny x nz、あるいはn[0] x n[1] x ... n[rank-1]という順です。詳細は3.2章の[[多次元配列のフォーマット>>Multi-dimensional Array Format]]参照。 - FFTWは配列サイズが$$2^a3^b5^c7^d11^e13^f$$の時に、最高に性能が発揮され ます。ただし、e+fは、0か1で他の係数(a,b,c,d)は任意です。他のサイズの時は、一般的なアルゴリズムを用いた遅いアルゴリズムで計算されます(それでも遅くてもO(nlogn)の次元です)。FFTWを違うサイズ用にカスタマイズすることもできるので、必要なら8章のInstallation and Customizationを参照してください。2の階乗のサイズの変換はとりわけ高速に計算できます。 *** in, out inとoutは変換の入力および出力の配列を表し、同じものを取りえます(in-place変換)。これらの配列は、FFTW_ESTIMATEフラグが使われない限り、プラン生成の際に値が上書きされます。(配列は初期化する必要はないが、確保する必要があります)。 in == outの時には、変換はin-placeとなり、入力配列は上書きされます。in != outであれば、2つの配列はメモリ領域が重なってはいけません(FFTWはこの条件はチェックしません)。 *** sign signはフーリエ変換を定義するエクスポーネントです。-1(=FFTW_FOWRARD)もしくは+1(FFTW_BACKWARD)の値をとります。 ※変換の方向と考えてよい *** flags flagはビットごとのORで構成されるゼロ以上のフラグです。24ページの4.3.2章の[[プランナーフラグ>>Planner Flags]]で定義されます。 &color(red){FFTWの演算では規格化がされません}。すなわち、逆変換を行った後、正変換(またはその逆)を行うと、計算結果は元のデータを変換のサイズ倍(配列の次元の積)されます。より詳しい情報は、4.7章の[[What FFTW Really Computes>>What FFTW Really Computes]]を参照してください。
[[FFTWマニュアル]] - [[FFTWリファレンス>FFTW Reference]] - [[ベーシックインターフェース>>Basic Interface]] - [[複素離散フーリエ変換>>Complex DFTs]] * 複素離散フーリエ変換 fftw_plan fftw_plan_dft_1d( int n, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan fftw_plan_dft_2d( int nx, int ny, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan fftw_plan_dft_3d( int nx, int ny, int nz, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan fftw_plan_dft( int rank, const int *n, fftw_complex *in, fftw_complex *out, int sign, unsigned flags );  複素数を入出力とする、0次元または多次元の離散フーリエ変換(DFT)をおこない、fftw_planを返り値として返します(4.2章[[プランの利用>>Using Plans]]参照)。  一たび、特定の型及びパラメータに対しプランを作り、その後同じ型、パラメータに対する異なるプラン(ただし対象とする配列が異なるもの)を生成すれば、プラン生成は高速におこなわれ、最初のプランと同じデータは共有されます(仮に最初のプランがまだ存在すれば)。  プランナーは、プランの生成に失敗すればNULLを返します。 FFTWの設定をカスタマイズして、特定の変換を行うようにしない限りベーシックインターフェースは常にNULLでない値を返します。 ** 引数 *** rank ランク(rank)は変換の次元(配列*nのサイズであるはずです)であり、任意の非負整数をとりえます。"_1d","_2d","_3d"のプランナーはそれぞれrankが1,2,3に対応します。rankが0は、サイズ1の変換に対応し、これはすなわち1つの数を入力から出力へコピーとなります。 *** n, nx, ny, nz, n[rank] nまたは、nx,ny,nzもしくは、n[rank]はそれぞれ変換の次元のサイズを与え、任意の非負整数をとりえます。 - 多次元の配列は列メジャー順で次元が格納されます。すなわちnx x ny、あるいはnx x ny x nz、あるいはn[0] x n[1] x ... n[rank-1]という順です。詳細は3.2章の[[多次元配列のフォーマット>>Multi-dimensional Array Format]]参照。 - FFTWは配列サイズが$$2^a3^b5^c7^d11^e13^f$$の時に、一番性能が発揮され ます。ただし、e+fは、0か1で他の係数(a,b,c,d)は任意です。他のサイズの時は、一般的なアルゴリズムを用いた遅いアルゴリズムで計算されます(それでも遅くてもO(nlogn)の次元です)。FFTWを違うサイズ用にカスタマイズすることもできるので、必要なら8章のInstallation and Customizationを参照してください。2の階乗のサイズの変換はとりわけ高速に計算できます。 *** in, out inとoutは変換の入力および出力の配列を表し、同じものを取りえます(in-place変換)。これらの配列は、FFTW_ESTIMATEフラグが使われない限り、プラン生成の際に値が上書きされます。(配列は初期化する必要はないが、確保する必要があります)。 in == outの時には、変換はin-placeとなり、入力配列は上書きされます。in != outであれば、2つの配列はメモリ領域が重なってはいけません(FFTWはこの条件はチェックしません)。 *** sign signはフーリエ変換を定義するエクスポーネントです。-1(=FFTW_FOWRARD)もしくは+1(FFTW_BACKWARD)の値をとります。 ※変換の方向と考えてよい *** flags flagはビットごとのORで構成されるゼロ以上のフラグです。24ページの4.3.2章の[[プランナーフラグ>>Planner Flags]]で定義されます。 &color(red){FFTWの演算では規格化がされません}。すなわち、逆変換を行った後、正変換(またはその逆)を行うと、計算結果は元のデータを変換のサイズ倍(配列の次元の積)されます。より詳しい情報は、4.7章の[[What FFTW Really Computes>>What FFTW Really Computes]]を参照してください。

表示オプション

横に並べて表示:
変化行の前後のみ表示: