簡體   English   中英

在 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

如果您不匹配一個樣本的確切時間,則必須手動插值。

希望這能讓你開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM