[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000078] Re: gtrb & multi-D array
堀之内です。
>> 多分やりそうなことで速度的に問題になるのは,Ruby で書いた
>> 自前のメソッドを,配列の全データに当てはめたい,などと
>> いうときでしょうか.
>> しかし,
>> def t2theta2(p)
>> if (p>=0)
>> self * (P0/p)**K
>> else
>> self * (-p/P0)**K
>> end
>> end
>> とか条件判断が入ってくると少し苦しくなる
# はずしてたらごめんなさい:
IDL方式ですが、条件判断にはこんなやり方もあります。
idx=p.where{|i| i>0} ## 0より大きいところのインデックスを集めた配列
self[idx]=self[idx]*(P0/p[idx])**K
elsewhere部分をどうすっきり書くかは問題ですが、各要素をオブジェクト化
する必要は無くなります (whereの実装を C のレベルでやれば。 ってどうす
るんだろう)。
# これを簡単にやるため IDL では多次元配列の一次元配列扱いが出来ます。
(whereの出力はデータ先頭からの通し番号の配列でよい)
> # ま、いずれは ruby で super computing ってこともあるかも
> # 知れない、ということでご勘弁を。。。
現実問題として私はrubyをシミュレーションに使いたいと思っています。
CPUを目一杯使いたい重い計算でなく、ちょっと簡単なモデルを使いたいと
かいったことは良くありますよね。そういうときに開発コストの絶大なる低減
がはかれると思います。さらに、rubyでGCMというのもいいですね。Cや
Fortranで書かれた各種部品をそろえておいて rbuy で統合する。
堀之内 武 horinout@xxxxxx
京都大学超高層電波研究センター 611-0011 宇治市五ヶ庄
phone:0774-38-3812 fax:0774-31-8463