J'essaie d'utiliser la FFT multidimensionnelle fftwf_plan_dft_r2c_2d à partir d'une seule matrice de données. J'ai points de données M, le nombre N de fois:FFTW FFT multidimensionnel
float *input = (float*)malloc(M * N * sizeof(float));
// load M*N data points data
fftwf_complex *outputFFT = (fftwf_complex*)fftwf_malloc(N * ((M/2) + 1) * sizeof(fftwf_complex));
fftwf_plan forwardFFTPlan = fftwf_plan_dft_r2c_2d(N, M, input, outputFFT, FFTW_ESTIMATE);
fftwf_execute(forwardFFTPlan);
fftwf_destroy_plan(forwardFFTPlan);
// Plot M data points, ignore the rest. Plotting magnitude of the data sqrtf(([REAL] * [REAL]) + ([IMAG] * [IMAG]))
Les résultats FFT ne sont pas correctes (validée par le travail script MATLAB), mais si je prends juste un des points de données 1D FFT de M:
for(int i = 0; i < N; i++)
{
float *input = (float*)malloc(M * sizeof(float));
// load M data points
fftwf_complex *outputFFT = (fftwf_complex*)fftwf_malloc(((M/2) + 1) * sizeof(fftwf_complex));
fftwf_plan forwardFFTPlan = fftwf_plan_dft_r2c_1d(M, input, outputFFT, FFTW_ESTIMATE);
fftwf_execute(forwardFFTPlan);
fftwf_destroy_plan(forwardFFTPlan);
}
// Plot M data points, ignore the rest. Plotting magnitude of the data sqrtf(([REAL] * [REAL]) + ([IMAG] * [IMAG]))
le résultat est correct. Les données chargées dans le tableau sont les mêmes. Qu'est-ce que je ne comprends pas sur les FFT multidimensionnelles? J'ai lu les pages d'aide et j'ai "pensé" que je le faisais bien, mais évidemment il me manque quelque chose ...