在 python 情节上多了一条线

Got an extra line on python plot

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

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()

我得到这个数字

频域信号从头到尾有一条线。我怎样才能删除这条线?我在 pyplot 上做错了吗?

看看plt.plot(numpy.fft.fftfreq(x.shape[-1]):第一个点和最后一个点相同,因此图表"makes a loop"

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

而不是 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)- 按原样,您只是绘制实部。