/ / fftw und Online-DFT-Rechner erhalten unterschiedliche Ergebnisse - c ++, fft, fftw, dft

fftw und online DFT-Rechner erhalten unterschiedliche Ergebnisse - c ++, fft, fftw, dft

Ich habe die FFT von Array {1,2,3,4,5,6} mit fftw / C ++ und einem Online-Rechner (http://calculator-fx.com/calculator/fast-fourier-transform-calculator-fft/1d-discrete-fourier-transform). Und die Ergebnisse schienen etwas anders zu sein.

fftw ausgabe:

0     21.000000      0.000000
1     -3.000000      5.196152
2     -3.000000      1.732051
3     -3.000000      0.000000
4      0.000000      0.000000
5      0.000000      0.000000

Online-Rechnerausgabe:

 21 + 0j
-3 + 5.196152j
-3 + 1.732051j
-3 + 0j
-3 - 1.732051j
-3 - 5.196152j

Wie oben gezeigt, sind die letzten beiden Ergebnisse von fftw gleich Null geworden. Kann nicht herausfinden warum. Kann mir jemand helfen? Danke.

[BEARBEITET] CPP-Code:

int main()
{
fftw_complex *out;
fftw_plan plan;

double arr[]={1,2,3,4,5,6};
int n = sizeof(arr)/sizeof(double);

out = (fftw_complex*)fftw_malloc ( sizeof ( fftw_complex ) * n );
plan = fftw_plan_dft_r2c_1d ( n, arr, out, FFTW_ESTIMATE );
fftw_execute ( plan );

for (int i = 0; i < n; i++ )
{
printf ( "  %3d  %12lf  %12lfn", i, out[i][0], out[i][1] );
}

fftw_free(out);
fftw_destroy_plan(plan);
return 0;
}

Antworten:

6 für die Antwort № 1

Oh, Sie verwenden den R2C-Modus (wissen Sie nicht, warum ich vorher nicht darüber nachgedacht habe). Das schreibt aufgrund der Symmetrie nur n / 2 + 1-Ergebnisse.

Dieses Verhalten ist dokumentiert: http://www.fftw.org/doc/One_002dDimensional-DFTs-of-Real-Data.html.