#!/usr/bin/ruby target = nil range = nil if ARGV.size == 1 then begin range = eval(ARGV[0]) if range.class != Range then raise Exception::new end target = $stdin rescue Exception range = nil target = open(ARGV[0]) end elsif ARGV.size == 2 then target = open(ARGV[0]) range = eval(ARGV[1]) end unless target then puts "Target not found!!" puts "Usage1 : #{__FILE__} log_CSV [range=0..-1]" puts "Usage2 : | #{__FILE__} [range=0..-1]" exit end data = [] 8.times{|i| data << []} open(ARGV[0]).each_with_index{|line, line_no| if range and !range.include?(line_no) then next end (line.chop!.split(/,/))[2..-1].each_with_index{|item, i| data[i] << item.to_i } } # ƒÊ,ƒÐ‚ð‹‚ß‚é mu = [] sigma2 = [] data.each{|item| sum = 0.0 sum2 = 0.0 item.each{|v| sum += v sum2 += v ** 2 } mu << (sum / item.size) sigma2 << (sum2 / item.size) - ((sum / item.size) ** 2) } mu.size.times{|i| puts "Ch#{i}, mu: #{mu[i]}, sigma2: #{sigma2[i]}, sigma: #{Math::sqrt(sigma2[i])}" }