lib/matrix_extensions.rb in matrix_extensions-0.0.1 vs lib/matrix_extensions.rb in matrix_extensions-0.0.2
- old
+ new
@@ -1,39 +1,29 @@
require "matrix_extensions/version"
require 'matrix'
# An extension to the Ruby Matrix class.
# @author Michael Imstepf
-class MatrixExtended < Matrix
- # Converts a Matrix to an MatrixExtended.
- # @param m [Matrix] matrix
- # @return [MatrixExtended] matrix
- # @raise [TypeError] if matrices are not of type Matrix
- def self.convert_to_matrix_extended(m)
- raise TypeError, "#{m.class} is not a Matrix" unless m.is_a?(Matrix)
-
- self.columns(m.column_vectors)
- end
-
+class Matrix
# Matrix prefilled with zeros.
- # @param m [MatrixExtended] matrix
- # @return [MatrixExtended] matrix
+ # @param m [Matrix] matrix
+ # @return [Matrix] matrix
def self.zeros(rows = 1, columns = 1)
- MatrixExtended.build(rows, columns) { 0 }
+ Matrix.build(rows, columns) { 0 }
end
self.singleton_class.send(:alias_method, :zeroes, :zeros)
# Matrix prefilled with ones.
- # @param m [MatrixExtended] matrix
- # @return [MatrixExtended] matrix
+ # @param m [Matrix] matrix
+ # @return [Matrix] matrix
def self.ones(rows = 1, columns = 1)
- MatrixExtended.build(rows, columns) { 1 }
+ Matrix.build(rows, columns) { 1 }
end
# Concatenates two matrices horizontally (resulting in more columns).
- # @param *matrices [MatrixExtended] matrices
- # @return [MatrixExtended] concatenated matrix
+ # @param *matrices [Matrix] matrices
+ # @return [Matrix] concatenated matrix
# @raise [ErrDimensionMismatch] if dimensions don't match
# @raise [TypeError] if matrices are not of type Matrix or Vector
def self.hconcat(*matrices)
columns = []
matrices.each do |m|
@@ -55,12 +45,12 @@
# create new matrix
self.columns(columns)
end
# Concatenates two matrices vertically (resulting in more rows).
- # @param *matrices [MatrixExtended] matrices
- # @return [MatrixExtended] concatenated matrix
+ # @param *matrices [Matrix] matrices
+ # @return [Matrix] concatenated matrix
# @raise [ErrDimensionMismatch] if dimensions don't match
# @raise [TypeError] if matrices are not of type Matrix or Vector
def self.vconcat(*matrices)
rows = []
matrices.each do |m|
@@ -82,12 +72,12 @@
# create new matrix
self.rows(rows)
end
# Element-wise division.
- # @param m [MatrixExtended] matrix
- # @return [MatrixExtended] matrix
+ # @param m [Matrix] matrix
+ # @return [Matrix] matrix
# @raise [ErrDimensionMismatch] if dimensions don't match
def element_division(m)
case m
when Numeric
return self./ m
@@ -113,12 +103,12 @@
end
new_matrix rows, column_count
end
# Element-wise multiplication.
- # @param m [MatrixExtended] matrix
- # @return [MatrixExtended] matrix
+ # @param m [Matrix] matrix
+ # @return [Matrix] matrix
# @raise [ErrDimensionMismatch] if dimensions don't match
def element_multiplication(m)
case m
when Numeric
return self.* m
@@ -144,12 +134,12 @@
end
new_matrix rows, column_count
end
# Element-wise exponentiation.
- # @param m [MatrixExtended] matrix
- # @return [MatrixExtended] matrix
+ # @param m [Matrix] matrix
+ # @return [Matrix] matrix
# @raise [ErrDimensionMismatch] if dimensions don't match
def element_exponentiation(m)
case m
when Numeric
# self.** m will break
@@ -183,10 +173,10 @@
private
# Convert vector to matrix for arithmetic operations.
# @param vector [Vector] vector
# @param dimension [Symbol] :row or :column
- # @return [MatrixExtended] matrix
+ # @return [Matrix] matrix
# @raise [TypeError] if vector ist not of type Vector
def self.convert_vector_to_matrix(v, dimension)
raise TypeError, "#{v.class} is not a Vector" unless v.is_a? Vector
if dimension == :row
\ No newline at end of file