FFTW中的高效计划r2c 1d

时间:2013-12-03 17:06:12

标签: c++ performance fftw

我读过,FFTW计划需要几秒钟,因此最好一次调用它,并在for循环调用execute()中调用。这是我的情况。但是当然,在每个循环中,输入数据都不同,但大小是相同的,那么我该如何改进呢?是否可以使用布尔变量更好地解决?

fftw_plan my_plan;

in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*N);
v = (double*) fftw_malloc(sizeof(double)*N);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*N);


my_plan =fftw_plan_dft_r2c_1d(N,v,out,FFTW_ESTIMATE);
fftw_execute(my_plan);


fftw_destroy_plan(my_plan);

另外,这个dft的r2c只是前进?

1 个答案:

答案 0 :(得分:0)

您可以为每个FFT重复使用相同的缓冲区(通常需要将数据复制到输入/输出缓冲区中,或者可能在整数和浮点之间进行转换)或者您可以使用“很多”之一FFTW计划来自advanced interface,使用例如fftw_plan_many_dft()

对于逆FFT,您可能需要使用上述任一方法的C2R计划,并在创建计划时使用FFTW_BACKWARD标志。