aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/matrix.rb18
-rw-r--r--test/matrix/test_matrix.rb4
-rw-r--r--test/matrix/test_vector.rb4
3 files changed, 26 insertions, 0 deletions
diff --git a/lib/matrix.rb b/lib/matrix.rb
index c6efa5d91a..8c22d2b208 100644
--- a/lib/matrix.rb
+++ b/lib/matrix.rb
@@ -1381,6 +1381,13 @@ class Matrix
end
#
+ # Explicit conversion to a Matrix. Returns self
+ #
+ def to_matrix
+ self
+ end
+
+ #
# Returns an array of arrays that describe the rows of the matrix.
#
def to_a
@@ -1494,6 +1501,10 @@ class Matrix
def self.coerce_to_int(obj)
coerce_to(obj, Integer, :to_int)
end
+
+ def self.coerce_to_matrix(obj)
+ coerce_to(obj, Matrix, :to_matrix)
+ end
end
include CoercionHelper
@@ -2039,6 +2050,13 @@ class Vector
@elements.dup
end
+ #
+ # Return a single-column matrix from this vector
+ #
+ def to_matrix
+ Matrix.column_vector(self)
+ end
+
def elements_to_f
warn "#{caller(1, 1)[0]}: warning: Vector#elements_to_f is deprecated"
map(&:to_f)
diff --git a/test/matrix/test_matrix.rb b/test/matrix/test_matrix.rb
index 425ec25a52..0831ac6362 100644
--- a/test/matrix/test_matrix.rb
+++ b/test/matrix/test_matrix.rb
@@ -218,6 +218,10 @@ class TestMatrix < Test::Unit::TestCase
assert_equal([[1], [1]], m2.to_a)
end
+ def test_to_matrix
+ assert @m1.equal? @m1.to_matrix
+ end
+
def test_columns
assert_equal(@m1, Matrix.columns([[1, 4], [2, 5], [3, 6]]))
end
diff --git a/test/matrix/test_vector.rb b/test/matrix/test_vector.rb
index 687706b5e9..52785120b1 100644
--- a/test/matrix/test_vector.rb
+++ b/test/matrix/test_vector.rb
@@ -177,6 +177,10 @@ class TestVector < Test::Unit::TestCase
assert_equal("Vector[1, 2, 3]", @v1.to_s)
end
+ def test_to_matrix
+ assert_equal Matrix[[1], [2], [3]], @v1.to_matrix
+ end
+
def test_inspect
assert_equal("Vector[1, 2, 3]", @v1.inspect)
end