Манипуляции с матрицами

Ввод матрицы

Основным типом данных в 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