ruby通过将矩阵中的各行存入数组中来实现对矩阵的操作,其中矩阵中的每一行也被视为一个数组即ruby将矩阵构建为元素为数组的数组,各个元素的维数一定要相等。在ruby中需要利用两个索引来引用矩阵中的某个元素,接下来将展现出ruby创建矩阵的操作:
1. [ ](行),利用行创建矩阵
require 'matrix'
matrix = Matrix[[1, 2, 3, 4], [4, 5, 6, 7]]
# 1 2 3 4
# 4 5 6 7
matrix[0, 0] # 1
matrix[1, 2] # 6
2. build(行数, 列数 = 行数)创建矩阵
matrix = Matrix.build(2) { |row, col| 2 * 3 } # Matrix[[6, 6], [6, 6]]
# 6 6
# 6 6
matrix = Matrix.build(2, 3) { |row, col| 2 * 3 } # Matrix[[6, 6, 6], [6, 6, 6]]
# 6 6 6
# 6 6 6
3. 通过行或列方式创建矩阵
matrix = Matrix.columns([[1, 2, 3, 4], [4, 5, 6, 7]])
# 1 4
# 2 5
# 3 6
# 4 7
matrix = Matrix.rows([[1, 2, 3, 4], [4, 5, 6, 7]])
# 1 2 3 4
# 4 5 6 7
4. diagonal(对角线元素),创建对角矩阵
matrix = Matrix,diagonal(1, 2, 3, 4)
# 1 0 0 0
# 0 2 0 0
# 0 0 3 0
# 0 0 0 4
5. 创建行向量
matrix_row = Matrix.row_vector([1, 2, 3, 4])
# 1 2 3 4
6. 创建列向量
matrix_column = Matrix.column_vector([1, 2, 3, 4])
# 1
# 2
# 3
# 4
7. 创建单位矩阵
matrix = Matrix.identity(4) # 也可以用unit(4)
# 1 0 0 0
# 0 1 0 0
# 0 0 1 0
# 0 0 0 1
8. 创建对角矩阵(其中对角线为相同值)
matrix = Matrix.scalar(2, 2)
# 2 0
# 0 2
9. 创建0矩阵
matrix = Matrix.zero(2)
# 0 0
# 0 0