使用fftw(3.3)时遇到问题。
我所做的是首先制定计划:
int n = 100;
vector<double> f,step;
vector<complex<double> > F;
fftw_plan p;
f.resize(n);
F.resize(n);
p = fftw_plan_dft_r2c_1d(n,&f[0], &F[0],FFTW_ESTIMATE);
然后我得到的是错误:
main.cpp:19:58: error: cannot convert ‘std::complex<double>*’ to ‘double (*)[2]’ for argument ‘3’ to ‘fftw_plan_s* fftw_plan_dft_r2c_1d(int, double*, double (*)[2], unsigned int)’
据我了解,可以使用标准复合词而不是fftw_complex和vector。
我确信我在这里错过了一个简单的观点。所以每一个帮助都会受到高度赞赏。
麻姑_
答案 0 :(得分:0)
@ filmor的方式有效。为了完整起见,正确的代码行是:
p = fftw_plan_dft_r2c_1d(n, &f[0], reinterpret_cast<fftw_complex*>(&F[0]), FFTW_ESTIMATE);
更全面地描述here。