fftw与c中的complex.h的接口

| 我正在使用此代码创建具有复杂数据类型的2D数组(来自c中的complex.h)。然后我想找到该数组的fft'inplace \'。但是,这会产生分段错误,我担心这是由于指针的不正确投射造成的。我们如何对fftw使用复杂的数据类型?
//a is a 2d array of size blockSize*NO_INPUTS

complex float* a=(complex float*)malloc(sizeof(complex float)*NO_INPUTS*blockSize);

//****** Put data in a*******//
//blah//
//blah//

//a has data now//

fftw_plan p;
p=fftw_plan_dft_2d(blockSize,NO_INPUTS,(fftw_complex*)a,(fftw_complex*)a,FFTW_FORWARD,FFTW_ESTIMATE);

fftw_execute(p);

fftw_destroy_plan(p);
请注意,我不想使用fftw_complex或fftw_malloc。 谢谢。     
已邀请:
fftw_complex
等同于
complex double
,您正在使用using3ѭ。那可能是段错误的根源。 尝试在
fftw3.h
之前包含
complex.h
,这样就不需要进行任何强制转换。 http://www.fftw.org/fftw3_doc/Complex-numbers.html     
FFTW默认情况下默认使用双精度浮点数。最简单的解决方法是将
float
的所有实例更改为
double
。但是,如果出于内存原因或其他原因想要继续使用
complex float
,则应使用此处概述的单精度fftw。您应该在所有fftw函数中将小写字母ѭ9更改为
fftwf
。例如,
fftw_plan
变为
fftwf_plan
。在编译时,应链接到
fftw3f
而不是
fftw3
。     

要回复问题请先登录注册