我正在尝试使用以下片段对50个图像执行批处理FFT:

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元素)。有什么好的建议吗?
提前谢谢

最佳答案

你应该仔细阅读
您只需要在循环外创建一次计划,然后将其用作:

fftwf_execute_dft(plan_forward2, in2, f2h);

关于c - 如何在C中批处理FFT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3773689/

10-11 21:26