我想做一个'complex_to_real'转换,它意味着IFFT。我意识到我需要保留转换的输入以供以后使用,所以我在'dft'的计划中添加了标志:“PRESERVE_INPUT”。
添加此标志后,我在编译时出现问题,它转到'dbgmalloc.c',这意味着它应该是一个分配内存问题,但我没有改变任何东西,没有新标志它工作得很好。
你能给我一些提示吗?
// IFFT ( U1,U2 --> u1,u2)
//----IFFT-----
double *u1 = (double*) malloc(sizeof(double)*N_fft);
double *u2 = (double*) malloc(sizeof(double)*N_fft);
fftw_plan p3;
fftw_plan p4;
p3 = fftw_plan_dft_c2r_2d(alto, ancho, U1, u1, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
p4 = fftw_plan_dft_c2r_2d(alto, ancho, U2, u2, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
fftw_execute(p3);
fftw_execute(p4);
fftw_destroy_plan(p3);
fftw_destroy_plan(p4);
此致
安东尼奥
答案 0 :(得分:2)
从这个链接可以看出,多维真实DFT不支持这个标志
http://www.fftw.org/doc/One_002dDimensional-DFTs-of-Real-Data.html
如上所述,即使对于异地变换,c2r变换也会破坏其输入数组。如果需要,可以通过在标志中包含FFTW_PRESERVE_INPUT来防止这种情况,遗憾的是性能上有所牺牲。多维真实DFT目前也不支持此标志(下一节)。