Я вычислил БПФ массива {1,2,3,4,5,6} с помощью fftw/C++ и онлайн-калькулятора (http://calculator-fx.com/calculator/fast-fourier-transform-calculator-fft/1d-discrete-fourier-transform). И результаты, казалось, были немного разными.fftw и онлайн-калькулятор DFT получают разные результаты
FFTW выход:
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
Интернет Выход калькулятор:
21 + 0j -3 + 5.196152j -3 + 1.732051j -3 + 0j -3 - 1.732051j -3 - 5.196152j
Как показано выше, последние два результата FFTW оказалось равным нулю. Не могу понять, почему. Может ли кто-нибудь помочь мне? Благодарю.
[Изменено] код каст:
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 %12lf\n", i, out[i][0], out[i][1]);
}
fftw_free(out);
fftw_destroy_plan(plan);
return 0;
}
Как именно вы вызываете FFTW? Потому что этот результат определенно неверен. –
Привет, мой код прилагается. – babel92