3

FFTW や numpy.fft などの FFT ライブラリは通常、2 つの関数fft()ifft()(および実数値入力用の特別なバージョン) を提供します。これらの関数は、次のように定義されているようです。

ifft(fft(X)) == X

fft(X) == constant_factor * reverse(ifft(X))

複雑な入力を選択ifft()して操作する際に考慮すべき実用的または技術的な理由はありますか? (信号、時間または空間ドメイン) と(スペクトル、周波数ドメイン)fft()の解釈は異なりますが、計算上問題になることはありますか?Xfft(X)

4

1 に答える 1

5

異なる fft ライブラリは、両方の fft、ifft、または 1/sqrt(N) の異なる場所にスケーリング定数を配置します。したがって、これは実装に依存するわずかな違いにすぎません。fft と ifft は結果の順序を逆にします。したがって、結果配列で順方向または逆方向にインデックスを作成することの違いはそれだけです。1 つの時間/空間と周波数を呼び出すかどうかは、ラベル付けの違いにすぎません。

したがって、実際には、ライブラリが使用するスケールと、結果にインデックスを付けたい方向が最も読みやすいコードを生成するものを選択してください。通常、fft/ifft ライブラリは、正の時間と高い周波数を同じ方向 (++) にインデックス付けできるように設定されています。

追加: マイナーな、おそらく不必要な最適化: とにかく FT の結果をポストスケールする必要がある場合は、組み込みのスケール乗算を含まない fft または ifft 実装を選択してください。

于 2011-10-13T01:54:40.217 に答える