2010-09-22 57 views
1

試圖做一個批次FFT上使用下面的代碼片段50張圖片:我如何批量FFT用C

pix3 = n*pix1*pix2; 
fftwf_complex *in2, *f2h; //input for FFT2 
in2 = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * pix3); 
f2h = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * pix3); 

for (i = 0; i < pix3; i++) 
{ 
in2[i][0] = ref20[i]; //ref20 is an array of real values 
in2[i][1] = 0; 
}  

for(i = 0; i < n; ++i) 
{ 
    plan_forward2 = fftwf_plan_dft_2d (pix1, pix2, in2, f2h, FFTW_FORWARD, FFTW_ESTIMATE); 
    fftwf_execute (plan_forward2); 
    in2 += pix1*pix2; 
    f2h += pix1*pix2; 
} 

不過,我只能夠獲得第一圖象的FFT(即第一PIX1 * pix2元素)。任何建議如何得到這個權利?

在此先感謝

+0

您可能需要顯示在初始內存分配和for循環之間的代碼,即實際將圖像加載到in2中的部分。 – 2010-09-22 21:27:07

+0

mem分配後,我只是從文本文件中讀取數據(size = pix3),然後將我的變量轉換爲複雜類型(in2) – vivekv80 2010-09-22 21:37:44

回答

2

你應該閱讀the manual 4.6 New-array Execute Functions仔細

你只需要外循環一旦創建計劃,然後用它作爲:

fftwf_execute_dft(plan_forward2, in2, f2h); 
+0

「高級」接口允許批處理,這就是我正在使用的... I不知道重複使用相同的計劃是否會以較低的內存消耗獲得相同的速度。 – 2015-11-12 15:27:32