Манипуляции с матрицами
Ввод матрицы
Основным типом данных в MATLAB является матрица. Элементы матрицы записываются в квадратных скобках. Элементы в строке разделяются запятыми или пробелами:
a = [1 2 3]
a = [1, 2, 3]
Для ввода матрицы-столбца элементы необходимо разделять точками с запятой
a = [1; 2; 3]
Прямоугольная или квадратная матрица вводится построчно
a = [1 2 3; 4 5 6]
Каждую строку матрицы для наглядности можно начинать в коде скрипта или функции с новой строки:
a = [1 2 3;
4 5 6]
Создание последовательностей
Оператор : формирует матрицу-строку от начального значения до конечного значения с заданным шагом:
>> a = 1:0.5:3.9
a =
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000
Функция linspace разбивает интервал, заданный своими границами на заданное количество точек
>> a = linspace(1,3.9,4)
a =
1.0000 1.9667 2.9333 3.9000
Специальные матрицы
Матрица единиц:
>> ones(3,2)
ans =
1 1
1 1
1 1
При вызове функции с одним аргументом, результатом является квадратная матрица
>> ones(3)
ans =
1 1 1
1 1 1
1 1 1
Матрица нулей
>> zeros(3,2)
ans =
0 0
0 0
0 0
>> zeros(3)
ans =
0 0 0
0 0 0
0 0 0
Единичная матрица
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
Объединение матриц
Склейка строк (слева направо)
>> a = [1 2 3];
>> b = [3 5 5];
>> c = [a b]
c =
1 2 3 3 5 5
~~
То же самое делает функция **cat**. Склеиваем матрицы по второму измерению (склеиваем столбцы - "клей наносим справа/слева")
~~~matlab
>> cat(2, a, b)
ans =
1 2 3 3 5 5
Склеиваем матрицы по второму измерению (склеиваем столбцы - “клей наносим снизу/сверху”)
>> cat(1, a, b)
ans =
1 2 3
3 5 5
Изменение формы матрицы
>> a = [1 2 3;
4 5 6;
7 8 9;
10 1 12]
a =
1 2 3
4 5 6
7 8 9
10 1 12
Превратить матрицу a в матрицу 2 x 6. Указываем только первую размерность, второй размер вычисляется на основе количества элементов в исходной матрице:
>> a = reshape(a, 2, [])
a =
1 7 2 8 3 9
4 10 5 1 6 12
Можно указать только второй размер новой матрицы. В этом случае первый размер определится автоматически:
>> a = reshape(a, [], 2)
a =
1 8
4 1
7 3
10 6
2 9
5 12
Можно явно указать обе размерности
>> a = reshape(a, 3, 4)
a =
1 10 8 6
4 2 1 9
7 5 3 12
Операция транспонирования матрицы выполняется при помощи оператора ‘ (одинарная кавычка)
>> a'
ans =
1 4 7
10 2 5
8 1 3
6 9 12
или при помощи функции transpose
>> transpose(a)
ans =
1 4 7
10 2 5
8 1 3
6 9 12
Копирование матриц
Дана матрица-столбец
>> a = [1; 2];
Используем функцию repmat: повторяем столбец 5 раз вдоль второго измерения и 1 раз (т.е. ничего не меняем) по первой размерности:
>> repmat(a, 1, 5)
ans =
1 1 1 1 1
2 2 2 2 2
Можно сделать копии по двум размерностям
>> b = repmat(a, 2, 5)
b =
1 1 1 1 1
2 2 2 2 2
1 1 1 1 1
2 2 2 2 2