Sha256: 7adf00af5262491c6aaa66ac2dc2f247b47faadfb3643ccc63908e13a1f6ffd9

Contents?: true

Size: 1.72 KB

Versions: 4

Compression:

Stored size: 1.72 KB

Contents

require 'matrix'
class Matrix
    def rows_sum
        (0...row_size).collect {|i|
            row(i).to_a.inject(0) {|a,v| a+v}
        }
    end
    def cols_sum
        (0...column_size).collect {|i|
            column(i).to_a.inject(0) {|a,v| a+v}
        }
    end
    def total_sum
        rows_sum.inject(0){|a,v| a+v}
    end
    def row_stochastic
        rs=rows_sum
        rows=(0...row_size).collect{|i|
            (0...column_size).collect {|j|
                self[i,j].quo(rs[i])
            }
        }
        Matrix.rows(rows,false)
    end
    def column_stochastic
        cs=cols_sum
        rows=(0...row_size).collect{|i|
            (0...column_size).collect {|j|
                self[i,j].quo(cs[j])
            }
        }
        Matrix.rows(rows,false)
    end
    def double_stochastic
        ts=total_sum
        collect {|i| i.quo(ts)}
    end
    # Test if a Matrix is a identity one
    def identity?
        if regular?
            rows=(0...row_size).each{|i|
                (0...column_size).each {|j|
                    v = self[i,j]
                    return false if (i==j and v!=1) or (i!=j and v!=0)
                }
            }
            true
        else
            false
        end
    end
    def to_gsl
        out=[]
        self.row_size.times{|i|
            out[i]=self.row(i).to_a
        }
        GSL::Matrix[*out]
    end
    def orthogonal?
        if regular?
            (self * self.t).identity?
        else
            false
        end
    end
end


module GSL
    class Matrix
        def to_matrix
            rows=self.size1
            cols=self.size2
            out=(0...rows).collect{|i| (0...cols).collect {|j| self[i,j]} }
            ::Matrix.rows(out)
        end
    end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
statsample-0.5.1 lib/matrix_extension.rb
statsample-0.5.0 lib/matrix_extension.rb
statsample-0.4.1 lib/matrix_extension.rb
statsample-0.4.0 lib/matrix_extension.rb