gpt4 book ai didi

python - 用python进行傅立叶变换

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:01 25 4
gpt4 key购买 nike

我有一套 data .它显然具有一定的周期性。我想通过使用傅里叶变换找出它的频率并将其绘制出来。

这是我拍的,但好像不太好。 enter image description here

这是对应的代码,我不知道为什么会失败:

import numpy
from pylab import *
from scipy.fftpack import fft,fftfreq
import matplotlib.pyplot as plt
dataset = numpy.genfromtxt(fname='data.txt',skip_header=1)
t = dataset[:,0]
signal = dataset[:,1]
npts=len(t)

FFT = abs(fft(signal))
freqs = fftfreq(npts, t[1]-t[0])
subplot(211)
plot(t[:npts], signal[:npts])
subplot(212)
plot(freqs,20*log10(FFT),',')
xlim(-10,10)
show()

我的问题是:由于原始数据看起来非常周期性,我希望看到在频域中峰值非常尖锐;我怎样才能让山峰看起来更漂亮?

最佳答案

这是数据分析的问题。

  • FFT 使用复数,因此频谱在实际数据输入上是对称的:限制在 xlim(0,max(freqs)) 上。
  • 采样周期不好:在保持输入点总数不变的情况下增加周期会导致此示例中质量最好的频谱。

编辑。与:

 dataset = numpy.genfromtxt(fname='data.txt',skip_header=1)[::30];
t,signal = dataset.T
(...)
plot(freqs,FFT)
xlim(0,1)
ylim(0,30)

光谱是

spectum

为了获得最佳质量的频谱,只需长时间重新获取信号(以获得美丽的峰值),采样频率为 1 Hz,这将为您提供 [0, 0.5 Hz] 频率标度(参见奈奎斯特准则)。

关于python - 用python进行傅立叶变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888457/

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