我尝试在FFTW的网站上为2D DFT运行一些示例代码,但是在调用rfftw2d_create_plan时崩溃。这是代码:
int M = COLS, N = ROWS;
fftw_real a[M][2*(N/2+1)], b[M][2*(N/2+1)], c[M][N];
fftw_complex *A, *B, C[M][N/2+1];
rfftwnd_plan p, pinv;
fftw_real scale = 1.0 / (M * N);
p = rfftw2d_create_plan(M, N, FFTW_REAL_TO_COMPLEX,
FFTW_ESTIMATE | FFTW_IN_PLACE);
程序在最后一行出现段错误
thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x7ffeef24eba8)
-> 26 p = rfftw2d_create_plan(H, W, FFTW_REAL_TO_COMPLEX,
有关如何解决此问题的任何建议?我一直在搜寻互联网无济于事。谢谢!
此外,这是指向我尝试运行的网站上的示例代码的链接: http://www.fftw.org/fftw2_doc/fftw_2.html
它在真正的多维转换教程中。
编辑:太好了,我确定这与输入大小(M,N)有关。如果将它们更改为500x500,则不会出现段错误,但是如果我做我需要的操作(640,480),则会出现段错误。因此,如果有人知道为什么会发生这种情况,请告诉我,谢谢!