类 Matrix 以 0 为底。我想使用以 1 为底的矩阵元素或矩阵中的一行,同时仍保留现有方法的功能。我怎样才能做到这一点?
问问题
77 次
2 回答
2
可能使用Matrix#each
和Enumerator#with_index
require 'matrix'
m = Matrix[ [1,2], [3,4] ].each
m.with_index(1){|e,ind| puts "#{e} at #{ind}" }
# >> 1 at 1
# >> 2 at 2
# >> 3 at 3
# >> 4 at 4
您也可以使用Vector
class 和执行此操作Matrix#row_vectors
:
require 'matrix'
m = Matrix[ [1,2], [3,4] ]
r_v = m.row_vectors().each
r_v.with_index(1){|e,r| p "#{e.to_a} at row #{r}"}
# >> "[1, 2] at row 1"
# >> "[3, 4] at row 2"
于 2013-09-22T15:36:52.000 回答
1
覆盖Matrix#[]
。
require "matrix"
class Matrix
def [](i, j)
@rows.fetch(i - 1){return nil}[j - 1]
end
end
Matrix[[25, 93], [-1, 66]][1, 2] # => 93
于 2013-09-22T16:41:25.077 回答