gpt4 book ai didi

python - python 中的 fft 没有在正确的位置显示峰值

转载 作者:太空狗 更新时间:2023-10-29 21:53:23 26 4
gpt4 key购买 nike

我试图理解 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()

我得到的是这样的: enter image description here虽然它应该在两侧都有两个侧峰,其中一个比另一个高 2 倍

最佳答案

  • 你的 datay 是真实的,所以也许你应该为一个使用 scipy.fftpack.rfft 的真实序列。
  • 如果您正在寻找具有两个不同峰值的 FFT,那么您必须给它数据,它是具有周期的正弦波的总和是 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()

enter image description here

关于python - python 中的 fft 没有在正确的位置显示峰值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14004990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com