相关疑难解决方法(0)

Scipy/Numpy FFT频率分析

我正在寻找如何将fft中的频率轴(通过scipy.fftpack.fftfreq获取)转换为赫兹频率,而不是箱子或分数箱.

我尝试在下面编写代码来测试FFT:

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()
Run Code Online (Sandbox Code Playgroud)

采样率应为4000个样本/ 120秒= 33.34个样本/秒.

该信号具有2.0 Hz信号,8.0 Hz信号和一些随机噪声.

我采用FFT,抓取频率并绘制它.这些数字非常荒谬.如果我将频率乘以33.34(采样频率),那么我会得到大约8 Hz和15 Hz的峰值,这似乎是错误的(同样,频率应该是4倍,而不是2!).

对我在这里做错了什么的想法?

python numpy scipy

32
推荐指数
3
解决办法
6万
查看次数

标签 统计

numpy ×1

python ×1

scipy ×1