Sha256: 33ebf849d50c5402bc63ce7107abbf0ff34ec86d8869093f3c51d189de8c12ca
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
require 'linalg' module Linalg class DMatrix # # Pseudo-inverse. # # For matrix +m+, find +x+ which minimizes # (m*x - DMatrix.identity(m.vsize)).norm # def pseudo_inverse(epsilon = nil) DMatrix.fit(self, DMatrix.identity(vsize)) end def middle_row startA=([0]*columns.entries.length) start=DMatrix[startA] rows.entries.inject(start){|old,new| old+new }/rows.entries.length end def middle_col startA=([[0]]*rows.entries.length) start=DMatrix[*startA] columns.entries.inject(start){|old,new| old+new }/columns.entries.length end def covariance m=middle_row colCount=self.columns.entries.length rowCount=self.rows.entries.length r=(0...colCount).to_a.map{|y| (0...colCount).to_a.map{|x| (0...rowCount).inject(0) {|old,c| old+(self[c,y]-m[0,y])*(self[c,x]-m[0,x]) }/rowCount } } DMatrix[*r] end def cut(w,h) r=(0...h).to_a.map{|y| (0...w).to_a.map{|x| self[y,x] } } DMatrix[*r] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
appswarm-0.0.1 | lib/appswarm/routing/matrix_math.rb |