2
我有FastFourier ...(FFTW3)的100×100样品fttw3创建2D计划部分失败
数据>使用FFTW3 后来就变换到复频域我想使用backtransform一个问题
远期计划:
fftw_plan fftw_plan_dft_r2c_2d(int n0, int n1,
double *in, fftw_complex *out,
unsigned flags);
逆看起来就像这样
fftw_plan fftw_plan_dft_c2r_2d(int n0, int n1,
fftw_complex *in, double *out,
unsigned flags);
这是我的代码:
int ncols = 100; // a 100x100 picture
int nrows = 100;
int nccols = ncols/2+1;
//络合物具有根据 // http://www.fftw.org/doc/Multi_002dDimensional-DFTs-of-Real-Data.html
double * Aa = (double*)fftw_malloc(sizeof(double)*ncols*nrows);
fftw_complex * Af = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*nccols*nrows);
double * Ba = (double*)fftw_malloc(sizeof(double)*ncols*nrows);
fftw_complex * Bf = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*nccols*nrows);
double * Bc = (double*)fftw_malloc(sizeof(double)*ncols*nrows);
fftw_plan forwardA = fftw_plan_dft_r2c_2d(nrows,ncols,Aa,Af,FFTW_FORWARD | FFTW_ESTIMATE);
fftw_plan backwardA = fftw_plan_dft_c2r_2d(nrows,ncols,Af,Aa,FFTW_BACKWARD | FFTW_ESTIMATE);
fftw_plan forwardB = fftw_plan_dft_r2c_2d(nrows,ncols,Ba,Bf,FFTW_FORWARD | FFTW_ESTIMATE);
fftw_plan backwardB = fftw_plan_dft_c2r_2d(nrows,ncols,Bf,Bc,FFTW_BACKWARD | FFTW_ESTIMATE);
这正是如此相同的代码为N/2 + 1分配:http://werner.yellowcouch.org/Papers/subimg/index.html
我现在的问题是forwardA和forwardB指向0x0,而backwardA和backwardB是有效的。
关于为什么发生这种情况的任何想法?
好的...我发现了这个问题。 r2c功能只有一个可能的方向。显然,图书馆不喜欢附加信息:D SOLUTION:FTW_FORWARD作为标志是没有必要的 – lyk 2013-02-08 18:30:21