Я сравниваю FFT вперед, используя FFTW и MATLAB fft
.Входной сигнал гауссовский.Код:
FFTW с использованием функции C:
float *signal; /*input signal*/
int nt; /*length of the signal*/
fftw_complex *in, *out;
fftw_plan plan1;
in = fftw_malloc(nt*sizeof(fftw_complex));
out = fftw_malloc(nt*sizeof(fftw_complex));
for (j=0;j<nt;j++){
in[j][0]=(double)signal[j];
in[j][1]=0.0;
}
plan1 = fftw_plan_dft_1d(nt, in, out, -1, FFTW_ESTIMATE);
fftw_execute(plan1);
fftw_destroy_plan(plan1);
for (j=0;j<nt;j++){
real[j]=(float)out[j][0];
imag[j]=(float)out[j][1];
}
fft
в MATLAB:
fft(signal);
Я рисую действительные и мнимые части обоих результатов:
![fft vs fftw](https://i.stack.imgur.com/jaCQt.png)
Действительная часть имеет почти одинаковое значение, тогда как мнимая часть имеет совершенно разные значения.Как решить эту проблему?