这是我在stackoverflow上的第一个问题,我希望我不会犯大错.我正在分析一组采样率为1 Hz的时间序列.我需要绘制他们的傅立叶变换以研究他们的光谱.
这是我的一段代码:
from obspy.core import read
import numpy as np
import matplotlib.pyplot as plt
st = read('../SC_noise/*HEC_109C*_s', format='SAC')
stp = st.copy()
stp.detrend('linear')
stp.taper('cosine')
for tr in stp:
dataonly = tr.data
spec = np.fft.rfft(dataonly)
plt.plot(abs(spec))
plt.show()
Run Code Online (Sandbox Code Playgroud)
这很好用:情节与我使用SAC相同.但是xaxis没有显示频率.我徘徊了一下,发现了不同的想法:没有一个是有效的.例如,在fft(这里我使用rfft)的情况下,这应该做的工作
samp_rate=1
freq = np.fft.fftfreq(len(spec), d=1./samp_rate)
Run Code Online (Sandbox Code Playgroud)
但如果我使用它会给我负频率.
有人有想法吗?非常感谢您提前获得所有帮助!
皮耶罗