2 votes

fttw3 créer un plan 2D échoue partiellement

J'ai un problème avec FastFourier... ( FFTW3 )

données de 100x100 échantillons > transformées en domaine de fréquence complexe en utilisant FFTW3 et plus tard je veux utiliser la rétro-transformation

plan prévisionnel :

fftw_plan fftw_plan_dft_r2c_2d(int n0, int n1,
                                double *in, fftw_complex *out,
                                unsigned flags);

L'inverse ressemble à ceci

fftw_plan fftw_plan_dft_c2r_2d(int n0, int n1,
                                fftw_complex *in, double *out,
                                unsigned flags);

Voici mon code :

int ncols = 100;  // a 100x100 picture
int nrows = 100; 
int nccols = ncols/2+1;

// le complexe doit être alloué n/2+1 en fonction de // 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);

C'est exactement le même code qu'ici : http://werner.yellowcouch.org/Papers/subimg/index.html

Mon problème maintenant est que forwardA et forwardB pointent vers 0x0 alors que backwardA et backwardB sont valides.

Une idée de la raison pour laquelle cela se produit ?

0voto

user2101285 Points 1

Essayez ça :

fftw_plan forwardA = fftw_plan_dft_r2c_2d(nrows,ncols,Aa,Af,FFTW_ESTIMATE);

qui devrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X