2017-05-17 58 views
0

我有一个水面高程文件,我想知道特征周期和幅度。 所以我想用python做一个傅立叶分析,但我没有到达。[傅立叶分析与数据库]

我的文件是这样的:

  • 山口0:时间,
  • 西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的第一个元素对应于峰值。而且,它将对应于我的向量freq(0)的第一个元素。

我知道这段时间一定要在5-8秒左右,但我想用这种分析找到它。

你能帮我吗?

感谢

+0

嗨,欢迎来到SO!请澄清你的问题。您可以创建幅度谱图。这似乎在起作用,那么问题是什么? – kazemakase

+0

所以你的说法是零频率分量(即基线)是最强的,但你正在寻找freq> 0的最强振荡分量? – obachtos

回答

0

我不知道如果我理解正确的问题,但如果它是你的第0频率分量是最强的,但你不感兴趣,我看到两个选项:

( 1)而不是寻找在全光谱,忽略个第一元素:

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

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

(2)做FFT之前减去基线


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

+0

最后它是好的,我已经找到了如何使一个良好的频率轴: np.fft.fftfreq(N,dt)dt是采样时间,N是我的信号长度! – Nathan

+0

那么,通过upvoting或接受一些欣赏会很友善。 – obachtos

+0

完成!抱歉... – Nathan