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