我读过,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只是前进?
答案 0 :(得分:0)
您可以为每个FFT重复使用相同的缓冲区(通常需要将数据复制到输入/输出缓冲区中,或者可能在整数和浮点之间进行转换)或者您可以使用“很多”之一FFTW计划来自advanced interface,使用例如fftw_plan_many_dft()
对于逆FFT,您可能需要使用上述任一方法的C2R计划,并在创建计划时使用FFTW_BACKWARD
标志。