Ключевым объектом во всех вычислительных алгоритмах MATLAB является матрица и частный случай матрицы – вектор. Как уже несколько раз упоминалось, синтаксис определения вектора очень простой – внутри квадратных скобок определяются начальное значение вектора, шаг изменения, конечное значение. При этом шаг изменения указывать не обязательно – по умолчанию он считается равным единице. Шаг изменения может быть даже отрицательным, и тогда начальное значение должно быть меньше конечного. Обратите внимание, что практически во всех языках программирования для определения вектора используется цикл, причём счётчик цикла может принимать только целочисленные значения, и для формирования некоторых векторов приходится писать сложные алгоритмы. В MATLAB формирование любого вектора занимает одну строчку программного кода. Один элемент вектора от другого в случае прямого их указания можно отделять или запятой или пробелом. В качестве элементов вектора могут выступать и комплексные числа, но генерировать комплексные векторы при помощи оператора двоеточия не получится. В приведенном ниже примере обратите внимание на последнее введенное выражение – попытка генерировать комплексный вектор привела к сообщению об ошибке, и в результате был получен вещественный вектор, а мнимая часть комплексного числа была просто проигнорирована.


Пример 25.
Простейшие способы определения векторов в MATLAB
1 >> a=[1 2 3 4 5]
2 1 2 3 4 5
3 >> a=[1.5]
4 a =
5 1 2 3 4 5
6 >> a=[1..25:2]
7 a =
8 1.0000 1.2500 1.5000 1.7500 2.0000
9 >> a=[20:2.1]
10 a =
11 20 18 16 14 12 10 8 6 4 2
12 >> a=[2+2i:1.4+2i]
13 Warning: Colon operands must be real scalars.
14 a =
15 2 3 4

По умолчанию все векторы становятся вектор-строками. Для преобразования их в вектор-столбец необходимо использовать операцию транспонирования. Благодаря тому, что массивы являются основой программирования MATLAB, транспонирование реализовано простым символом – апострофом. Определение его сразу после имени вектора приводит к преобразованию вектор-строки в вектор-столбец и наоборот. Для обращения к отдельному элементу вектора после его имени в круглых скобках нужно поставить номер элемента. Подобным же образом можно изменять значения отдельных элементов вектора.


Пример 26.
Обращение к элементам вектора
1 >> a=[1 4 9 16 25]
2 a =
3 1 4 9 16 25
4 >> a
5 ans =
6 1
7 4
8 9
9 16
10 25
11 >> a(2)
12 ans =
13 4
14 >> a(2.4)=0
15 a =
16 1 0 0 0 25

Подобным образом в MATLAB генерируются и матрицы. Стоит только обратить внимание на то, что матрицы состоят из векторов. Матрицы задаются по строкам. Одна строка от другой отделяется символом точки с запятой.


Пример 27.
Создание матриц в MATLAB
1 >> A=[11 22 33; 21 22 23; 31 32 33]
2 A =
3 11 22 33
4 21 22 23
5 31 32 33
6 >> A(1.2,2.3)=0
7 A =
8 11 0 0
9 21 0 0
10 31 32 33
11 >> A(3,3)
12 ans =
13 33
Таблица 7. Наиболее важные функции для создания матриц стандартного вида
Название Значение
zeros Матрица, заполненная нулями
ones Матрица, все элементы которой равны единице
eye Единичная матрица
rand Матрица, заполненная случайными числами

В MATLAB существует большое число функций для генерации стандартных матриц. Любую функцию из этой таблицы можно вызвать как с одним аргументом, например zeros(n), так и с двумя – zeros(n,m). В первом случае будет создана квадратная матрица размерности n, во втором случае – прямоугольная матрица из n строк и m столбцов. Часто оказывается полезной функция diag(a), создающая диагональную матрицу, на главной диагонали которой расположены соответствующие элементы ветора a.