[数据库傅里叶分析]

[Fourier Analysis with database]

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

我的文件是这样的:

我做了以下代码:

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 频率分量最强但你对此不感兴趣,我看到两个选项:

(1) 与其查看全谱,不如忽略第一个元素:

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

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

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

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