在python fft没有在正确的地方显示高峰
我试图了解numpy fft函数,因为我的数据简化是奇怪的。 但现在我已经改变了两个正弦的简单总和,我得到了奇怪的结果。 我拥有的高峰非常高,零点附近有几个点宽,其余部分变平。 有人知道我可能做错了吗?
import numpy as np
from numpy import exp, sqrt, pi, linspace
from matplotlib import cm
import matplotlib.pyplot as plt
import scipy as sp
import pylab
#fourier
tdata = np.arange(5999.)/300
datay = 3*np.sin(tdata)+6*np.sin(2*tdata)
fouriery = np.fft.fft(datay)
freqs = np.fft.fftfreq(datay.size, d=0.1)
pylab.plot(freqs,fouriery)
pylab.show()
我得到的是这样的: 虽然它的两侧应该有两个侧面,其中一个比另一个高2倍
datay
是真实的,所以也许你应该使用scipy.fftpack.rfft
为真实序列进行scipy.fftpack.rfft
。 2*pi/n
整倍数,其中n = len(datay)
。 如果不是,则需要很多这样的正弦波来近似数据。 import numpy as np
import matplotlib.pyplot as plt
import scipy.fftpack as fftpack
pi = np.pi
tdata = np.arange(5999.)/300
datay = 3*np.sin(2*pi*tdata)+6*np.sin(2*pi*2*tdata)
fouriery = fftpack.rfft(datay)
freqs = fftpack.rfftfreq(len(datay), d=(tdata[1]-tdata[0]))
plt.plot(freqs, fouriery, 'b-')
plt.xlim(0,3)
plt.show()
链接地址: http://www.djcxy.com/p/67757.html
上一篇: fft in python not showing peaks in right place
下一篇: git push error: HTTP request failed: The requested URL returned 504