我正在寻找如何将通过scipy.fftpack.fftfreq获取的fft的频率轴转换为赫兹频率,而不是二进制或分数二进制。我尝试了以下代码来测试FFT:
采样率应为4000个样本/120秒=33.34个样本/秒。
信号具有2.0赫兹的信号、8.0赫兹的信号和一些随机噪声。
我进行FFT处理,获取频率并绘制图形。这些数字相当荒谬。如果我将频率乘以33.34(采样频率),那么我会在大约8赫兹和15赫兹处得到峰值,这似乎是错误的(此外,频率应该相差4倍而不是2倍!)。
对此您有什么想法吗?
t = scipy.linspace(0,120,4000)
acc = lambda t: 10*scipy.sin(2*pi*2.0*t) + 5*scipy.sin(2*pi*8.0*t) + 2*scipy.random.random(len(t))
signal = acc(t)
FFT = abs(scipy.fft(signal))
FFT = scipy.fftpack.fftshift(FFT)
freqs = scipy.fftpack.fftfreq(signal.size)
pylab.plot(freqs,FFT,'x')
pylab.show()
采样率应为4000个样本/120秒=33.34个样本/秒。
信号具有2.0赫兹的信号、8.0赫兹的信号和一些随机噪声。
我进行FFT处理,获取频率并绘制图形。这些数字相当荒谬。如果我将频率乘以33.34(采样频率),那么我会在大约8赫兹和15赫兹处得到峰值,这似乎是错误的(此外,频率应该相差4倍而不是2倍!)。
对此您有什么想法吗?