[英]FFTW results differ from FFT in MATLAB
我使用FFTW和MATLAB fft
比較正向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];
}
MATLAB中的fft
函數:
fft(signal);
我繪制了兩個結果的實部和虛部:
實部幾乎是相同的值,而虛部具有完全不同的值。 如何解決這個問題?
您應該在“Imag”的圖表上查看左側繪圖的比例因子。 它說10 ^ -15。 這與真實信號幅度(至少較大的部分> 10 ^ 1)相比非常小,因此結果非常相似。
浮點算法通常傾向於不提供完全相同的結果,只要它們沒有完全以相同的方式實現。 (即便如此,他們可以通過不同的舍入選項來區分)。
此QA可能會提供一些見解: 浮點不准確示例
舍入到最接近滿量程的0.001%(實數),注意虛數值都為零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.