2-4 複数のデータファイルを合わせる


 今2つのデータファイルdata1.txtとdata2.txtがあったとします。これらの2つのデータファイルを統合して1つの新しいデータファイルdata_combined.txtをつくりたいとします。その場合、以下のようなシェルを書くことになります。

#!/bin/sh 

cat data1.txt > data_combined.txt
cat data2.txt >> data_combined.txt
">"という記号はリダイレクションと呼ばれ、この記号の左側にある処理「cat data1.txt」の出力を「data_combined.txt」というファイルに書きだすという処理です。既に同じファイル名のファイルが存在する場合、">"は古いファイルを完全に削除して書き出します。一方">>"は古いファイルの末尾に新しい出力を追加します。

 このような処理はたとえば一度過去にやった計算に関して、精度を高めた計算をやりたい時に非常に役に立ちます。メッシュの荒い過去の計算データを無駄にすることなく、新しいデータ点の計算データと統合できます。やることは以下の2つの処理です。
  1. 2つのデータファイルと上記のシェルで統合する。
  2. 2-2節で説明したデータのソートコマンドを用いて、新旧データのメッシュ点の順序を成立する

   補足

 パラメータを少しずつ変えながら数値計算をする場合、等間隔にパラメータ空間をメッシュを切って各メッシュ点において計算を行うよりも、メッシュ点を乱数で発生させる方がおススメです。というのは、等間隔にパラメータ空間をメッシュを切ってしまうと、新たな計算をする際に同じデータ点に対する計算を2回やってしまう可能性があるからです。パラメータ空間のメッシュを乱数で発生させると過去の計算と新しい計算で違うパラメータでの計算値が出せて、効率的にデータ収集ができるからです(乱数がreproductiveでないという前提が必要ですが)。

 なので、乱数を発生させてパラメータ空間上にランダムにサンプリング点をまず生成するサブルーチンをつくったりすることをお勧めします。ただ各パラメタに対する計算時間が非常に大きな場合にはこの限りではありません。というのはこのようなランダムにサンプリング点を与える方法はパラメータ空間上を一様にカバーするには少し効率が悪いからです。

 もっと言うと、この乱数は本当にランダムな乱数ではなく、一度サンプリングした点の近くを取りにくいようにした乱数の方が効率的です。このような効率的な乱数発生の方法は"Numerical Recipe"等に書いてあるので、興味のある方はそちらをご参照ください。

前項目へ  次項目へ  目次へ戻る

E-mail : endo cat.phys.s.u-tokyo.ac.jp