Базовые операции с матрицами
Матрица - это двумерный прямоугольный массив элементов, расположенных в строках и столбцах. Элементами могут быть числа, логические значения (true или false), дата и время, строки, категориальные значения или какой-либо другой тип данных.
Определение матриц
Матрицу можно создать с помощью квадратных скобок [], заранее заключив в них необходимые элементы.
A = [1 2 3] # создание матрицы в виде вектор-строки
1×3 Matrix{Int64}:
1 2 3
Матрица с одним столбцом будет отображена как другой тип данных - вектор:
A = [1, 2, 3]
3-element Vector{Int64}:
1
2
3
Создание обычной, прямоугольной матрицы, производится с помощью определения строк и их разделения с помощью знака точки с запятой:
A = [1 2 3 4; 5 6 7 8]
2×4 Matrix{Int64}:
1 2 3 4
5 6 7 8
Есть множество функций, которые помогают создавать матрицы с определенными значениями элементов или определенной структурой. Например, функции zeros и ones создают матрицы из всех нулей или единиц. Первым и вторым аргументами этих функций являются количество строк и количество столбцов матрицы:
A = zeros(3, 3) # определение матрицы с нулями
3×3 Matrix{Float64}:
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
A = ones(3, 3) # определение матрицы с единицами
3×3 Matrix{Float64}:
1.0 1.0 1.0
1.0 1.0 1.0
1.0 1.0 1.0
Функция Diagonal, библиотеки LinearAlgebra размещает входные элементы на диагонали массива:
using LinearAlgebra
A = [12, 62, 93, -8]
B = Diagonal(A)
4×4 Diagonal{Int64, Vector{Int64}}:
12 ⋅ ⋅ ⋅
⋅ 62 ⋅ ⋅
⋅ ⋅ 93 ⋅
⋅ ⋅ ⋅ -8
С помощью функции convert преобразуем матрицу B из типа Diagonal в тип данных Matrix{Float64}
B = convert(Matrix{Float64}, B)
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
Объединение матриц
Матрицы можно объединять по горизонтали используя квадратные скобки [ ]:
A = [1 2; 3 4; 5 6; 7 8]
C = [A B]
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
Аналогичным образом матрицы можно объединять по вертикали (должны быть одной размерности) указав точку с запятой:
A = ones(1,4)
B = zeros(1,4)
D = [A; B]
2×4 Matrix{Float64}:
1.0 1.0 1.0 1.0
0.0 0.0 0.0 0.0
Для объединения можно использовать специальные функции, такие как vcat и hcat:
C = hcat(A, B)
1×8 Matrix{Float64}:
1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0
D = vcat(A, B)
2×4 Matrix{Float64}:
1.0 1.0 1.0 1.0
0.0 0.0 0.0 0.0
Генерация числовых последовательностей
С помощью функции collect можно сгенерировать числовую последовательность в виде вектора:
E = collect(-10:5:10) # collect(Начало:Интервал:Конец)
5-element Vector{Int64}:
-10
-5
0
5
10
Изменение формы матрицы
Для того чтобы изменить размерность матрицы можно воспользоваться функцией reshape.
A = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20] # определяем матрицу, исходный размер 4 на 5
4×5 Matrix{Int64}:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
Преобразуем матрицу в вектор-строку:
reshape(A, (1, 20))
1×20 Matrix{Int64}:
1 6 11 16 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20
Преобразуем матрицу в вектор-столбец:
reshape(A, (20, 1))
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 вернёт матрицу с указанным количеством строк или столбцов:
reshape(A, (1, :))
1×20 Matrix{Int64}:
1 6 11 16 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20