我正在尝试编写一个程序来计算特定的非整数频率分量的幅度和相位(即给定长度为的采样有限信号,我想知道频率为 40.678 Hz 的频谱的幅度和相位)。
我尝试使用离散时间傅里叶变换的方程:
这样
我这样做如下:
t = np.linspace(0,1,100)
x = np.sin(2*np.pi*40.678*t)
Xf = 0
for n in range(len(x)):
Xf += (x[n]*np.exp((-np.complex(0,1))*2*np.pi*40.678*n))
print(abs(Xf))
其中打印。
我知道这是错误的,因为如果我按如下方式进行 FFT:
X = np.fft.fft(x)
plt.figure();
plt.plot(abs(X))
级的峰值(我在校正轴后假设是)。
造成这种差异的原因是什么?我还尝试了 DFT 的方程,就像我这次对上面的 DTFT 代码所做的那样来测量频率为 50 Hz 的正弦曲线在 50 Hz 处的幅度,与 FFT 的图相比,我再次得到一个完全错误的值。 .
是什么导致了这种差异?
谢谢你。
