Class: GSL::Matrix
Instance Method Summary collapse
- #column_size ⇒ Object
- #determinant ⇒ Object
- #eigenpairs ⇒ Object
- #eigenvalues ⇒ Object
- #eigenvectors ⇒ Object
- #eigenvectors_matrix ⇒ Object
- #inverse ⇒ Object
-
#mssq ⇒ Object
Matrix sum of squares.
- #row_size ⇒ Object
-
#square? ⇒ Boolean
def eigenpairs_ruby self.to_matrix.eigenpairs_ruby end.
- #to_dataset ⇒ Object
- #to_gsl ⇒ Object
- #to_matrix ⇒ Object
- #total_sum ⇒ Object
Instance Method Details
#column_size ⇒ Object
105 106 107 |
# File 'lib/statsample/matrix.rb', line 105 def column_size size2 end |
#determinant ⇒ Object
109 110 111 |
# File 'lib/statsample/matrix.rb', line 109 def determinant det end |
#eigenpairs ⇒ Object
138 139 140 141 142 143 144 |
# File 'lib/statsample/matrix.rb', line 138 def eigenpairs eigval, eigvec= GSL::Eigen.symmv(self) GSL::Eigen::symmv_sort(eigval, eigvec, GSL::Eigen::SORT_VAL_DESC) @eigenpairs=eigval.size.times.map {|i| [eigval[i],eigvec.get_col(i)] } end |
#eigenvalues ⇒ Object
117 118 119 |
# File 'lib/statsample/matrix.rb', line 117 def eigenvalues eigenpairs.collect {|v| v[0]} end |
#eigenvectors ⇒ Object
121 122 123 |
# File 'lib/statsample/matrix.rb', line 121 def eigenvectors eigenpairs.collect {|v| v[1]} end |
#eigenvectors_matrix ⇒ Object
132 133 134 135 136 |
# File 'lib/statsample/matrix.rb', line 132 def eigenvectors_matrix eigval, eigvec= GSL::Eigen.symmv(self) GSL::Eigen::symmv_sort(eigval, eigvec, GSL::Eigen::SORT_VAL_DESC) eigvec end |
#inverse ⇒ Object
113 114 115 |
# File 'lib/statsample/matrix.rb', line 113 def inverse GSL::Linalg::LU.invert(self) end |
#mssq ⇒ Object
Matrix sum of squares
126 127 128 129 130 |
# File 'lib/statsample/matrix.rb', line 126 def mssq sum=0 to_v.each {|i| sum+=i**2} sum end |
#row_size ⇒ Object
101 102 103 |
# File 'lib/statsample/matrix.rb', line 101 def row_size size1 end |
#square? ⇒ Boolean
def eigenpairs_ruby
self.to_matrix.eigenpairs_ruby
end
149 150 151 |
# File 'lib/statsample/matrix.rb', line 149 def square? size1==size2 end |
#to_dataset ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/statsample/matrix.rb', line 86 def to_dataset f = (self.respond_to? :fields_y) ? fields_y : column_size.times.map {|i| _("VAR_%d") % (i+1) } ds=Statsample::Dataset.new(f) f.each do |ff| ds[ff].type=:numeric ds[ff].name=ff end row_size.times {|i| ds.add_case_array(self.row(i).to_a) } ds.update_valid_data ds.name=self.name if self.respond_to? :name ds end |
#to_gsl ⇒ Object
82 83 84 |
# File 'lib/statsample/matrix.rb', line 82 def to_gsl self end |
#to_matrix ⇒ Object
153 154 155 156 157 158 |
# File 'lib/statsample/matrix.rb', line 153 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 |
#total_sum ⇒ Object
160 161 162 163 164 165 166 167 168 |
# File 'lib/statsample/matrix.rb', line 160 def total_sum sum=0 size1.times {|i| size2.times {|j| sum+=self[i,j] } } sum end |