这是我在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()
这个很好用:绘制的图形与使用SAC相同。但是x轴没有显示频率。我已经尝试了一些不同的方法,但都不能解决问题。 例如,在fft(这里我使用的是rfft)的情况下,应该可以解决这个问题。
samp_rate=1
freq = np.fft.fftfreq(len(spec), d=1./samp_rate)
但是如果我使用它,会给我负频率。
有人有什么想法吗? 非常感谢您提前的所有帮助!
Piero