在網址列輸入[about:config]
==> 在滑鼠右鍵的清單上選擇[新增]/[真假(Boolean)值]
==> 在對話空盒內輸入[config.trim_on_minimize]後選[true], 按下確定
2008年10月28日 星期二
FFTW的使用
FFTW (Fastest Fourier Transform in the West), 一個計算DFT (Discrete Fourier Transform) 的C語言函式庫,是目前世界公認執行速度最快的傅立葉轉換軟體。FFTW是由當時為MIT博士班的兩位學生Matteo Frigo 及 Steven G. Johnson 在1997年所撰寫,並在1999年獲得Wilkinson數值軟體獎 (J. H. Wilkinson Prize for Numerical Software)。
FFTW的原理大致是這樣: 我們知道FFT是一種divide-and-conquer的演算法,這種演算法的特性就是將所輸入的N筆資料平分成幾組,再對這幾組資料繼續平分下去,直到每組資料只會含最少的容許數量 (比如一筆),然後再一層一層merge起來。這時,每次要分成幾組就值得分析了。根據實驗結果,輸入的資料量不同,若適當給予不同分組,其執行效能會有明顯改善!
FFTW的使用方法如下:
FFTW的原理大致是這樣: 我們知道FFT是一種divide-and-conquer的演算法,這種演算法的特性就是將所輸入的N筆資料平分成幾組,再對這幾組資料繼續平分下去,直到每組資料只會含最少的容許數量 (比如一筆),然後再一層一層merge起來。這時,每次要分成幾組就值得分析了。根據實驗結果,輸入的資料量不同,若適當給予不同分組,其執行效能會有明顯改善!
FFTW的使用方法如下:
1. 複數的資料型態:
fftw_complex ComplexNum;
ComplexNum[0] = 10.1; // real part
ComplexNum[1] = 20.5; // imaginary part
2. 1維 DFT:
// 資料宣告
int N = 256;
fftw_complex *in, *out;
fftw_plan p;
// 空間配置
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
// 製作輸入資料
// 產生最佳化的程式碼
p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
// 執行這個最佳化的程式碼
fftw_execute(p); /* repeat as needed */
// 釋放空間
fftw_destroy_plan(p);
fftw_free(in); fftw_free(out);
3. 多維 DFT:
將fftw_plan_dft_1d改為:
fftw_plan_dft_2d
fftw_plan_dft_3d
訂閱:
文章 (Atom)