浮動小数点
16進整数
2進整数
8進整数
数字が連続している部分は見やすくするため任意の箇所に空白を入れることができます (例 123 456.789 E8) 。
PI | 円周率 |
E | 自然対数の底 |
EULER | オイラーの定数 |
NAN | 欠損データ エラー表示 |
UNDEF | 欠損データ エラー非表示 |
CONT | 欠損データ (データ線は結合) |
BREAK | 欠損データ (データ線は分断) |
NUM | データの個数 |
MINX | (X) column の生データの最小値 |
MAXX | (X) column の生データの最大値 |
MINY | (Y) column の生データの最小値 |
MAXY | (Y) column の生データの最大値 |
SUMX | (X) column の生データの和 |
SUMY | (Y) column の生データの和 |
SUMXX | (X) column の生データの二乗和 |
SUMYY | (Y) column の生データの二乗和 |
SUMXY | (X) column, (Y) column の生データの積和 |
AVX | (X) column の生データの平均 |
AVY | (Y) column の生データの平均 |
STDEVPX | (X) column の生データの標準偏差 (SGX も利用可) |
STDEVPY | (Y) column の生データの標準偏差 (SGY も利用可) |
STDEVX | (X) column の生データの不偏標準偏差 |
STDEVY | (Y) column の生データの不偏標準偏差 |
FIRST | diagonal, errorbar など一行のデータで2回の変換が行われる場合、1回目の呼出しで真(=1)、2回目の呼出しで偽(=0) |
MASK | マスクに設定された行数 |
MOVE | 移動に設定された行数 |
COLX | 「X カラム」に指定された数 |
COLY | 「Y カラム」に指定された数 |
AXISX | 「X 軸」に指定された axis オブジェクトの ID |
AXISX_MIN | 「X 軸」の最小値 |
AXISX_MAX | 「X 軸」の最大値 |
AXISX_LEN | 「X 軸」の長さ |
AXISY | 「Y 軸」に指定された axis オブジェクトの ID |
AXISY_MIN | 「Y 軸」の最小値 |
AXISY_MAX | 「X 軸」の最大値 |
AXISY_LEN | 「Y 軸」の長さ |
HSKIP | 「先頭スキップ行」に指定された行数 |
RSTEP | 「読込ステップ行」に指定された行数 |
FLINE | 「最終行」に指定された行数 |
DATA_OBJ | data オブジェクトのオブジェクト識別番号 |
PATH_OBJ | path オブジェクトのオブジェクト識別番号 |
RECT_OBJ | rectangle オブジェクトのオブジェクト識別番号 |
ARC_OBJ | arc オブジェクトのオブジェクト識別番号 |
MARK_OBJ | mark オブジェクトのオブジェクト識別番号 |
TEXT_OBJ | text オブジェクトのオブジェクト識別番号 |
%D | データの番号 |
%N | データオブジェクトのインスタンス数 |
TRUE | 代表的な真の値 |
FALSE | 偽の値 |
FILL_RULE_NONE | ポリゴンを塗りつぶさない。draw_polygon() 関数で利用する。 |
FILL_RULE_EVEN_ODD | ポリゴンを偶奇則で塗りつぶす。draw_polygon() 関数で利用する。 |
FILL_RULE_WINDING | ポリゴンをワインディング則で塗りつぶす。draw_polygon() 関数で利用する。 |
const x=exp |
x は英字または _ で始まり英数字または _ から構成される文字列、exp は任意の数式。
|
%0 | データを読み込んだ順番に1から番号をつけたときの値 |
%1〜%999 | 同一行中 1〜999 カラムの生データ |
%Fxx1〜%Fxx999 | データ xx の同じ行の 1〜999 カラムの生データ |
変数は X, Y の変換式で独立です。
定数に使用されていない、英字または _ で始まり英数字または _ から構成される文字列(x, y 以外)。 | ユーザが自由に使用できます (代入されていない変数は 0 に初期化されています) 。 |
x | (x)column の生のデータ (変数への代入は可能ですが、データ読込時に生データで上書きされます) |
y | (y)column の生のデータ (変数への代入は可能ですが、データ読込時に生データで上書きされます) |
col[n] |
|
x[n] |
x は英字または _ で始まり英数字または _ から構成される文字列、n は任意の数式。 未代入の配列要素は 0 に初期化されています。 配列の添字は整数に丸められます。 配列の添字の上限は 65535 です。 配列の添字に負の数値を使用した場合、配列の末尾からのインデックスとみなします。 |
文字列の扱いについては今の所試験的な実装です。今後、仕様変更などの可能性があります。
ダブルクォートで囲まれた文字列の中では#{式}という形式で式の内容(を文字列 化したもの)を埋め込むことができます。文字#に続く文字が {でなければ、その まま文字#として解釈されます。明示的に式展開を止めるには#の前にバックスラッ シュを置きます。式が文字列リテラル、文字列変数、文字列配列の要素の場合は その文字列が埋め込まれます。それ以外の場合は式を評価した値が適当な文字列 に変換されて埋め込まれます。
$ に続き英字または _ で始まり英数字または _ から構成される文字列。
数値の計算が行われる箇所で、文字列は数値に変換されます。
文字列変数・文字列配列の要素に対しては、代入演算子 = および比較演算子 ==, != のみが使用できます。
比較演算子 ==, != の両辺が文字列リテラル、文字列変数、文字列配列の場合は文字列としての比較が行われます。
文字列変数に対する代入演算子 = の右辺に数値がある場合は数値を変換した文字列が代入されます。
def func(a,b,...) {exp} |
仮引数 a, b, ... の関数 func を定義します。 配列を渡すときは仮引数を @a の様に指定してください。配列は参照渡しとなります。 exp には任意の数式を指定できますが、以下の制限があります。
|
-+ | 符号 |
!(前置) | 論理否定 |
+ - * / | 四則演算 |
\ | 浮動小数点剰余 |
^ | ベキ乗 |
!(後置) | 階乗(引数は 169 以下の正の整数) |
= | 代入 |
-= | 自己代入 |
+= | 自己代入 |
*= | 自己代入 |
/= | 自己代入 |
\= | 自己代入 |
^= | 自己代入 |
^= | 自己代入 |
^= | 自己代入 |
&= | 自己代入 |
|= | 自己代入 |
<<= | 自己代入 |
>>= | 自己代入 |
== | 比較 |
!= | 比較 |
<= | 比較 |
>= | 比較 |
< | 比較 |
> | 比較 |
&& | 論理積 |
|| | 論理和 |
& | ビットAND |
| | ビットOR |
~ | ビットNOT |
<< | 左シフト |
>> | 右シフト |
exp1 && exp2 は exp1 が偽の時 exp2 を評価しません。また exp1 が真の場合、exp2 を評価した値を返します。
exp1 || exp2 は exp1 が真の時 exp2 を評価しません。また exp1 が真の場合は exp1、exp1 が偽の場合は exp2 を評価した値を返します。
; は式の終端を表します。; の後に別の式を続けることができます(後に式が続かない場合は省略可能)。
括弧 () の数に制限はありません。
乗算であることが明らかな場合には乗算演算子を省略することができます。 (例:2 * PI * x → 2 PI x)
演算子 + - (正負の符号) の優先順位が Version 6.03 以前と異なっています。
高 | !(後置) |
↑ | ^ |
!(前置) ~ + - (正負の符号) | |
* / \ | |
+ - | |
<< >> | |
< <= > >= | |
== != | |
& | |
| | |
&& | |
↓ | || |
低 | =(+=, -= ... ) |
abs(x) | 絶対値 |
sign(x) | 正負の符号 (x < 0 で -1、x >= 0 で 1) |
int(x) | 0に向かって切捨てた整数部 |
gauss(x) | ガウスの記号[ ] ([n]はnを越えない最大の整数) |
frac(x) | 小数部 |
round(x, digit) | 四捨五入した値。 digit で四捨五入した結果の桁数を指定します。 (例:round(1.25, 1) → 1.3) |
min(a,b,c,...) | 引数のうちもっとも小さな値 |
max(a,b,c,...) | 引数のうちもっとも大きな値 |
sumsq(a,b,c,...) | 引数の自乗和 |
sqr(x) | 二乗 |
sqrt(x) | 平方根 |
exp(x) | 指数(x≦690) |
expm1(x) | exp(x)-1、x が 0 の近傍でも正確な値が計算できる方法が用いられる。 |
ln(x) | 自然対数 |
ln1p(x) | ln(1+x)、x の値が 0 に近い場合でも正確に計算できる方法が用いられる。 |
log(x) | 常用対数 |
log1p(x) | log(1+x)、x の値が 0 に近い場合でも正確に計算できる方法が用いられる。 |
sin(x) | サイン |
cos(x) | コサイン |
tan(x) | タンジェント |
asin(x) | 逆サイン |
acos(x) | 逆コサイン |
atan(x) | 逆タンジェント |
sinh(x) | ハイパボリックサイン |
cosh(x) | ハイパボリックコサイン |
tanh(x) | ハイパボリックタンジェント |
asinh(x) | 逆ハイパボリックサイン |
acosh(x) | 逆ハイパボリックコサイン |
atanh(x) | 逆ハイパボリックタンジェント |
fmod(x, y) | x を y で割った浮動小数点剰余 |
choose(n,m) | the combinatorial factor n choose m: n!/(m!(n-m)!) |
rand(x) | 0≦RAND(x)<x (x>0のとき)の乱数 |
srand(x) | RAND() 関数で作られる疑似乱数系列の新しい種を設定する。 |
theta(x) | 階段関数(x≧0 のとき 1, それ以外は 0 ) |
delta(x) | クロネッカーのδ(x=0 のとき 1, それ以外は 0) |
gamma(x) | ガンマ関数 Γ(x) |
icgam(m,x) | 不完全ガンマ関数 Γ(μ,x) |
erf(x) | 誤差関数 Erf(x) |
erfc(x) | 相補誤差関数 Erfc(x) |
qinv(x) | 誤差関数 Erfc(x) の逆関数 |
ei(x) | 積分指数関数 Ei(x) |
beta(p,q) | ベータ関数 B(p,q) |
icbeta(a,b,x) | 不完全ベータ関数 I(a,b,x) (0 <= x <= 1) |
jn(n,x) | 第1種n次ベッセル関数 |
yn(n,x) | 第2種n次ベッセル関数 |
in(n,x) | 第1種n次変形ベッセル関数 |
kn(n,x) | 第2種n次変形ベッセル関数 |
jl(l,x) | 第1種l次球ベッセル関数 |
yl(l,x) | 第2種l次球ベッセル関数 |
jnu(nu,x) | 第1種nu次ベッセル関数 (nu は正の実数) |
ynu(nu,x) | 第2種nu次ベッセル関数 (nu は正の実数) |
inu(nu,x) | 第1種nu次変形ベッセル関数 (nu は正の実数) |
knu(nu,x) | 第2種nu次変形ベッセル関数 (nu は正の実数) |
pn(n,x) | ルジャンドル多項式 |
lgn(n,a,x) | ラゲール倍多項式 |
hn(n,x) | エルミート多項式 |
tn(n,x) | チェビシフ多項式 |
zeta(x) | リーマンゼータ関数 ζ(x) |
zeta_int(x) | リーマンゼータ関数 ζ(x) (x は整数) |
zetam1(x) | リーマンゼータ関数 ζ(x) - 1 |
zetam1_int(x) | リーマンゼータ関数 ζ(x) - 1 (x は整数) |
mjd(year,month,day,hour,min,sec) | 修正ユリウス日(year, month, day はグレゴリオ暦、hour,min,sec は UTC 時刻、うるう秒は考慮されない) |
unix2mjd(time) | 修正ユリウス日(time は 1970年1月1日00:00:00 UTC からの経過秒数、うるう秒は考慮されない) |
mjd2unix(mjd) | 修正ユリウス日 mjd の1970年1月1日00:00:00 UTC からの経過秒数(うるう秒は考慮されない) |
mjd2year(mjd) | 修正ユリウス日に対応するグレゴリオ暦の年 |
mjd2month(mjd) | 修正ユリウス日に対応するグレゴリオ暦の月 |
mjd2day(mjd) | 修正ユリウス日に対応するグレゴリオ暦の日 |
mjd2wday(mjd) | 修正ユリウス日に対応するグレゴリオ暦の曜日 (1:月曜日 から 7:日曜日) |
mjd2yday(mjd) | 修正ユリウス日に対応するグレゴリオ暦の 1 月 1 日からの通算日数 (1 から 366) |
time() | 紀元 (1970年1月1日00:00:00 UTC) からの経過時間を秒単位で返す。 |
mtime() | ファイルの最終修正時刻を返す。 |
strftime($str, $fmt, t, utc) | 時刻 t (紀元からの経過秒数)を $fmt で指定された書式指定にしたがって変換し文字列 $str に書き込む。utc が 0 の時はローカル時刻、それ以外の場合は協定世界時 (UTC) に変換する。 |
eq(x,y,prec) | x=y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は完全一致) 。 |
neq(x,y,prec) | x≠y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は完全一致) 。 |
ge(x,y,prec) | x≧y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。 |
gt(x,y,prec) | x>y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。 |
le(x,y,prec) | x≦y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。 |
lt(x,y,prec) | x<y のとき真(=1)。prec で比較の桁数を指定できる (prec == 0 は桁数指定なし) 。 |
not(x) | x=0 のとき真(=1) |
or(x,y) | (x≠0) or (y≠0) のとき真(=1) |
and(x,y) | (x≠0) and (y≠0) のとき真(=1) |
xor(x,y) | (x≠0) xor (y≠0) のとき真(=1) |
array(a, v1, v2, ...) | 配列 a を残りの引数で初期化する。配列の要素数を返す。 |
size(a) | 配列 a の要素数 |
sort(a) | 配列 a を整列する |
rsort(a) | 配列 a を逆順に整列する |
pop(a, n) | 配列 a から末尾のn要素を取り除く (n = 0 は n = 1 と同義) 。戻り値は操作後の配列の要素数。 |
push(a,x) | 配列 a の末尾に x を追加する (戻り値は操作後の配列の要素数) |
shift(a, n) | 配列 a の先頭のn要素を取り除く (n = 0 は n = 1 と同義) 。残りの要素は前に詰められる。戻り値は操作後の配列の要素数。 |
unshift(a,x) | 配列 a の先頭に x を挿入する (戻り値は操作後の配列の要素数) |
array_sum(a) | 配列 a の要素の和を返す |
array_sumsq(a) | 配列 a の要素の自乗和を返す |
array_average(a) | 配列 a の要素の平均を返す |
array_stdevp(a) | 配列 a の要素の標準偏差を返す |
array_stdev(a) | 配列 a の要素の不偏標準偏差を返す |
array_max(a) | 配列 a に含まれる最大の値を返す |
array_min(a) | 配列 a に含まれる最小の値を返す |
array_moving_average(dest, src, n, type) | 配列 src の隣接平均を計算し、配列 dest に格納する。 隣接平均の計算に使われるデータ数を n で指定する (1 の時、前後1つのデータと合わせて3つのデータの平均がとられる)。 type が 0 の時は単純移動平均、1 の時は加重移動平均を計算する。 |
array_clear(a) | 配列 a の配列の要素数を 0 にする |
array_compact(a) | 配列 a の配列の要素から通常の数値以外を取り除き、取り除いた後の要素数を返す |
array_copy(dest, src) | 配列 src の各要素を配列 dest に設定する。 |
map(dest, src, item, ex) | 配列 src の各要素に対して式 ex を計算し、その結果を配列 dest に格納する。第2引数に指定した変数 (item) で配列の要素を参照できる。 |
reduce(a, item, result, ex) | 配列 a の各要素に対して、 式 ex を実行し、最後に実行した結果を返す。第2引数に指定した変数 (item) で配列の要素を、第3引数に指定した変数 (result) で前回の繰り返 しにおける計算結果を参照できる。 |
each(a, item, ex) | 配列 a の各要素に対して、式 ex を実行する。第2引数に指定した変数 (item) で配列の要素を参照できる。 |
each_with_index(a, item, index, ex) | 配列 a の各要素に対して、式 ex を実行する。第2引数に指定した変数 (item) で配列の要素を、第3引数に指定した変数 (index) で繰り返しのカウンタを参照できる。 |
zip(a1, a2, item1, item2, ex) | 配列 a1, a2 の各要素に対して、式 ex を実行する。第3引数、第4引数に指定した変数 (item1, item2) で配列の要素を参照できる。 |
zip_map(dest, src1, src2, item1, item2, ex) | 配列 a1, a2 の各要素に対して、式 ex を実行、その結果を配列 dest に格納する。第4引数、第5引数に指定した変数 (item1, item2) で配列の要素を参照できる。 |
filter(dest, src, item, ex) | 配列 src の各要素に対して式 ex を計算し、その結果が真であった要素を配列 dest に格納する。第3引数に指定した変数 (item) で配列の要素を参照できる。 |
find(a, item, ex) | 配列 a の各要素に対して式 ex を計算し、その結果が真であった最初の要素を返す。第2引数に指定した変数 (item) で配列の要素を参照できる。 |
index(a, item, ex) | 配列 a の各要素に対して式 ex を計算し、その結果が真であった最初の要素の位置を返す。第2引数に指定した変数 (item) で配列の要素を参照できる。 |
メモリーは全ての数式変換で共有されます。
m(i,x) | 引数を第iメモリーに代入する(i=0〜65535)、i が負のときは末尾からのインデックス (戻り値は x) |
rm(i) | 現在の第iメモリーの値(i=0〜65535)、i が負のときは末尾からのインデックス |
cm(x,n) | 先頭からn個のメモリーを x で初期化する、n が 0 のときはメモリー全体、n が負のときは末尾から n 個のメモリーを x で初期化する (戻り値は x) |
am(a) | 配列 a の内容をメモリーにコピーする (戻り値はコピーした要素数) |
図形を描画します。
draw_rect(x, y, w, h, stroke, fill) | (x, y) と (x + w, y + h) を対角の頂点とする矩形を描画します。stroke, fill が 0 の場合はそれぞれ輪郭、塗りつぶしを描画しません。 |
draw_arc(x, y, rx, ry, start, stop, pieslice, stroke, fill, close) | (x, y) を中心とし X 方向半径 rx, Y 方向半径 ry の円弧を描画しま す。start, stop で開始角、円弧角を指定します。stroke, fill が 0 の場合はそれぞれ輪郭、塗りつぶしを描画しません。pieslice が 0 以 外の場合は扇形を描画します。close が 0 以外の場合は輪郭を閉じま す。 |
draw_mark(x, y, size) | (x, y) にマークを描画します。size でマークのサイズを指定できます。 size が 0 のときはデータオブジェクトのサイズ指定が使われます。 |
draw_line(x1, y1, x2, y2, arrow, size) | (x1, y1) から (x2, y2) に直線を描画します。arrow が 1 のときは終点、 2 の時は始点、3 の時は両端に矢印を描画します。size で矢印の大きさを 指定できます。size が 0 以下の時はデータオブジェクトのサイズ指定が 使われます。 |
draw_polyline(ax, ay) | 座標 (ax[0], ay[0]), (ax[1], ay[1]), ... を直線で結びます。 |
draw_polygon(ax, ay, stroke, fill) | 座標 (ax[0], ay[0]), (ax[1], ay[1]), ... で囲まれた領域を描画します。 stroke, fill が 0 の場合はそれぞれ輪郭、塗りつぶしを描画しません。 |
draw_errorbar(x, y, erx, ery, size) | (x - erx, y) から (x + erx, y) および (x, y - ery) から (x, y + ery) に誤差棒を描画する。size で tick の長さを指定できる。size が 0 のときはデータオブジェクトのサイズ指定が使われる。 |
draw_errorbar2(x1, y1, x2, y2, size) | (x1, y1) から (x2, y2) に誤差棒を描画する。size で tick の長さを 指定できる。size が 0 のときはデータオブジェクトのサイズ指定が 使われる。 |
draw_text($str, x, y, dir) | (x, y) に文字列 $str を描画します。dir で方向を指定できます。 制御文字を使用した書式指定が可能です。 |
draw_text_raw($str, x, y, dir) | (x, y) に文字列 $str を描画します。dir で方向を指定できます。 制御文字は使用できません(そのまま表示されます)。 |
text_align(x, y) | 文字列を描画するときの位置合わせを指定します。 x は文字列の描画方向、y はそれと直行する方向の位置を0〜1の値で指定します。 |
text_font(font) | 文字列を描画するときのフォントを指定します。 fontは 0, 1, 2 がそれぞれ Sans-serif, Serif, Monospace に対応します。 |
text_style(style) | 文字列を描画するときのスタイルを指定します。 style は 0, 1, 2, 3 がそれぞれ normal, bold, italic, bold-italic に対応します。 |
text_size(pt, space, script) | 文字列を描画するときのフォントサイズなどを指定します。 pt でフォントサイズを指定できます。 続く引数で文字間隔、スクリプトサイズを指定できます。 それぞれ 0 を指定した時は初期値に設定されます。 |
string_float($str) | $str を浮動小数点に変換し、その値を返します。 |
string_float_array(dest, $ary) | 配列 $ary の各要素を浮動小数点に変換し、その値を配列 dest に代入します。 変換された要素数を返します。 |
string_length($str) | $str に含まれる文字数を返します。UTF-8 以外の文字列では使えません。 |
puts($str, $format, v1, v2, ...) | 文字列 $str と改行を information window に表示します。正しい UTF-8 文字列の場合、文字列の文字数を返します。 |
printf($str, $format, v1, v2, ...) | 数値 v1, v2, ... を $format に従って文字列に変換して information window に表示します。正しい UTF-8 文字列の場合、変換された文字列 の文字数を返します。$format の書式は printf(3) に準じます。詳し くは フォント/テキスト - 整形を参照し てください。 |
sprintf($str, $format, v1, v2, ...) | 数値 v1, v2, ... を $format に従って文字列に変換して $str に代入し ます。正しい UTF-8 文字列の場合、変換された文字列の文字数を返します。 $format の書式は printf(3) に準じます。詳しくは フォント/テキスト - 整形を参照してくだ さい。 |
string($str, value) | 数値 value を文字列に変換して $str に代入します。value を返します。 |
string_up($dest, $src) | 文字列 $src に含まれる ascii 文字を大文字にした文字列を $dest に代入します。 |
string_down($dest, $src) | 文字列 $src に含まれる ascii 文字を小文字にした文字列を $dest に代入します。 |
string_strip($str) | 文字列 $str の先頭、最後にある空白文字を削除します。 |
string_append($dest, $src) | 文字列 $dest の最後に文字列 $src を連結します。 |
string_prepend($dest, $src) | 文字列 $dest の最初に文字列 $src を連結します。 |
string_insert($dest, $src, pos) | 文字列 $dest の pos 番目の文字の前に文字列 $src を挿入します。 |
string_reverse($dest, $src) | 文字列 $src の並びを逆にした文字列を $dest に代入します。UTF-8 以外の文字列では使えません。 |
string_compare($str1, $str2, ignore_case) | 2つの文字列 $str1 と $str2 を比較して $str1 が $str2 に較べて 1)小 さい、2)等しい、3)大きい場合に、ゼロよりも 1)小さい、2)等しい、3)大 きい整数を返します。ignore_case が 0 以外の場合は文字列に含まれる ascii 文字の大文字小文字を区別せずに比較します。 |
string_match($str, $regexp, ignore_case) | 文字列 $str に対して、文字列 $regexp が表す正規表現によるマッチング を行います。マッチした場合は 0 以外の数値、マッチしなかった場合は 0 を返します。ignore_case が 0 以外の場合は文字列に含まれる ascii 文 字の大文字小文字を区別せずに比較します。 |
string_truncate($str, len) | 文字列 $str の先頭 len 文字以降を削除します。UTF-8 以外の文字列では使えません。 |
string_erase($str, pos, len) | 文字列 $str から、pos 文字目から始まる len 文字を削除します。UTF-8 以外の文字列では使えません。 |
string_join($str, $sep, $ary) | 配列 $ary に含まれる文字列を結合して $str に代入します。各要素の間には $sep が挿入されます。 |
string_substring($dest, $src, start, end) | 文字列 $src の pos 文字目から始まり end 文字までからなる文字列を $dest に代入します。UTF-8 以外の文字列では使えません。 |
string_split($dest, $src, $separator, use_regexp) | 文字列 $src を文字列 $separator で分割し、分割された文字列を文字 列の配列 $dest に代入します。use_regexp が 0 以外の場合は $separator を正規表現として解釈します。use_regexp が 2 の場合は $separatorに含まれる ascii 文字の大文字小文字を区別せずに分割しま す。分割された要素数を返します。1つ目の引数に数値の配列を指定した時は 分割された文字列を浮動小数点に変換して配列に代入します。 |
string_split_float(dest, $src, $separator, use_regexp) | 文字列 $src を文字列 $separator で分割し、分割された文字列を浮動 小数点に変換して配列 dest に代入します。use_regexp が 0 以外の場 合は$separator を正規表現として解釈します。use_regexp が 2 の場合 は$separatorに含まれる ascii 文字の大文字小文字を区別せずに分割し ます。分割された要素数を返します。 |
string_replace($dest, $src, $regexp, $replacement, ignore_case) | 文字列 $src 中の、文字列 $regexp が表す正規表現にマッチする文字列を $replacement で置換した文字列を $dest に代入します。ignore_case が 0 以外の場合は文字列に含まれる ascii 文字の大文字小文字を区別せずに 比較します。 |
string_column($dest, index) | データファイルを読み込んだ時に index カラムの文字列を $dest に代入 します。index が 0 のときは行全体の文字列が代入されます。 |
size($a) | 配列 $a の要素数を返します。 |
sort($a, ignore_case) | 配列 $a を整列します。ignore_case が0 以外の場合は文字列に含ま れる ascii 文字の大文字小文字を区別せずに比較します。 |
rsort($a, ignore_case) | 配列 $a を逆順に整列します。ignore_case が0 以外の場合は文字列 に含まれる ascii 文字の大文字小文字を区別せずに比較します。 |
array_clear($a) | 配列 $a の配列の要素数を 0 にする |
pop($a, n) | 配列 $a から末尾のn要素を取り除く (n = 0 は n = 1 と同義) 。戻り値は操作後の配列の要素数。 |
push($a, $x) | 配列 $a の末尾に $x を追加する (戻り値は操作後の配列の要素数) |
shift($a, n) | 配列 $a の先頭のn要素を取り除く (n = 0 は n = 1 と同義) 。残りの要素は前に詰められる。戻り値は操作後の配列の要素数。 |
unshift($a, $x) | 配列 $a の先頭に $x を挿入する (戻り値は操作後の配列の要素数) |
index($a, $item, ex) | 配列 $a の各要素に対して式 ex を計算し、その結果が真であった最初の要素の位置を返す。第2引数に指定した変数 ($item) で配列の要素を参照できる。 |
filter($dest, $src, $item, ex) | 配列 $src の各要素に対して式 ex を計算し、その結果が真であった要素を配列 $dest に格納する。第3引数に指定した変数 ($item) で配列の要素を参照できる。 |
array_copy($dest, $src) | 配列 $src の各要素を配列 $dest に設定する。 |
map(dest, $src, $item, ex) | 配列 $src の各要素に対して式 ex を計算し、その結果を配列 dest に格納する。第2引数に指定した変数 ($item) で配列の要素を参照できる。 |
reduce($a, $item, result, ex) | 配列 $a の各要素に対して、 式 ex を実行し、最後に実行した結果を返す。第2引数に指定した変数 ($item) で配列の要素を、第3引数に指定した変数 (result) で前回の繰り返 しにおける計算結果を参照できる。 |
fit_prm(id,x) | ID が id の data オブジェクトのプロットタイプが fit のとき、対応す る fit object のフィールド "%0x" の値。 |
fit_calc(id,x) | ID が id の data オブジェクトのプロットタイプが fit のとき、対応する fit 結果 f(x) を計算する。 |
fit_solve(id,y,x0,x1) | ID が id の data オブジェクトのプロットタイプが fit のとき、対応する fit 結果 f(x) に対して f(x) = y となる x を計算する。x の初期値は x0, x1 で指定する。 x1 が 0 の場合はニュートン法それ以外の場合は二分法で計算する。 正常に計算できなかった場合は UNDEF を返す。 |
line_number() | 処理中のファイル行番号 (1行目が1) |
isnormal(x) | x が通常の数値の場合真 |
isbreak(x) | x が BREAK の場合真 |
iscont(x) | x が CONT の場合真 |
isnan(x) | x が NAN の場合真 |
isundef(x) | x が UNDEF の場合真 |
sum(x) | 積算 |
dif(x) | 差分 |
f(x,y,z) | ユーザ定義関数 |
g(x,y,z) | ユーザ定義関数 |
h(x,y,z) | ユーザ定義関数 |
color(0,x) | R値を x (0≦x<256)に設定 |
color(1,x) | G値を x (0≦x<256)に設定 |
color(2,x) | B値を x (0≦x<256)に設定 |
color(3,x) | RGB値を x (0≦x<256)に設定 |
color(4,x) | R2値を x (0≦x<256)に設定 |
color(5,x) | G2値を x (0≦x<256)に設定 |
color(6,x) | B2値を x (0≦x<256)に設定 |
color(7,x) | R2, G2, B2 値を x (0≦x<256)に設定 |
color(8,x) | x を 6 桁の 16 進数として、 2 桁ずつ R, G, B 値に設定 |
color(9,x) | x を 6 桁の 16 進数として、 2 桁ずつ R2, G2, B2 値に設定 |
obj_color(id, DATA_OBJ), obj_color(id) | R, G, B, R2, G2, B2 値を ID が id の data オブジェクトと同じ値にする。 |
obj_color(id, PATH_OBJ) | R, G, B, R2, G2, B2 値を ID が id の path オブジェクトの stroke_R, stroke_G, stroke_B, fill_R, fill_G, fill_B と同じ値にする。 |
obj_color(id, RECT_OBJ) | R, G, B, R2, G2, B2 値を ID が id の rectangle オブジェクトの stroke_R, stroke_G, stroke_B, fill_R, fill_G, fill_B と同じ値にする。 |
obj_color(id, ARC_OBJ) | R, G, B, R2, G2, B2 値を ID が id の arc オブジェクトの stroke_R, stroke_G, stroke_B, fill_R, fill_G, fill_B と同じ値にする。 |
obj_color(id, MARK_OBJ) | R, G, B, R2, G2, B2 値を ID が id の mark オブジェクトと同じ値にする。 |
obj_color(id, TEXT_OBJ) | R, G, B 値を ID が id の text オブジェクトと同じ値にする。 |
alpha(x) | A, A2 値を x (0≦x<256)に設定 |
alpha(x,1) | A 値を x (0≦x<256)に設定 |
ALPHA(x,2) | A2 値を x (0≦x<256)に設定 |
obj_alpha(id, DATA_OBJ), OBJ_ALPHA(id) | A, A2 値を ID が id の data オブジェクトと同じ値にする。 |
obj_alpha(id, PATH_OBJ) | A, A2 値を ID が id の path オブジェクトの stroke_A, fill_A と同じ値にする。 |
obj_alpha(id, RECT_OBJ) | A, A2 値を ID が id の rectangle オブジェクトの stroke_A, fill_A と同じ値にする。 |
obj_alpha(id, ARC_OBJ) | A, A2 値を ID が id の arc オブジェクトの stroke_A, fill_A と同じ値にする。 |
obj_alpha(id, MARK_OBJ) | A, A2 値を ID が id の mark オブジェクトと同じ値にする。 |
obj_alpha(id, TEXT_OBJ) | A 値を ID が id の text オブジェクトと同じ値にする。 |
rgb(r,g,b) | 色のRGB値をそれぞれ r, g, b (0≦r,g,b≦1)に設定 |
rgb2(r,g,b) | R2, G2, B2, の値を r, g, b (0≦r,g,b≦1)に設定 |
hsb(h,s,b) | 色のHSB値をそれぞれ h, s, b (0≦h,s,b≦1)に設定 |
hsb2(h,s,b) | R2, G2, B2, の値を、HSB値からそれぞれ h, s, b (0≦h,s,b≦1)に設定 |
marksize(x) | マークのサイズをXに設定 |
marktype(x) | マークの種類をXに設定 |
if(x,ex1,ex2) | x ≠ 0 のとき ex1, x = 0 のとき ex2 |
unless(x,ex1,ex2) | x ≠ 0 のとき ex2, x = 0 のとき ex1 |
for(m,begin,end,step,ex) | 第mメモリーの値に begin から end まで step で値を設定し、ex を繰り返 す。m が負の時はメモリーへの設定は行われない。最後に評価された ex の 値を返す。 |
times(n, index, ex) | ex を n 回繰り返す。第2引数に指定した変数で、繰り返しのカウンタ (0 〜 n-1) を参照できる。最後に評価された ex の値を返す。 |
getobj($obj, $field, id) | ID が id のオブジェクト $obj のフィールド $field の値を返す。field type が int, bool, enum, double の場合に利用できます。 |
getobj_string($str, $obj, $field, id) | ID が id のオブジェクト $obj のフィールド $field の値を $str に代入 する。field type が char* の場合に利用できます。正しい UTF-8 文字列 の場合、文字列の文字数を返します。 |
getobj_array(array, $obj, $field, id) | ID が id のオブジェクト $obj のフィールド $field の値を array に代 入する。field type が char*[], double[], int[] の場合に利用できます。 設定した配列の要素数を返します。 |
text_obj_get(id, $text) | $text にID が id の text オブジェクトの文字列を設定する。 |
text_obj_set(id, $text) | ID が id の text オブジェクトの文字列を $text に設定する。 |
prog1(arg1,arg2,...) | 引数を評価し、最初の引数の値を返す |
prog2(arg1,arg2,...) | 引数を評価し、2 番目の引数の値を返す |
progn(arg1,arg2,...) | 引数を評価し、最後の引数の値を返す |
parameter(id) | ID が id の parameter オブジェクトの設定値を返す |
on_end(proc) | 各data オブジェクトの描画終了時に proc を評価する。複数回呼び出すことが可能だが、最後に指定された数式のみが評価される。 |
; は式の終端を示しますが、さらに続けて別の式を書くことができます。 式の値は一番最後の式の値になります。 例えば、長い式が何度も現れるとき変数への代入と組み合わせて
a = ...式...; ... a ....;のようにすれば同じ式は1度書くだけですみます。また式最後の ; は省略できます。
(従来は式の終端として "=" が使われていましたが version 6.06.10 以降 は ";" を推奨、version 6.08.06 以降は式の終端としての "=" を禁止しています)
m() はメモリーへの代入、rm() は読みだしです。全ての数式変換でメモリーは 共有されるため、データ間での値の受け渡しに利用できます。メ モリーは 65536 個 (0〜65535) まで利用できます。また、未使用のメモリーは 0 に初期化されています。
数値の比較を行う関数ですが、下記の例のように浮動小数点誤差により 思った通りの結果が得られない場合があります。
Ngraph$ iexpr 'eq(0.5 - 0.4, 0.1)' 0
このような場合に、3番目の引数で比較の桁数を指定すると期待する結果 が得られることが多くなります。
Ngraph$ iexpr 'eq(0.5 - 0.4, 0.1, 14)' 1
計算によっては浮動小数点誤差の影響が大きくなる場合もありますので注 意が必要です。
dif(y)=y(n) - y(n-1)
です。これを用い簡単に微分近似値を求めるにはdif(y)/dif(x)とします。
dif(y)/dif(x)は {y(n)-y(n-1)} / {x(n)-x(n-1)} になります。
この時、Xの変換数式をx-dif(x)*0.5としてXを"現在のデータと一つ前のデータの中間値"としておいた方がより真に近いグラフが得られると思われます。
X変換式: x-dif(x)*0.5 (これは { x(n-1)+x(n) }*0.5 になります)
Y変換式: dif(y)/dif(x) (これは { y(n)-y(n-1) } / { x(n)-x(n-1) } になります)
dif() は現在のデータと一つ前のデータとの差分を返しますから、y-dif(y) とすることで一つ前のデータを取り出すことができます。 同様に y-dif(y)-dif(y-dif(y)) で2つ前のデータを取り出すことができます。 y-dif(y)-dif(y-dif(y))-dif(y-dif(y)-dif(y-dif(y)))は3つ前のデータです.
一番初めの dif() の戻り値は"不定"です.このため,式全体の値も"不定"となり、結果としてデータの個数は1つ減ります(一番初めのデータに差分は存在しない)。 また dif() をいくつも含む式では、全ての dif() が初期化されるまで式全体の値は"不定"です。 例えば dif() をネストして dif(dif()) のように使った場合、一番初めのデータでは内側の dif() が初期化されその戻り値は不定の為、外側の dif() の初期化は行われません。 外側の dif() が初期化されるのは 2番目のデータの時です。 従ってデータの個数は2つ減ることになります。
sum(y)=Σ y(n) (n=1..n)
これを用い簡単に積分近似値を求めるにはsum(y*dif(x))とします。
sum(y * dif(x)) は Σ y(n) * {x(n) - x(n-1)} (n = 1..n) になります。
また、台形公式を用いて積分近似値を評価したい場合sum(0.5 * (2 * y - dif(y)) * dif(x))とします。
sum(0.5 * (2 * y - dif(y)) * dif(x)) は Σ(y(n-1) + y(n)) / 2 *{x(n) - x(n-1)} (n = 1..n) になります。
さらに積分の上限(b)、下限(a)を指定したい場合は階段関数 theta() を用いsum(0.5 * (2 * y-dif(y)) * dif(x) * theta(x-a) * theta(b-x))とします。if() を使って
if(x >= a && x <= b, sum(0.5 * (2 * y - dif(y)) * dif(x)), 0)としても可能です。
if( x < 0, 0, sqrt(x) )は x<0 のとき 0、x>=0 のとき√x を返す関数になります。また必ず ex1, ex2 どちらか一方しか評価されません。
marksize(%03)とします。ただこれですと、プロットされるデータも %03 となりますので、前述の ; を使って
marksize(%03); yとするのが正しい使い方です。 color()関数も同様で
color(3, %03); yのように使います。
data, path, rectangle, arc, mark, text の各オブジェクトの設定色を描 画色にします。例えばいくつかのフィッティング結果をもとにフィッティ ングパラメータをグラフにするような場合、
obj_color(x); fit_prm(x,1)のようにして、フィッティングとプロットの色を揃えることができます。 この時 x はフィッティングプロットにした data オブジェクトのインスタ ンス ID です。
フィッティングの結果からそのパラメータや、フィッティング式の計算を 行う関数です。
例えば、いくつかの1次フィットからその傾きをプロットしたい場合、
fit_prm(x,1)のようにします。この時 x はフィッティングプロットにした data オブジェ クトのインスタンス ID です。
また、1次ドリフトのあるデータからドリフト成分を引いてプロットし たい場合 (id が 0 の data オブジェクトでフィッティングを行ってい るとして)、
y-fit_calc(0,X)のようにします。
これらの関数はフィッティングの結果が確定していないと計算に失敗しま す。データの描画順に注意してください。また、初回のプロットでオー トスケールに反映されないことがあります。
ブロックは if(), unless(), for() などの関数の引数に使用して複数 の式を評価するために利用できます。下記の例では x の値が 1 以上変 化する毎に y の平均値を計算しています (x は1 よりも大きいことを 仮定) 。
if(x - a < 1, { b += y; n += 1; CONT; }, { r = if(n, b / n, CONT); b = y; n = 1; a = x; r; })
関数 prog1(), prog1(), progn() は複数の引数を評価して、最初、2番 目または最後の引数の値を返す関数です。if(), unless(), for() など の関数の引数に使用して複数の式を評価するために利用できます。下記 の例では x の値が 1 以上変化する毎に y の平均値を計算しています (x は1 よりも大きいことを仮定) 。
if(x - a < 1, progn(b += y, n += 1, CONT), prog1(if(n, b / n, CONT), b := y, n := 1, a := x))
データから円や矩形を描画できます。例えば、以下のようなデータから 円グラフを作成することができます。
データ
1 2 3 4
変換式
hsb2(%0/NUM,1,1); x*=360/SUMX; draw_arc(0,0,1,1,sum(x),-x,1,1,1,1)
hsb2() 関数で塗りつぶしの色を変えながら draw_arc() 関数で扇形を描 画します。
parameter object を作成すると、そのパラメータの値を parameter 関数で参照できます。 データの設定を変更せずに条件を変えてプロットすることができます。