В первой части мы познакомились с основами работы в Matlab. О том как умножать/делить, вычитать и складывать матрици. Поняли, что в матлабе все есть матрица.
В этой части рассмотрим функции для работы с элементами матриц.
Первое, что приходит в голову когда речь заходит о матрицах — диагонали.
На работе с диагоналями построена существенная часть современной математики матриц. Это неотъемлемая и незаменимая часть матриц.
У матриц есть главная диагональ. Часто нужно её либо задать, либо изменить, либо получить её и вывести в отдельную переменную. Делаеться это при помощи функции diag:
>> v = [1 2 3]
v =
1 2 3
>> x = diag(v)
x =
1 0 0
0 2 0
0 0 3
>> diag(x)
ans =
1
2
3
Как видите указав в качестве параметра вектор получим матрицу с элементами вектора на главной диагонали, указав матрицу получим вектор из элементов главной диагонали.
Также можно работать и с другими диоганалями, указывая номер в качестве второго параметра:
>> x = [1 2 3; 4 5 6; 7 8 9]
x =
1 2 3
4 5 6
7 8 9
>> diag(x,2)
ans =
3
>> diag(x,1)
ans =
2
6
>> diag(x,-1)
ans =
4
8
Диагонали нумеруются вот так:
Вращение (поворот) матрицы
Для поворота матрици предусмотрена функция rot90:
>> x = [1 2 3; 4 5 6; 7 8 9]
x =
1 2 3
4 5 6
7 8 9
>> y = rot90(x)
y =
3 6 9
2 5 8
1 4 7
>> y = rot90(x,-1)
y =
7 4 1
8 5 2
9 6 3
>> y = rot90(x,-2)
y =
9 8 7
6 5 4
3 2 1
>> y = rot90(x,1)
y =
3 6 9
2 5 8
1 4 7
Матрица была повернут k раз (второй параметр) против часовой стрелки. По часовой — если k Преобразование размеров матриц
Иногда нужно преобразовать матрицу в массив или в другую матрицу. Для этого нужна функция reshape.
Преобразование матрицы 3х4 в матрицу 2х6:
>> x = [1 2 3 4; 5 6 7 8; 9 10 11 12]
x =
1 2 3 4
5 6 7 8
9 10 11 12
>> reshape(x,2,[])
ans =
1 9 6 3 11 8
5 2 10 7 4 12
>> reshape(x,1,[]) % преобразование в массив (матрицу 1х12)
ans =
1 5 9 2 6 10 3 7 11 4 8 12
Вычисление количества линейно независимых строк в матрице
Тоже очень простая и полезная функция Matlab:
>> rank(x)
ans =
2
Вычисление определителя (детерминанта) матрицы
Для вычисления необходимо чтобы матрица была квадратной.
>> x = [1 2 3; 4 5 6; 7 8 9]
x =
1 2 3
4 5 6
7 8 9
>> det(x)
ans =
0
Сумма диагональных элементов
Также находиться в одну строку.
>> trace(x)
ans =
15
Альтернативным способом нахождения может быть такая конструкция:
sum(diag(x))
ans =
15
Создание матриц
Создавать матрицы нужно часто. И задача эта разнится только вариантами заполнения полученной матрицы.
Матрицу заполненную нулями можно получить при помощи функции zeros.
>> zeros(3)
ans =
0 0 0
0 0 0
0 0 0
>> zeros(2,3)
ans =
0 0 0
0 0 0
Матрицу единиц получаем так:
>> ones(3)
ans =
1 1 1
1 1 1
1 1 1
>> ones(2,3)
ans =
1 1 1
1 1 1
Единичная матрица:
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
>> eye(2,3)
ans =
1 0 0
0 1 0
Матрица случайных чисел:
>> rand(3)
ans =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
>> rand(2,3)
ans =
0.9649 0.9706 0.4854
0.1576 0.9572 0.8003
Матрица Адамара:
>> hadamard(4)
ans =
1 1 1 1
1 -1 1 -1
1 1 -1 -1
1 -1 -1 1
Матрица Паскаля:
>> pascal(3)
ans =
1 1 1
1 2 3
1 3 6
Магическая матрица:
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
На этом пока остановимся.







