擅长:python、mysql、java
<p>如果采样频率是<code>fs</code>,并且有<code>N=len(eeg1)</code>个样本,那么<code>fft</code>过程当然会返回一个<code>N</code>值的数组。其中第一个<code>N/2</code>对应于频率范围{<cd6>},频率的后半部分对应于镜像频率范围<code>-fs/2..0</code>。对于实际输入信号,镜像半部分只是正半部分的复共轭,因此在进一步的分析中可以忽略它(但在逆fft中则不能)。在</p>
<p>所以本质上,你应该格式化</p>
<p><code>f=linspace(0,N-1,N)*fs/N</code></p>
<p>编辑:或者更简单,只需对初始代码进行最小的更改</p>
<p><code>f = np.linspace (0,fs,len(eeg1), endpoint=False)</code></p>
<p>因此<code>f</code>的范围从<code>0</code>到<code>fs</code>之前,忽略输出中fft结果的后半部分:</p>
<p><code>plt.plot( f(0:N/2), abs( fft1(0:N/2) ) )</code></p>
<hr/>
<p>补充:您可以使用fftshift来交换两半,那么正确的频率范围是</p>
<p><code>f = np.linspace (-fs/2,fs/2,len(eeg1), endpoint=False)</code></p>