1

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 の代わりに standard complex を使用できます。

ここで単純な点を見逃していると確信しています。そのため、あらゆる助けをいただければ幸いです。

magu_

4

1 に答える 1

0

@filmorのやり方がうまくいきました。完全を期すために、正しいコード行は次のようになります。

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

より一般的にここで説明します。

于 2013-04-12T06:16:32.250 に答える