spectrum1d¶
官方文件: | spectrum1d |
---|---|
簡介: | 計算一個時間序列的自功率譜,或兩個時間序列的互功率譜 |
spectrum1d
從標準輸入流或數據文件中讀取一列或兩列數據。這些數據被當作是採樣間隔爲 <dt>
的等間隔的時間序列。spectrum1d 採用Welch方法,即加窗多段平均週期圖法,計算輸出自功率或互功率譜密度。其輸出的功率譜的標準差,是用
Bendat和Piersol提供的算法。
spectrum1d
的輸出文件有三列:
f|w p e
其中, f代表頻率,w代表波長,p代表計算的功率譜密度,e代表一個標準差的值。
spectrum1d
的輸出文件的文件名是使用統一的前綴 name_stem
。如果使用了
-C
選項,那麼將會有8個文件輸出,否則只生成一個功率譜文件( .xpower
)。這些文件默認是以ASCII碼格式,除非用 -bo
選項指定爲二進制格式輸出。這8個文件介紹如下:
name_stem.xpower
: X(t)的功率譜。單位是X*X*dt
。name_stem.ypower
: Y(t)的功率譜。單位是Y*Y*dt
。name_stem.cpower
: 一致性(coherent)的功率譜。單位和 ypower 一樣。name_stem.npower
: 噪聲的功率譜。單位和 ypower 一樣。name_stem.gain
: 增益譜,或傳輸函數的模。單位是Y/X
name_stem.phase
: 相位譜,或傳輸函數的相位。單位是弧度。name_stem.admit
: 導納(Admittance)譜,或傳輸函數的實部。單位是Y/X
。name_stem.coh
: (平方)相干譜,或者線性相關係數(它是頻率的函數)。i 無單位,取值範圍爲[0,1]
。信噪比SNR=coh/(1-coh)
。當 coh=0.5 時,SNR=1。
除非使用 -T
選項,否則以上文件會以單個文件單列的形式輸出。
選項¶
-S<segment_size>
<segment_size>
是一個2的指數數值,用於控制Welch方法中分段平均時的窗口長度。它也決定了功率譜密度的最小頻率分辨率和最大頻率分辨率,即1.0/(segment_size*dt)
和1.0/(2*dt)
(即Nyquist頻率)。在功率譜密度中的一個標準誤差大約爲1.0/(n_data/segment_size)
,比如 segment_size=256,那麼就需要25600個數據點去計算一個誤差棒的10%。互功率譜誤差棒的計算則需要更多數據點,而且是相干性的函數,比較複雜。table
- 輸入文件名。它是ASCII類型的一列數據或兩列數據。如果是一列數據文件,就計算自功率譜;如果是兩列,就計算互功率譜。若未指定文件名,
spectrum1d
會從標準輸入流中讀取數據。 -C[xycnpago]
- 默認會輸出全部8個文件。使用該選項可以指定輸出8個文件中的某些文件。x=xpower、y=ypower、c=cpower、n=npower、p=phase、a=admit、g=gain、o=coh。
-D<dt>
- 設置讀入的時間序列的時間採樣間隔,默認值是1。
-L[m|h]
- 不去除信號中的線性趨勢。默認情況下,在對信號進行變換處理前會先去掉其中的線性趨勢。
m
表示去掉數據的均值,h
表示去掉數據的中值。 -N[name_stem]
- 輸出文件名的前綴,默認爲
spectrum
。若不使用此選項,則輸出的8個文件會合到一個文件裏。 -T
- 不讓單個分量的結果輸出到標準輸出流。
-W
- 輸出文件中第一列是波長而不是頻率。默認輸出時第一列是頻率。
示例¶
假設 data.g
是重力數據,單位爲 mGal,空間採樣間隔爲1.5 km。如下命令會輸出數據的功率譜,單位爲 mGal^2 km 表示:
gmt spectrum1d data.g -S256 -D1.5 -Ndata
假設你除了有重力數據 data.g
之外,還有在相同地點測得的地形數據 data.t
,單位爲 m。計算二者之間的傳輸函數,即 data.t
是輸入, data.g
是輸出:
paste data.t data.g | gmt spectrum1d -S256 -D1.5 -Ndata -C > results.txt