在 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.abs
或 np.angle
)- 按原样,您只是绘制实部。
我正在使用 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.abs
或 np.angle
)- 按原样,您只是绘制实部。