#!/usr/bin/ruby if ARGV.size < 1 then puts "Usage #{__FILE__} log_A [range = 0..-1]" exit end range = ARGV[1] ? eval(ARGV[1]) : nil 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.split(/\s+/)[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])}" }