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個文件介紹如下:

  1. name_stem.xpower: X(t)的功率譜。單位是 X*X*dt
  2. name_stem.ypower: Y(t)的功率譜。單位是 Y*Y*dt
  3. name_stem.cpower: 一致性(coherent)的功率譜。單位和 ypower 一樣。
  4. name_stem.npower: 噪聲的功率譜。單位和 ypower 一樣。
  5. name_stem.gain: 增益譜,或傳輸函數的模。單位是 Y/X
  6. name_stem.phase: 相位譜,或傳輸函數的相位。單位是弧度。
  7. name_stem.admit: 導納(Admittance)譜,或傳輸函數的實部。單位是 Y/X
  8. 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