【问题标题】:[Fourier Analysis with database][Fourier Analysis with database]
【发布时间】:2017-10-16 12:41:42
【问题描述】:

我有一个水面高程文件,我想知道特征周期和幅度。 所以我想用 python 做一个傅里叶分析,但我没有到。

我的文件是这样的:

  • Col 0:时间,
  • Col 2:海拔

我做了以下代码:

df=pd.read_csv(file,sep=';',header=None)
df.columns=['Time','Nothing','HS','Other1','Other2']
N=len(df)
T=df.loc[0,'Time']-df.loc[len(df)-1,'Time'] #Intervalle de temps
freq=np.linspace(0.0, 1, N) #Vecteur fréquence 
 
HSf=scipy.fft(df['HS']) #Transformée de Fourier
plt.plot(freq,abs(HSf))

问题在于,通过这样做,我得到了与峰值相对应的 HSf 的第一个元素。并且显然,它将对应于我的向量频率(0)的第一个元素。

我知道周期必须在 5-8 秒左右,但我想通过这种分析找到它。

你能帮我吗?

谢谢

【问题讨论】:

  • 嗨,欢迎来到 SO!请澄清你的问题。您创建幅度谱图。这似乎有效,那么问题出在哪里?
  • 那么你的意思是零频率分量(即基线)是最强的,但你正在寻找频率>0的最强振荡分量?

标签: python-3.x pandas numpy scipy fft


【解决方案1】:

我不确定我是否正确理解你的问题,但如果你的第0个频率分量是最强的,但你对此不感兴趣,我看到了两个选择:

(1)代替查看全频谱,忽略第一元素:

plt.plot(freq[1:],abs(HSf)[1:])

(2)在做FFT之前减去基线:

HSf=scipy.fft(df['HS']-np.mean(df['HS']))

编辑: 我也很确定你的频率轴在你的应用中有任何意义。您可能想要看看numpy.fft.fftfreq

【讨论】:

  • 最后它很好,我已经找到了如何制作一个良好的频率轴:np.fft.fftfreq(n,dt)与dt采样时间和n的信号! span >
  • 嗯,然后通过升值或接受一些欣赏将是非常善良的。 span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
相关资源
最近更新 更多