复数在c++中的用法

usage of complex numbers in c++

本文关键字:用法 c++      更新时间:2023-10-16

我有一个问题使用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。

我肯定我在这里漏掉了一个简单的点。因此,我们将非常感谢您的帮助。

magu_

@filmor的方法奏效了。为了完整起见,正确的代码行应该是:

 p = fftw_plan_dft_r2c_1d(n, &f[0], reinterpret_cast<fftw_complex*>(&F[0]), FFTW_ESTIMATE);