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

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

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

Linearalgebra库的Diagonal函数将输入元素放置在数组的对角线上:

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从Diagonal类型转换为矩阵{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