名前
gmtmath - データテーブルに対して Reverse Polish Notation
計算をします
概要
gmtmath [ -Ccols ] [ -Hnrec ] [ -Nn_col/t_col ] [ -Q ]
[ -S ][ -Tt_min/t_max/t_inc ] [ -V ] [ -bi[s][n] ] [
-bo[s][n] ] operand [ operand ] OPERATOR [ operand ] OPER-
ATOR ... = [ outfile ]
記述
gmtmath は Reverse Polish Notation (RPN) シンタックス(例え
ば Hewlett-Packard の計算方式)を用いて1つ以上のテーブルデー
タファイルや定数に対して加減乗除等の計算を実行します。その
ためどんなに複雑な表現でも計算されます; 最終結果は出力ファ
イル[または標準出力]に書き出されます。2つのデータテーブルが
重ねられるとき、ファイル A の各要素がファイル B の対応する
要素により変更されます。しかし、いくつかの演算子は1つの演算
数だけを必要とします(下を参照)。表現中にデータテーブルが使
われていないときはオプション -T, -N (およびオプションで -b)
が設定されていなければなりません。デフォルトでは、"時刻"列
を除くすべての列に演算が行われますが、これを変更することも
できます( -C 参照)。
operand
もし operand がファイルとしての演算数であれば ASCII
(またはバイナリ、 -bi 参照)テーブルデータファイルと
して読み込まれます。もしファイルでなければ、数値の定
数または特別な記号(下を参照)であると解釈されます。
outfile 最終結果を持つテーブルデータファイルです。もし与え
られなければ出力は標準出力に送られます。
OPERATORS
以下の演算子から選びます:
演算子 引数の数 戻り値
ABS 1 abs (A).
ACOS 1 acos (A).
ACOSH 1 acosh (A).
ADD(+) 2 A + B.
AND 2 A および B が NaN なら NaN, それ以外で A が NaN
なら B, それ以外なら A.
ASIN 1 asin (A).
ASINH 1 asinh (A).
ATAN 1 atan (A).
ATAN2 2 atan2 (A, B).
ATANH 1 atanh (A).
BEI 1 bei (A).
BER 1 ber (A).
CEIL 1 ceil (A) (最小の整数 >= A).
CHIDIST 2 χ自乗分布 P(chi2,nu), ここで
chi2 = A, nu = B.
COS 1 cos (A) (A はラジアン).
COSD 1 cos (A) (A は度).
COSH 1 cosh (A).
D2DT2 1 d^2(A)/dt^2 2階微分.
D2R 1 度をラジアンに変換.
DILOG 1 Dilog (A).
DIV(/) 2 A / B.
DDT 1 d(A)/dt 1階微分.
DUP 1 A の複製をスタックに置く.
ERF 1 A のエラー関数.
ERFC 1 A の相補エラー関数.
ERFINV 1 A の逆エラー関数.
EQ 2 A == B なら 1, それ以外なら 0.
EXCH 2 スタック上で A と B を交換.
EXP 1 exp (A).
FDIST 4 F分布 Q(var1,var2,nu1,nu2), ここで var1 = A,
var2 = B, nu1 = C, nu2 = D.
FLOOR 1 floor (A) (最大の整数 <= A).
FMOD 2 A % B (剰余).
GE 2 A >= B なら 1, それ以外なら 0.
GT 2 A > B なら 1, それ以外なら 0.
HYPOT 2 hypot (A, B).
I0 1 A の変形ベッセル関数(第1種0次).
I1 1 A の変形ベッセル関数(第1種1次).
IN 2 A の変形ベッセル関数(第1種B次).
INT 1 A の数値積分.
INV 1 1 / A.
ISNAN 1 A == NaN なら 1, それ以外なら 0.
J0 1 A のベッセル関数(第1種0次).
J1 1 A のベッセル関数(第1種1次).
JN 2 A のベッセル関数(第1種B次).
K0 1 A の変形ケルビン関数(第2種0次).
K1 1 A の変形ベッセル関数(第2種1次).
KN 2 A の変形ベッセル関数(第2種B次).
KEI 1 kei (A).
KER 1 ker (A).
LE 2 A <= B なら 1, それ以外なら 0.
LMSSCL 1 A の LMS スケール推定 (LMS STD).
LOG 1 log (A) (自然対数).
LOG10 1 log10 (A).
LOG1P 1 log (1+A) (小さな A に対して正確).
LOWER 1 A の最小値.
LT 2 A < B なら 1, それ以外なら 0.
MAD 1 A のメディアン絶対偏差 (L1 STD).
MAX 2 A と B の最大値.
MEAN 1 A の平均値.
MED 1 A のメディアン.
MIN 2 A と B の最小値.
MODE 1 A のモード値 (LMS).
MUL(x) 2 A * B.
NAN 2 A == B なら NaN, それ以外なら A.
NEG 1 -A.
NRAND 2 平均 A と標準偏差 B を持つ正の乱数.
OR 2 A または B が NaN なら NaN, それ以外なら A.
PLM 3 同伴ルジャンドル多項式 P(-1<A<+1) B階C次.
POP 1 スタックから最上位の要素を削除.
POW(^) 2 A ^ B.
R2 2 R2 = A^2 + B^2.
R2D 1 ラジアンを度に変換.
RAND 2 A と B の間の一様な乱数.
RINT 1 rint (A) (最も近い整数).
SIGN 1 A の符号 (+1 または -1).
SIN 1 sin (A) (A はラジアン).
SIND 1 sin (A) (A は度).
SINH 1 sinh (A).
SQRT 1 sqrt (A).
STD 1 A の標準偏差.
STEP 1 ヘビサイド階段関数 H(A).
STEPT 1 ヘビサイド階段関数 H(t-A).
SUB(-) 2 A - B.
SUM 1 A の累積和.
TAN 1 tan (A) (A はラジアン).
TAND 1 tan (A) (A は度).
TANH 1 tanh (A).
TDIST 2 Student のt分布 A(t,nu) = 1 - 2p,
ここで t = A, nu = B.
UPPER 1 A の最大値.
XOR 2 A == NaN なら B, それ以外なら A.
Y0 1 A のベッセル関数(第2種0次).
Y1 1 A のベッセル関数(第2種1次).
YN 2 A のベッセル関数(第2種B次).
SYMBOLS
以下の記号には特別な意味があります:
PI 3.1415926...
E 2.7182818...
T t 座標のあるテーブル
オプション
-C 次に -C が現れるまで演算される列を選択します。カンマ
で区切った列を並べます; 1,3-5,7 のような範囲が認めら
れます[ -C (引数なし) は時刻列を除くすべての列を利用
するデフォルトのアクションに戻します( -N 参照)]。
-Ca は時刻列を含むすべての列を選択し、 -Cr は現在の
選択を反対にします。
-H 入力ファイルにヘッダレコードがあります。ヘッダレコ
ードの数は .gmtdefaults ファイルを編集することによ
り変更できます。このオプションが使われた場合、 GMT
のデフォルトではヘッダレコードは1行です。
-N 列の数と"時刻"変数を含む列の番号を選びます。列は 0
から番号付けされます[2/0]。
-Q スカラー計算用のクイックモード。 -Ca -N1/0 -T0/0/1
の短縮形。
-S 結果の最初の行だけ報告します[デフォルトはすべての行]。
これは統計値(例えば MODE )を計算して全く同じ値を持つ
膨大なレコードの代わりに1つの数字だけ欲しいときに便
利です。
-T 入力ファイルが与えられないときに必要です。"時刻"列
( -N 参照)の最初と最後の点および等距離のサンプリング
間隔のt座標を設定します。時刻列が無いときは(データ列
のみ)、引数なしで -T を与えます; これは -Ca も暗に
仮定しています。
-V 冗長モードを選択します。標準エラー出力に経過報告を
送ります[デフォルトでは"静かに"走ります]。
-bi バイナリ入力を選択します。単精度に対しては s を付け
加えます[デフォルトは倍精度です]。バイナリファイルの
列数に応じて n を付け加えてください。
-bo バイナリ出力を選択します。単精度に対しては s を付け
加えます[デフォルトは倍精度です]。
注意
演算子 PLM は L 階 M 次の同伴ルジャンドル多項式を計算しま
すが、引数は -1 <= x <= +1 を満たす余緯度のコサインでなけ
ればなりません。 PLM は正規化されていません。
すべての導関数は中央差分、自然境界条件に基づいています。
用例
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 =`
gmtmath をスカラーに対して RPN Hewlett-Packard 計算機として
使い(すなわち入力ファイルなし)、 -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 =`
バグ
演算子と同じ名前、例えば ADD, SIGN, = などといったファイル
は読むことができずカレントディレクトリに存在してはいけませ
ん。ファイルのパイプは入力においては認められていませんが、
出力を標準出力に送ることはできます。スタックの限度は50に固
定されています。正の半径を想定したすべての関数(例えば log,
kei など)には引数の絶対値が受け渡されます。
参考文献
Abramowitz, M., and I. A. Stegun, 1964, Handbook of Mathe-
matical Functions, Applied Mathematics Series, vol. 55,
Dover, New York.
Press, W. H., S. A. Teukolsky, W. T. Vetterling, B. P.
Flannery, 1992, Numerical Recipes, 2nd edition, Cambridge
Univ., New York.
関連事項
gmt(l), grd2xyz(l), grdedit(l), grdinfo(l), grdmath(l),
xyz2grd(l)
1 May 2003 GMTMATH(l)
Man(1) output converted with
man2html