関数read_sac_polezero マニュアル

(The documentation of function read_sac_polezero)

Last Update: 2024/4/23


◆機能・用途(Purpose)

地震計の応答特性をファイルから読み込む。
Read poles and zeroes of a seismometer from a file.

地震計の応答特性はpoleとzeroで表される。 地面の振動の波形を\(v_{in}(t)\)、そのラプラス変換を \[\begin{equation} V_{in}(s)=\int_{-\infty}^{\infty}v_{in}(t)e^{-st}dt \label{eq.Vin.Laplace} \end{equation}\] とおく。\(s\)は任意の複素数であり、 \(s=i\omega=2\pi if\)(\(\omega\): 角周波数、\(f\): 周波数) とおけば\(V_{in}(s)\)は\(v_{in}(t)\)のフーリエ変換になる。 同様に、地震計が出力する波形を\(v_{out}(t)\)、 そのラプラス変換を\(V_{out}(s)\)とおく。 このとき、地震計の応答特性は \[\begin{equation} T(s)\equiv \frac{V_{out}(s)}{V_{in}(s)} =C\frac{\prod_{n=1}^{N_0}(s-s_n^{(0)})}{\prod_{n=1}^{N_p}(s-s_n^{(p)})} \label{eq.response} \end{equation}\] と表される。ここで\(C\)は定数、 \(N_p\), \(N_0\)は非負の整数、 \(s_n^{(0)}\)は複素定数(ゼロ点と呼ばれる)、 \(s_n^{(p)}\)は複素定数(極と呼ばれる)である。
The response of a seismometer is expressed by poles and zeros. Let \(v_{in}(t)\) be the waveform of an actual ground motion, and \(V_{in}(s)\) (Eq. \ref{eq.Vin.Laplace}) be its Laplace transformation, where \(s\) is an arbitrary complex number. \(V_{in}(s)\) is the Fourier transformation of \(v_{in}(t)\) if \(s=i\omega=2\pi if\), where \(\omega\) and \(f\) are an angular frequency and a frequency, respectively. In the same way, let \(v_{out}(t)\) and \(V_{out}(s)\) be the output waveform of the seismometer and its Laplace transformation, respectively. The response of this seismometer is then given by Eq. (\ref{eq.response}), where \(C\) is a constant, \(N_0\) and \(N_p\) are non-negative integers, \(s_n^{(0)}\) are complex constants (known as zeros), and \(s_n^{(p)}\) are complex constants (known as poles).

Seismic Analysis Code (SAC)においては (\ref{eq.response})式に登場する定数 \(C\), \(N_0\), \(s_n^{(0)}\), \(N_p\), \(s_n^{(p)}\) をテキストファイルで与えることにより、 地震波形から地震計の応答特性をデコンボリューションしたり、 別の地震計の応答特性をコンボリューションすることができる。 以下はテキストファイルの例である。
The Seismic Analysis Code (SAC) can deconvolve the response of a seismometer from a seismogram or convolve the response of another seismometer to an waveform, specifying the values of \(C\), \(N_0\), \(s_n^{(0)}\), \(N_p\), and \(s_n^{(p)}\) in Eq. (\ref{eq.response}) by a text file. An example of the text file is shown below.

ZEROS 4
-0.125 0.0
-50.0 0.0
POLES 4
-0.13 0.0
-6.02 0.0
-8.66 0.0
-35.2 0.0
CONSTANT -394.0

ファイルの書式の説明はSACでhelp transferと打つことで得られるので ここでは省略する。 この関数の目的はこのようなファイルから \(C\), \(N_0\), \(s_n^{(0)}\), \(N_p\), \(s_n^{(p)}\) の値を読み込むことである。
A description for the format of this file is available by typing “help transfer” in SAC. The purpose of this function is to read the values of \(C\), \(N_0\), \(s_n^{(0)}\), \(N_p\), and \(s_n^{(p)}\) from this kind of file.


◆形式(Format)

#include <sac/readwrite.h>
inline void read_sac_polezero
(const char ∗inputfile,double ∗factor,
 int ∗Nzeroes,double complex ∗∗zeroes, int ∗Npoles,double complex ∗∗poles)


◆引数(Arguments)

inputfile 入力ファイル名。 地震計の応答特性を表すデータで SACソフトウェア用の書式で書かれているものを与える。
The name of an input file, which represents data for the response of a seismometer and is written in a format for SAC software.
factor 地震計の応答特性における定数係数\(C\)の値の読み込み先。 宣言しただけのdouble型変数に&を付けて与える。 関数内で値が設定される。
Memory into which the value of a constant factor (\(C\)) of an instrumental response is to be inserted. Give an empty double-type variable with &. The value is determined within the function.
Nzeroes 地震計の応答特性におけるゼロ点の個数\(N_0\)の読み込み先。 宣言しただけのint型変数に&を付けて与える。 関数内で値が設定される。
Memory into which the number of zeroes (\(N_0\)) of an instrumental response is to be inserted. Give an empty int-type variable with &. The value is determined within the function.
zeroes 地震計の応答特性におけるゼロ点の値\(s_n^{(0)}\)のリストの読み込み先。 宣言しただけのdouble complex ∗型変数に&を付けて与える。 関数内で配列の動的メモリが確保され、 配列要素にはゼロ点の値が代入される。
Memory into which the list of zeroes (\(s_n^{(0)}\)) of an instrumental response is to be inserted. Give an empty double complex ∗-type variable with &. Within the function, the dynamic memory for an array is allocated and the values of zeroes are inserted into the array components.
Npoles 地震計の応答特性における極の個数\(N_p\)の読み込み先。 宣言しただけのint型変数に&を付けて与える。 関数内で値が設定される。
Memory into which the number of poles (\(N_p\)) of an instrumental response is to be inserted. Give an empty int-type variable with &. The value is determined within the function.
poles 地震計の応答特性における極の値のリスト\(s_n^{(p)}\)の読み込み先。 宣言しただけのdouble complex ∗型変数に&を付けて与える。 関数内で配列の動的メモリが確保され、 配列要素には極の値が代入される。
Memory into which the list of poles (\(s_n^{(p)}\)) of an instrumental response is to be inserted. Give an empty double complex ∗-type variable with &. Within the function, the dynamic memory for an array is allocated and the values of poles are inserted into the array components.


◆動作(Behaviour)

引数inputfileで与えたファイルから \(C\), \(N_0\), \(s_n^{(0)}\), \(N_p\), \(s_n^{(p)}\) の値を読み込んで 引数factor, Nzeroes, zeroes, Npoles, polesに格納する。
Read the values of \(C\), \(N_0\), \(s_n^{(0)}\), \(N_p\), and \(s_n^{(p)}\) from the file specified by argument inputfile and preserve these values into arguments factor, Nzeroes, zeroes, Npoles, and poles.


◆使用例(Example)

double C;
int N0,Np;
double complex ∗zeroes,∗poles;
read_sac_polezero("polezero.dat",&C, &N0,&zeroes,&Np,&poles);