小数点以下だい二位までを有効数字として考え,第三位の値を修正して誤差を丸める.
⇒デジタイズしたときに直線が多少斜めになってしまうので,これを直線とする.
たとえば・・・
   135.463→135.45:0.013引く
   135.442→135.45:0.008足す
☆考え方☆
   ①千倍する.
    ②50で割り切れる.
   135463→135450
   135442→135440×→25を足していおいてやる
これを実際の式で書くと・・・
(x * 1000 + 25) / 50).to_i * 50.0) / 1000
ここで,
xは,デジタイズしたままのそれぞれの値,
to_iとは「整数で扱ってね」という意味です.

では,実際にスクリプトを見ていきましょう.
まず,最初の四行です.

    file = "epi4.txt"
      ←fileという変数にepi4.txtを入れる.
    def modi(x)
      ←modi(x)という関数を定義する.
    ((((x * 1000) + 25) / 50).to_i * 50.0) / 1000.0
      ←上の説明の通り.
    end

では,次の四行です.

    f = open(file)
      ←fという変数にfile(epi4.txt)をオープンして入れる.
    out_file = file[0..-4] + "mod"
      ←元のファイル名の先頭から終わりの四文字手前まで残してmodをつけ(epi4.modとなる),それをout_fileに入れる.
    out = open(out_file,"w")
      ←出力するファイルとしてout_fileを開く.  
    10.times{out.puts f.gets}
      ←最初の十行(ヘッダー)をそのまま書き出す.

ここまではよろしいでしょうか?
ごめんなさい.ちょっと中断です.
もうちょっと待ってください.

ちなみに、ここまであってるでしょうか?
間違っているところやわからないところがあれば柴田までお願いします.

タグ:

+ タグ編集
  • タグ:
最終更新:2007年06月21日 00:11