module TLib::Math
Public Instance Methods
exp(ave=0.5)
click to toggle source
gauusian(x, mu, sigma)
click to toggle source
gauusian_array(x, mu, sigma)
click to toggle source
gauusian_over_2dim(x, mu, conv)
click to toggle source
gauusian distribution over 2 dim version¶ ↑
# File lib/t_lib/math.rb, line 36 def gauusian_over_2dim(x, mu, conv) x = Matrix[x] mu = Matrix[mu] conv = Matrix[*conv] f1 = 1.0/(((2.0 * Math::PI)**(@dim/2.0)) * ( conv.det**(0.5) )) f2 = Math.exp((-1.0/2.0)*((x-mu) * conv.inverse * (x-mu).transpose)[0, 0]) return (f1 * f2) end
normal_rand(mu = 0,sigma = 1.0)
click to toggle source
poisson_rand(mu=0.0)
click to toggle source
scale(x)
click to toggle source
# File lib/t_lib/math.rb, line 85 def scale(x) sum_each_vec = [] ave_list = [] std_list = [] x.each{|vec| vec.each_with_index{|data, i| sum_each_vec[i] = (sum_each_vec[i] == nil) ? data : sum_each_vec[i]+data } } x[0].size.times{|i| ave_list.push(sum_each_vec[i]/x.size) } sum_each_vec = [] x.each{|vec| vec.each_with_index{|data, i| sum_each_vec[i] = (sum_each_vec[i] == nil) ? (ave_list[i]-data)**2 : (sum_each_vec[i]+(ave_list[i]-data)**2) } } x[0].size.times{|i| std_list.push(Math.sqrt(sum_each_vec[i]/x.size)) } scaled_x = [] x.each_with_index{|vec, i| scaled_x[i] ||= [] vec.each_with_index{|data, j| scaled_x[i][j] ||= (data-ave_list[j])/std_list[j] } } return scaled_x end