Engee 文档
Notebook

矩阵的基本运算

矩阵是由按行和列排列的元素组成的二维矩形数组。元素可以是数字、逻辑值(真或假)、日期和时间、字符串、分类值或其他类型的数据。

矩阵定义

使用方括号 [] 可以创建矩阵,方法是事先将所需元素括入方括号中。

In [ ]:
Pkg.add(["LinearAlgebra"])
In [ ]:
A = [1 2 3] # создание матрицы в виде вектор-строки
Out[0]:
1×3 Matrix{Int64}:
 1  2  3

只有一列的矩阵将显示为另一种数据类型--向量:

In [ ]:
A = [1, 2, 3]
Out[0]:
3-element Vector{Int64}:
 1
 2
 3

创建规则矩形矩阵的方法是定义行,并用分号分隔:

In [ ]:
A = [1 2 3 4; 5 6 7 8]
Out[0]:
2×4 Matrix{Int64}:
 1  2  3  4
 5  6  7  8

有许多函数可以帮助您创建具有特定元素值或特定结构的矩阵。例如,函数 zerosones 可以创建全为 0 或 1 的矩阵。这些函数的第一和第二个参数是矩阵的行数和列数:

In [ ]:
A = zeros(3, 3) # определение матрицы с нулями
Out[0]:
3×3 Matrix{Float64}:
 0.0  0.0  0.0
 0.0  0.0  0.0
 0.0  0.0  0.0
In [ ]:
A = ones(3, 3) # определение матрицы с единицами
Out[0]:
3×3 Matrix{Float64}:
 1.0  1.0  1.0
 1.0  1.0  1.0
 1.0  1.0  1.0

线性代数库中的函数对角线**会将输入元素放在数组的对角线上:

In [ ]:
using LinearAlgebra
A = [12, 62, 93, -8]
B = Diagonal(A)
Out[0]:
4×4 Diagonal{Int64, Vector{Int64}}:
 12   ⋅   ⋅   ⋅
  ⋅  62   ⋅   ⋅
  ⋅   ⋅  93   ⋅
  ⋅   ⋅   ⋅  -8

使用convert函数将矩阵 B 从对角线类型转换为矩阵{Float64}数据类型

In [ ]:
B = convert(Matrix{Float64}, B)
Out[0]:
4×4 Matrix{Float64}:
 12.0   0.0   0.0   0.0
  0.0  62.0   0.0   0.0
  0.0   0.0  93.0   0.0
  0.0   0.0   0.0  -8.0

矩阵联合

矩阵可使用方括号 [ ] 水平合并:

In [ ]:
A = [1 2; 3 4; 5 6; 7 8]
C = [A B]
Out[0]:
4×6 Matrix{Float64}:
 1.0  2.0  12.0   0.0   0.0   0.0
 3.0  4.0   0.0  62.0   0.0   0.0
 5.0  6.0   0.0   0.0  93.0   0.0
 7.0  8.0   0.0   0.0   0.0  -8.0

同样,矩阵也可以通过指定分号进行垂直组合(必须是同一维度):

In [ ]:
A = ones(1,4)
B = zeros(1,4)
D = [A; B]
Out[0]:
2×4 Matrix{Float64}:
 1.0  1.0  1.0  1.0
 0.0  0.0  0.0  0.0

可以使用 vcathcat 等特殊函数进行合并:

In [ ]:
C = hcat(A, B)
Out[0]:
1×8 Matrix{Float64}:
 1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0
In [ ]:
D = vcat(A, B)
Out[0]:
2×4 Matrix{Float64}:
 1.0  1.0  1.0  1.0
 0.0  0.0  0.0  0.0

生成数字序列

使用 collect 函数,您可以生成一个向量形式的数字序列:

In [ ]:
E = collect(-10:5:10) # collect(Начало:Интервал:Конец) 
Out[0]:
5-element Vector{Int64}:
 -10
  -5
   0
   5
  10

改变矩阵的形状

要改变矩阵的尺寸,可以使用reshape函数。

In [ ]:
A = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20] # определяем матрицу, исходный размер 4 на 5
Out[0]:
4×5 Matrix{Int64}:
  1   2   3   4   5
  6   7   8   9  10
 11  12  13  14  15
 16  17  18  19  20

将矩阵转换为矢量字符串:

In [ ]:
reshape(A, (1, 20)) 
Out[0]:
1×20 Matrix{Int64}:
 1  6  11  16  2  7  12  17  3  8  13  18  4  9  14  19  5  10  15  20

将矩阵转换为向量列

In [ ]:
reshape(A, (20, 1)) 
Out[0]:
20×1 Matrix{Int64}:
  1
  6
 11
 16
  2
  7
 12
 17
  3
  8
 13
 18
  4
  9
 14
 19
  5
 10
 15
 20

如果用冒号指定矩阵维数之一,reshape 将返回指定行数或列数的矩阵:

In [ ]:
reshape(A, (1, :)) 
Out[0]:
1×20 Matrix{Int64}:
 1  6  11  16  2  7  12  17  3  8  13  18  4  9  14  19  5  10  15  20