[ GFD Dennou Ruby Home | GPhys Home | Tutorial top ]

このドキュメントは作成中です. 学習には 現行のチュートリアル を参照ください.

Ruby, NArray の体験

さて、ここまで行なってきたのは 主に GGraph のメソッドを利用したものばかりです. 描画だけでなく, 演算なども行いたいことがあります. そのとき GPhys ライブラリを用いると 任意の軸情報を持ったデータを楽に取り扱うことができます.

その前に, GPhys, GGraph (および RubyDCL) の基礎となる Ruby という言語および NArray という Ruby のライブラリ を簡単に体験してみましょう. これらの使い勝手を知っておくと, GPhys がより使いやすくなります.

Ruby のより詳しいチュートリアルは Dennou-Rubyチュートリアルページ(基礎編), NArray については Numerical Ruby NArray などを参考にしてください.

Ruby 基礎の基礎

irb を立ち上げます.

$ irb

Ruby の文法を簡単に体験してみましょう.

a = 1          # 予め型を宣言しなくてもよい
a = "orange"   # 型エラーになったり, 変な結果になったりしない.

a        # irb で中身を見るだけなら代入などの操作は不要

ary = [1,2,3]            # 配列
ary = ["hoge", 2, 3.45]  # 中のデータは同じ種類である必要はない
ary[0]                   # 添字は 0 始まり

1.to_s    # メソッドは後ろに書くことも多い

# ループを回す
ary.each{|a|
  puts a
}

ドットをつける書き方は, 何個もつなぐことができます. その場合, 前から順に適用されていきます.

ary = ["hoge", "hero", "foo"]
ary.reverse.join(" ")   # 配列を逆順にして, 半角スペースを挟んだ文字列に変換

シェルのパイプがドットになったものと 想像するとわかりやすいかもしれません.

class メソッドを使うとそのデータの型 (クラスと呼びます) が返ります.

1.class
'hoge'.class
[1,2,3].class

演習問題

  1. サンプルファイル T.nc を読み込んで作った gp のクラスは何か調べてみましょう.
  2. オブジェクトに適用できるメソッド一覧は methods メソッドで見られます. (1) で調べた, gp のクラスにはどのようなメソッドがあるか調べてみましょう.

NArray 基礎の基礎

Ruby に配列 (Array) はあるのですが, 数値を扱うには不便なことがあります.

a = [1,2,3]
b = [4,5,6]
a + b   # 配列が連結された結果が返ってしまう

しかし, NArray というクラスを用いると数値計算を 比較的簡単に書くことができます. さっきの配列を NArray に変換して計算してみましょう.

a = NArray.to_na(a)
b = NArray.to_na(b)
a + b   # 配列の足し算になる

最初から作る場合はこうなります.

a = NArray.int(3).indgen  # [0,1,2]
b = NArray.int(2,3).indgen  # [[0,1,2],[3,4,5]]

こういうこともできます.

a = 2 * NArray.int(3).indgen  # [0,2,4]
b = NArray.int(1,3).indgen  # [[0],[1],[2]]
c = b*a

演習問題

  1. NArray を使って, 以下のような九九の表を作ってみましょう.
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], 
  [ 2, 4, 6, 8, 10, 12, 14, 16, 18 ], 
  [ 3, 6, 9, 12, 15, 18, 21, 24, 27 ], 
  [ 4, 8, 12, 16, 20, 24, 28, 32, 36 ], 
  [ 5, 10, 15, 20, 25, 30, 35, 40, 45 ], 
  [ 6, 12, 18, 24, 30, 36, 42, 48, 54 ], 
  [ 7, 14, 21, 28, 35, 42, 49, 56, 63 ], 
  [ 8, 16, 24, 32, 40, 48, 56, 64, 72 ], 
  [ 9, 18, 27, 36, 45, 54, 63, 72, 81 ] ]

参考文献


davis Group / GFD Dennou Staff dcstaff@gfd-dennou.org