2
내가 FastFourier 문제 (FFTW3) FFTW3 나중에를 이용하여 복소 주파수 도메인으로 변환 된 100 × 100 샘플생성 fttw3 2D 플랜 부분적
데이터> I가 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);
0,123,516처럼 보인다
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
이 내 코드입니다
내 문제는 이제 backwardA와 backwardB가 유효하지만 forwardA와 forwardB가 0x0을 가리킨다는 것입니다.
왜 이런 일이 발생하는지 알고 싶습니다.
fftw_plan forwardA = fftw_plan_dft_r2c_2d(nrows,ncols,Aa,Af,FFTW_ESTIMATE);
작업을해야한다 :
오케이 ... 문제를 발견했습니다. r2c 함수는 한 방향 만 가질 수 있습니다. 그래서 분명히 라이브러리는 추가 정보를 좋아하지 않습니다 : D 해결 : 플래그가 필요하지 않은 FTW_FORWARD – lyk