擅长:python、mysql、java
<p>如果rate是采样率(Hz),那么<code>np.linspace(0, rate/2, n)</code>是fft中每个点的频率阵列。您可以使用<code>rfft</code>计算数据中的fft为实数:</p>
<pre><code>import numpy as np
import pylab as pl
rate = 30.0
t = np.arange(0, 10, 1/rate)
x = np.sin(2*np.pi*4*t) + np.sin(2*np.pi*7*t) + np.random.randn(len(t))*0.2
p = 20*np.log10(np.abs(np.fft.rfft(x)))
f = np.linspace(0, rate/2, len(p))
plot(f, p)
</code></pre>
<p><img src="https://i.stack.imgur.com/q8Sev.png" alt="enter image description here"/></p>
<p>信号x包含4Hz&7Hz正弦波,因此在4Hz&7Hz处有两个峰值。</p>