在 Obspy 中,如何获取特定时间的振幅值?
In Obspy, how can I get an amplitude value at a specific time?
假设我已经有一个对象 Trace,比如说 trace,并且我想在 30 秒时获得一个振幅数据。
我想我可以像下面那样做,为简单起见,假设开始时间为 0,
delta = trace.stats.delta
count = int(30 / delta)
target_value = trace.data[count]
他们准备好方法了吗?
像....
trace.foo(time=30)
目前我们还没有这样的便捷方法,但我同意这是一个很好的补充。您可以在我们的 GitHub 问题跟踪器中提出功能请求:https://github.com/obspy/obspy/issues/new
同时,您可以使用采样时间便利函数和一些 numpy 来实现您想要的。
如果您要查找相对于跟踪开始的时间:
from obspy import read
tr = read()[0]
my_time = 4 # 4 seconds after start of trace
times = tr.times()
index = times.searchsorted(my_time)
print(times[index])
print(tr.data[index])
4.0
204.817965896
如果您正在寻找绝对时间:
from obspy import read, UTCDateTime
tr = read()[0]
my_time = UTCDateTime("2009-08-24T00:20:12.0Z") # 4 seconds after start of trace
times = tr.times('utcdatetime')
index = times.searchsorted(my_time)
print(times[index])
print(tr.data[index])
2009-08-24T00:20:12.000000Z
156.68994731
如果您没有匹配一个样本的确切时间,则必须手动插值。
希望这能让您入门。
假设我已经有一个对象 Trace,比如说 trace,并且我想在 30 秒时获得一个振幅数据。
我想我可以像下面那样做,为简单起见,假设开始时间为 0,
delta = trace.stats.delta
count = int(30 / delta)
target_value = trace.data[count]
他们准备好方法了吗? 像....
trace.foo(time=30)
目前我们还没有这样的便捷方法,但我同意这是一个很好的补充。您可以在我们的 GitHub 问题跟踪器中提出功能请求:https://github.com/obspy/obspy/issues/new
同时,您可以使用采样时间便利函数和一些 numpy 来实现您想要的。
如果您要查找相对于跟踪开始的时间:
from obspy import read
tr = read()[0]
my_time = 4 # 4 seconds after start of trace
times = tr.times()
index = times.searchsorted(my_time)
print(times[index])
print(tr.data[index])
4.0
204.817965896
如果您正在寻找绝对时间:
from obspy import read, UTCDateTime
tr = read()[0]
my_time = UTCDateTime("2009-08-24T00:20:12.0Z") # 4 seconds after start of trace
times = tr.times('utcdatetime')
index = times.searchsorted(my_time)
print(times[index])
print(tr.data[index])
2009-08-24T00:20:12.000000Z
156.68994731
如果您没有匹配一个样本的确切时间,则必须手动插值。
希望这能让您入门。