Python 用matplotlib绘制纯窦的频谱图

Python 用matplotlib绘制纯窦的频谱图,python,numpy,matplotlib,fft,Python,Numpy,Matplotlib,Fft,我想得到一个纯正弦函数的光谱图。同时,我想展示整个信号的fft图。我期望峰值在相同的频率上,因为我们处理的是相同的信号,在时间上是静止的 代码 samplingFrequency = 32. frequency = 4 #frequency of the sinus wave t = arange(0,20,1/samplingFrequency) #time intervals with period 1/sampling freque

我想得到一个纯正弦函数的光谱图。同时,我想展示整个信号的fft图。我期望峰值在相同的频率上,因为我们处理的是相同的信号,在时间上是静止的

代码

samplingFrequency = 32.
frequency = 4                           #frequency of the sinus wave
t = arange(0,20,1/samplingFrequency)    #time intervals with period 1/sampling frequency
y = cos(2*pi*frequency*t)

Y = fft.fft(y)                          #standard fft on the whole signal
frequencyAxis = fft.fftfreq(len(Y),1/samplingFrequency )          #adjusting the x axis 

#PLOTTING
fig, (ax1,ax2) = plt.subplots(nrows=2, ncols=1)
ax1.specgram(y, Fs = samplingFrequency)
ax2.stem(frequencyAxis,Y,linefmt='r--', markerfmt='ro')
绘图

整个信号的fft与预期一样,峰值为4。然而,spectrogram在12点绘制了一条线。关于错误在哪里的想法

更新 正在使用以下版本:

  • matplotlib“1.1.1”
  • numpy“1.6.2”
  • python 2.7.3

在带有numpy 1.7.1和matplotlib 1.2.1的Python 2.7.5上,您的代码完全按照预期工作。尝试将numpy和matplotlib安装更新为最新版本。

我无法复制此结果(numpy 1.7.1和matplotlib 1.2.1),因为频谱图为我绘制了4处的线条。顺便说一句,你的脚本有一个输入错误<代码>频率而不是第4行中的频率。在Python 2.7.4、numpy 1.7.1、matplotlib 1.2.1中,它在更新后正常工作。如果你想把你在这里所说的形成一个答案,我将接受它,并将问题标记为已解决。@Alan你只是通过更新matplotlib解决了它吗?是的,我更新了numpy和matplotlib,所有工作都如预期的那样。