下面数组freq中的数据没有排序。
有什么方便的方法可以删除我的图中从左到右不必要的直线吗?
import pylab as pl
import numpy as np
timepoints=np.loadtxt("timesequence",usecols=(1,),unpack=True,delimiter=",")
t=np.histogram(timepoints,bins=500)[0]
sp = np.fft.fft(t)
freq = np.fft.fftfreq(t.shape[-1],d=0.0005)
print freq
pl.plot(freq*2*np.pi, np.sqrt(sp.real**2+sp.imag**2))
pl.show()
请您参考如下方法:
如您所见,绘图从峰值零点开始,然后向右移动,然后跳到最左侧并返回中间。它不是一种简单的从左到右的时间序列(如果您认为它是这样的话)。
一种解决方法是将“freq”中的正点与“freq”中的负点分开绘制。将您的 pl.plot 代码行替换为以下内容:
mask = freq>=0
pl.plot(freq[mask]*2*np.pi, np.sqrt(sp[mask].real**2+sp[mask].imag**2))
pl.plot(freq[~mask]*2*np.pi, np.sqrt(sp[~mask].real**2+sp[~mask].imag**2))
ps,您需要设置颜色以使其匹配。
