Go to the first, previous, next, last section, table of contents.


バッファからのデータ取得

M-# g (calc-grab-region) コマンドは、 カレントバッファのポイント〜マーク間のテキストを取得し、 それを値のベクトルとして解釈しようとします。 基本的に、取得したテキストが既にベクトル括弧`[ ]'で囲まれていない限り、 テキストをベクトル括弧で囲んでから、代数的入力のように読みます。 ベクトルの要素は、数, 式, その他 Calc オブジェクトは何でも許されます。 M-# g コマンドの処理が成功したら、 自動的に M-# c を実行し、Calc バッファに入ります。

数値接頭引数を付けると、ポイント周辺の指定行数分を取得します。 正の接頭引数ではポイントから n番目の行まで (だからM-1 M-# g はポイントから現在行の行末まで) を取得します。 負の接頭引数では、ポイントから前方に n+1 個めの改行までを取得します。 これは、C-k の接頭引数仕様に準拠しています。

ゼロの接頭引数を付けると現在行全体を取得します。 行中のポイントの位置には依りません。

接頭引数が空の C-u では、ポイント・マーク間のリージョンを、 ベクトルではなく単一の数か式として解釈します。 例えば `2 a b' と言うリージョンから、 M-# g なら `[2, a, b]' を生成しますが、 C-u M-# g はこれを3因子の積 `2 a b' として解釈します。 (いっぽう、取得テキストが `a + b' の場合、 `[a, +, b]' ではシンタックス・エラーになってしまうので 普通の M-# g はこれを1要素のベクトルと解釈します。)

異なる言語が指定されていると(Language Modes 参照 )、 取得テキストはその言語に基づいて解釈されます。

M-# r (calc-grab-rectangle) コマンドは、 ポイント・マーク間のテキスト(リージョンでない場合あり)を取得して、 それを行列として解釈しようとします。 この際、ポイントとマークの両方が左端の列にある場合のみ、 挟まれた行全体(リージョン)を取得しますが、それ以外は、 ポイントとマークを対角とする矩形領域の内部を取得します。

取得した領域の各行が、行列の各行になります。 解釈の実際の結果はベクトルのベクトル(リスト)で、 この各行の要素数が全て同じ場合に、 Calc はこれを行列として扱います。

ある行の一部が大括弧(あるいは中括弧)で囲まれている場合、 その部分は行ベクトルと解釈され、行列の1行になります。 括弧の外側のテキストは何であれ無視されます。

行内に括弧領域がなければ、 行全体が(括弧で囲まれているかのように)行ベクトルとなります。 (Calc スタックバッファの書式にある)行頭の行番号は無視されます。 行内に括弧領域があるが、あえてこのような解釈を強制したいときは、 M-# r コマンドに負の接頭引数を与えてください。

ゼロまたは空の接頭引数を与えると、 各行をひとつの式からなる1要素のベクトルとして解釈します。 従って、C-u M-# r は1列の行列を生成します。 例えば、データのある行が `2 a' だったとすると、 普通の M-# r はこれを 2要素の行ベクトル `[2 a]' と解釈しますが、 C-u M-# r はその行を `[2*a]' と解釈します。

正の接頭引数 n を与えると、各行が幅 n の列に分割され、 それぞれが行列の1要素として個々に解釈されます。 ある行の内容が `2 +/- 3 4 +/- 5' だったとすると、 接頭引数 8 で取得すれば、2個の誤差型式データに分割できます。

行列からその要素行や列を抜出す方法は、Vector/Matrix Functions 参照 。 (もしそれが @c{$1\times1$} 1x1 行列なら、 単に v u (calc-unpack) を2回打てば要素が取出せます。)

M-# : (calc-grab-sum-down) コマンドは、 矩形領域を取得してその列合計を求める便利な方法です。 これは M-# r に続けて V R : + (ベクトルまとめコマンドのひとつで、 行列を列ごとに合計します; Reducing 参照 ) を実行するのと同等です。 結果は数のベクトルで、各要素が入力データの各列に対応します。 M-# _ (calc-grab-sum-across) コマンドは、同様にデータを取得し、 V R _ + を実行して各行の合計を求めます。

便利なだけでなく、M-# :M-# _ は、 取得したベクトルを実際はスタックに置かないので、 処理が速くなります。 M-# r V R : + とする場合では、 スタックに置かれたベクトルを表示のために整形する時間がかなりかかります (あらかじめ計画的に、v .t . 表示モードにしておけば別ですが)。

例えば、あるファイルの中に合計したい数の列があったとしましょう。 列の片隅で C-@ を押してマークしておき、 次に対角の隅に移動して M-# : をタイプします。 この例では列はひとつしかないので、結果は要素ひとつ(合計)のベクトルになります。 (後の計算に必要なら、v u を押して括弧を開き、普通の数にできます。)

数の列の積を計算するための、特別な「取得して掛け算」コマンドは無いので、 それは手動でやらねばなりません。 M-# r を使って、そのデータ列を1列の行列として Calc に取込んでください。 ベクトルや行列の要素の積を求めるには、統計コマンド u * が便利です。 Statistical Operations on Vectors 参照 。 もうひとつのやり方は、明示的に列をまとめるコマンド V R : * を使う事です。


Go to the first, previous, next, last section, table of contents.     利用度数