gmtmath − データテーブルに対する逆ポーランド記法計算機 |
gmtmath [ −At_f(t).d ] [ −Ccols ] [ −Fcols ] [ −H[i][nrec] ] [ −I ] [ −M[i|o][flag] ] [ −Nn_col/t_col ] [ −Q ] [ −S[f|l] ] [ −Tt_min/t_max/t_inc|tfile ] [ −V ] [ −b[i|o][s|S|d|D][ncol] ] [ −f[i|o]colinfo ] operand [ operand ] OPERATOR [ operand ] OPERATOR ... = [ outfile ] |
gmtmath は逆ポーランド記法 (RPN) 構文(例えばヒューレット・パッカードの 計算方式) を用いて 1 つ以上のテーブルデータファイルや定数に対して加減乗 除 等の計算を実行する。そのためどんなに複雑な式でも計算することができる 。最終結果は出力ファイル[又は標準出力]に書き出される。 2 つのデータテー ブ ルがスタックされるとき、ファイル A の各要素がファイル B の対応する要 素により変更される。しかし、 1 つの演算数だけを必要とする演算子もあ る( 下を参照)。式の中にデータテーブルが使われていないときは、データの領域を 示すためにオプション −T, −N (及び随意で −b )が設定されている場合があ る 。 STDIN が与えられたときは、あたかもその内容がコマンドライン上で与えら れたかのように<標準入力>が読み込まれてスタックに置かれる。デフォルト で は 、「時刻」列を除く全ての列に演算が行われるが、これを変更することもで きる( −C 参照)。 |
operand |
もし operand をファイルとして開くことができれば、アスキー(又 は バ イナリ、 −bi 参照)のテーブルデータファイルとして読み込まれる 。もしファイルでなければ、数値定数又は特別な記号(下を参照)で あ ると解釈される。特別な記述 STDIN は標準入力が読み込まれてスタッ クに置かれることを意味する。 STDIN は必要ならば 1 回より多く 現 れても良い。 |
outfile は最終結果を持つテーブルデータファイルである。 |
与えられないときは出力は標準出力に送られる。 |
OPERATORS |
以下の演算子の中から選ぶこと。 ABS 1 abs (A). |
記号 |
以下の記号には特別な意味がある。 |
PI 3.1415926... |
−A |
−N を必要とし、 t と f(t) のみを含む与えられたファイルの値 によってテーブルを部分的に初期化する。 t は列 t_col に置かれ て いるが、 f(t) は列 n_col - 1 にある( −N を参照)。 |
||
−C |
次に −C が現れるまでの演算される列を選択する。カンマで区切 られた列を並べること。 1,3-5,7 のような範囲が認められてい る 。 −C (引き数無し) は時刻列を除く全ての列を利用するというデフォル トのアクションに戻す( −N 参照)]。 −Ca は時刻列を含む全ての列 を 選択し、 −Cr は現在の選択の反対にする。 |
||
−F |
出力の一部にしたい列すなわち範囲のコンマ区切りの一覧を与え る( 0 が最初の列) [デフォルトでは全ての列を出力する]。 |
||
−H |
入力ファイルにヘッダ行がある時に使う。 ヘ ッ ダ 行 の 数 は .gmtdefaults4 ファイルを編集することにより変更できる。このオプ ションが使われた場合、 GMT のデフォルトではヘッダ行は 1 行で あ る。入力データだけにヘッダ行が必要な場合は −Hi を使うこと [デフ ォルトでは入力データにヘッダ行があればそれも出力される]。 |
||
−I |
出力の行の順序を時間の昇順から降順に変更する[昇順]。 |
||
−M |
複数のセグメントからなるファイルであることを意味する。セ グ メ ントは特別な行で区切られる。アスキーファイルでは最初の文字は flag でなければならない [デフォルトは’>’]。バイナリファイルでは 全てのフィールドが NaN で、 −b に明示的に出力する列数を設定しな ければならない。デフォルトでは −M の設定は入力と出力の両方に 適 用される。別々に設定するには −Mi 及び −Mo を使うこと。 |
||
−N |
列の数と「時刻」変数を含む列の番号を選ぶ。列は 0 から番号付 けされる [2/0] 。 |
||
−Q |
スカラー計算用の高速モード。 −Ca −N1/0 −T0/0/1 の短縮形。 |
||
−S |
結果の最初の行だけ報告する[デフォルトは全ての行]。これは 統 計 値(例えば MODE )を計算して、全く同じ値を持つ膨大なレコードの 代わりに 1 つの数字だけ欲しいときに便利である。最後の行だけを得 る には l を、最初の行だけを得るには f [デフォルト]を付けること 。 |
||
−T |
入力ファイルが与えられないときに必要。「時刻」列( −N 参 照) の最初と最後の点及び等距離のサンプリング間隔の t 座標を設定する 。時刻列が無いときは(データ列のみ)、引き数無しで −T を与える こ と 。 これは −Ca も暗に想定している。代わりに、求める不規則な t 座標を最初の列に含むファイルの名前を与えることもできる。 |
||
−V |
冗長モードを選択する。標準エラー出力に経過報告を送る[デフォ ルトでは「黙って」実行する]。 |
||
−bi |
バイナリ入力を選択する。単精度に対しては s を付けること [ デフォルトは d (倍精度)]。大文字の S (又は D) にするとバイト ス ワ ップを行う。随意で、バイナリファイルの列数がこのプログラムで 必要な列数を越えるときは、バイナリファイルの列数 ncol を付け る こと。 |
||
−bo |
バイナリ出力を選択する。単精度に対しては s を付けること [ デフォルトは d (倍精度)]。大文字の S (又は D) にするとバイト ス ワ ップを行う。随意で、バイナリ出力ファイルの必要な列数 ncol を 付けること [デフォルトは入力と同じ、但し −F を参照]。 |
数値データのアスキー出力形式は .gmtdefaults4 ファイルのパラメータによっ て 決まる。緯度経度は OUTPUT_DEGREE_FORMAT に従ってフォーマットされ、一 方、他の値は D_FORMAT に従ってフォーマットされる。フォーマットの結果 と し て出力の精度が落ちて、その先の処理に影響する可能性があることに注意す ること。十分な精度で出力されていないと思ったら、バイナリ出力に変更する( も し使えるなら −bo とする)か、 D_FORMAT の設定を用いてより多くの桁数を 指定すること。 |
(1) 演算子 PLM は L 階 M 次の同伴ルジャンドル多項式を計算するが、引き数 は -1 <= x <= +1 を満たす余緯度の余弦でなければならない。 PLM は正規化 されていない。 (2) 全ての導関数は中央差分、自然境界条件に基づいている。 |
process1 から gmtmath にパイプされた 2 番目のデータ列の内容の平方根を 3 番目のプロセスにパイプする。 process1 | gmtmath STDIN SQRT = | process3 2 つのデータファイルの平均の log10 を計算する。 gmtmath file1.d file2.d ADD 0.5 MUL LOG10 = file3.d 海 底 の 年代が百万年単位、海底の深さがメートル単位で与えられたファイル samples.d があるとき、深さ (m) = 2500 + 350 * sqrt (年代) の関係を用 い て水深異常を印刷する。 gmtmath samples.d T SQRT 350 MUL 2500 ADD SUB = | lpr 3 つのデータセット sizes.1, sizes.2, sizes.3 の 1 及び 4-6 列目の平均を 計算する。 gmtmath −C1,4-6 sizes.1 sizes.2 ADD sizes.3 ADD 3 DIV = ave.d 1 列のデータセット ages.d の最頻値を計算してそれを変数に設定する。 set mode_age = ‘gmtmath −S −T ages.d MODE =‘ ファイル t.d で与えられた座標に対する dilog(x) 関数の数値を求める。 gmtmath −Tt.d T DILOG = dilog.d gmtmath をスカラーに対する RPN ヒューレット・パッカード計算機とし て 使 い( すなわち入力ファイル無し)、 −Q オプションを用いて任意の式の計算をす る。例として、 Kei (((1 + 1.75)/2.2) + cos (60)) の値を計算して結果をシ ェル変数 z に格納する。 set z = ‘gmtmath −Q 1 1.75 ADD 2.2 DIV 60 COSD ADD KEI =‘ gmtmath を汎用の最小二乗計算ツールとして用いて、現在のテーブルが拡大行 列 [ A | b ] であると仮定して、行列方程式 A * x = b に対する最小二乗 解 x を計算する。演算子 LSQFIT はこれを実行するが、まず行列を正しく設定す ることが必要である。 −A オプションはこれを容易にする。 t と b(t) からな る 2 列のファイル ty.d があり、 a をモデル y(t) = a + b*t + c*H(t-t0) に当てはめようとしているとする。ここで H は与えられた t0 = 1.55 に対 す る ヘ ビ サ イド階段関数である。このとき、列 0 に t 、列 3 に観測された y(t) を入れた 4 列の拡大テーブルが必要である。計算方法は以下の通り。 gmtmath −N4/1 −Aty.d -C0 1 ADD −C2 1.55 STEPT ADD −Ca LSQFIT = solution.d −C オプションを作業している列を選ぶのに使うので、 LSQFIT を呼び出す前に 必要な列(ここでは全てなので −Ca を使う)を全て有効にすることに注意 。 2 番 目と 4 番目の列はそれぞれ t と y(t) により予め入っているが、他の列は ゼロになっている。すでにファイル(例えば lsqsys.d )に拡大行列 [ A | b ] の 入った計算済みのテーブルがあるときは、最小自乗解は単に以下のように計 算できる。 gmtmath −T lsqsys.d LSQFIT = solution.d |
(1) 演算子と同じ名前のファイル、例えば ADD,
SIGN, = 等は、カレントデ ィ
レクトリを前に付けることで特定できる(例えば ./LOG )。 |
Abramowitz, M., and I. A. Stegun, 1964, Handbook of
Mathematical Functions, Applied Mathematics Series, vol.
55, Dover, New York. |
GMT(l), grd2xyz(l), grdedit(l), grdinfo(l), grdmath(l), xyz2grd(l) |