自定义Matlab DFT结果不同于FFT


N=160; % No of Sample
for k = 1 : N
  dft(k) = 0;
  for n=1: N
    dft(k) = dft(k) + x(n) * exp(-1j*2*pi*(n-1)*(k-1)/N);
  end
end

在实现这个DFT之前,我已经使用以下方法创建了一个160采样的正弦信号,有10个周期:

for n=1:160
x(n) = sin(2*pi*10*n/160);
end

当使用fft():

xfft(2)的结果是-1.6580e-15+9.8769e-15i

但是,dft(2)的结果是-1.2262e-15 + 9.5732e-15i

结果应该是一样的,但我不知道问题在哪里....

谢谢

与正弦波的振幅相比,任何e-15(或e-15i)本质上是零(数值噪声)。因此,0 == 0,您的结果没有什么不同。

最新更新