在python图上有一个额外的行

时间:2016-10-03 17:48:26

标签: python numpy matplotlib fft

我正在使用pyplot来显示信号'a'的FFT,这里是代码:

myFFT = numpy.fft.fft(a)
x = numpy.arange(len(a))
fig2 = plt.figure(2)
plt.plot(numpy.fft.fftfreq(x.shape[-1]), myFFT)
fig2.show()

我得到这个数字 enter image description here

在频域中,从信号的开头到结尾都有一条线。我怎么能删除这条线?上午我对pyplot做错了吗?

2 个答案:

答案 0 :(得分:1)

而不是sorted,您可能希望使用np.fft.fftshift来定位第0个频率,这可以正确处理奇数和偶数信号。最重要的是,您需要对正在绘制的x和y矢量应用变换。

plt.plot(np.fft.fftshift(np.fft.fftfreq(x.shape[-1])), np.fft.fftshift(myFFT))

您可能还想显示FFT的幅度或相位(np.absnp.angle) - 按原样,您只是绘制实部。

答案 1 :(得分:0)

看看plt.plot(numpy.fft.fftfreq(x.shape[-1]):第一个和最后一个点是相同的,因此图表"形成一个循环"

您可以plt.plot(sorted(numpy.fft.fftfreq(x.shape[-1])),myFFT)plt.plot(myFFT)