书上有这么一段:
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)
为什么选择这两个奇怪的频率呢?因为这两个频率的正弦波在512个取样点中正好有整数个周期。满足
这个条件波形的FFT结果能够精确地反映其频谱。
N点FFT能精确计算的频率
假设取样频率为fs, 取波形中的N个数据进行FFT变换。那么这N点数据包含整数个周期的波形时,
FFT所计算的结果是精确的。于是能精确计算的波形的周期是: n*fs/N。对于8kHz取样,512点
FFT来说,8000/512.0 = 15.625Hz,前面的156.25Hz和234.375Hz正好是其10倍和15倍。
对于信号x(t)=sin(2*pi*f*t)始终是周期信号,周期T可以是小数。但对于离散信号来说,离散序列x[n]=sin(w*n)=sin(2*pi*f/fs*n)
的周期N应该是一个整数,否则不再是周期序列。
具体操作:
1. 按w来计算:
w*N = 2*pi*r,使之成立的最小整数N即是它的周期
2. 按f来计算:
f/fs*N = r,使之成立的最小整数N是它的周期
而上面书中提到的很关键的一句话,只有采样整数个周期的正弦波才能求出准确的FFT,就可以理解了。