Feature #10445 » implement_matrix.rb.patch
| lib/matrix.rb | ||
|---|---|---|
|
# * Matrix.vstack(*matrices)
|
||
|
#
|
||
|
# To access Matrix elements/columns/rows/submatrices/properties:
|
||
|
# * #[](i, j)
|
||
|
# * #[](row_arg, col_arg)
|
||
|
# * #row_count (row_size)
|
||
|
# * #column_count (column_size)
|
||
|
# * #row(i)
|
||
| ... | ... | |
|
private :new_matrix
|
||
|
#
|
||
|
# Returns element (+i+,+j+) of the matrix. That is: row +i+, column +j+.
|
||
|
# :call-seq:
|
||
|
# matrix[row, column] -> obj or nil
|
||
|
# matrix[row, col_range] -> new_vector or nil
|
||
|
# matrix[row_range, column] -> new_vector or nil
|
||
|
# matrix[row_range, col_range] -> new_matrix or nil
|
||
|
#
|
||
|
# Matrix.diagonal(9, 5, -3)[1, 1]
|
||
|
# => 5
|
||
|
#
|
||
|
# Matrix.diagonal(9, 5, -3)[1, 0..1]
|
||
|
# => Vector[0, 5]
|
||
|
#
|
||
|
# Matrix.diagonal(9, 5, -3)[0..1, 0]
|
||
|
# => Vector[9, 0]
|
||
|
#
|
||
|
# Matrix.diagonal(9, 5, -3)[0..1, 0..1]
|
||
|
# => Matrix[[9, 0], [0, 5]]
|
||
|
#
|
||
|
# Like Array#[], negative indices count backward from the end of the
|
||
|
# row or column (-1 is the last element).
|
||
|
#
|
||
|
def [](i, j)
|
||
|
@rows.fetch(i){return nil}[j]
|
||
|
def [](row_arg, col_arg)
|
||
|
if row_arg.is_a?(Range)
|
||
|
if col_arg.is_a?(Range)
|
||
|
minor(row_arg, col_arg)
|
||
|
else
|
||
|
return unless col_vector = column(col_arg)
|
||
|
col_vector[row_arg]
|
||
|
end
|
||
|
else
|
||
|
if col_arg.is_a?(Range)
|
||
|
return unless row_vector = row(row_arg)
|
||
|
row_vector[col_arg]
|
||
|
else
|
||
|
@rows.fetch(row_arg){return nil}[col_arg]
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
alias element []
|
||
|
alias component []
|
||