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])
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
ruby一维数组转二维数组 The following article is part of a series.For more articles in this series, seeCloning the Game 2048 in Ruby.For the complete and final code,see the gist. 以下文章是系列文章的一部分。 有关本系列中的更多文...
Ruby生成随机元素('a'...'z').to_a.shuffle[0..7].join => "eynaxzsk" ('a'...'z') => Range 对象 to_a 方法 => 将Range 对象转换为数组。 shuffle方法 => 随机排列 join方法 => join 将数组转换为字符串
ruby将数据库中的数据处理后,返回一个数组。现需要将数组(二维)写入.txt文件,这样在用其它语言(例如:MATLAB或C)进行处理矩阵处理时方便读取。问题是如何将ruby中的数据以标准和直观地模型写入txt,经过多次试验后发现将得到的数组每一行的元素以字符串的形式连接返回给一个变量,再用ruby中写入文件的方式将该赋值后的变量写入文件,再借助循环语句,则可实现想要的结果。 webo...
矩阵A和B都是两行两列,矩阵相乘时,A的行元素乘以B的列元素,然后相加。即 202+51=45作为C11(矩阵C的第一行第一列) 201+54=40作为C12(矩阵C的第一行第二列) 152+101=40作为C21(矩阵C的第二行第一列) 151+104=55作为C22(矩阵C的第二行第二列)
一般矩阵乘法算法: 原理:矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的栏数(column)和第二个矩阵的列数(row)相同时才有定义。一般单指矩阵乘积时,指的便是一般矩阵乘积。若A为m×n矩阵,B为n×p矩阵,则他们的乘积AB会是一个m×p矩阵。其乘积矩阵的元素如下面式子得出: 代码如下: struct mat{ int n, m; double da...