2017-05-17 60 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