Арифметические операторы наиболее распространены и известны. Каждый оператор имеет аналогичную по назначению функцию. Так оператору матричного умножения «*» соответствует функция mtimes(Ml, M2). Примеры применения арифметических операторов приводились ранее. В табл. 3.1 представлен список арифметических операторов и их синтаксис.
Таблица 3.1
Функция |
Название и символ обозначения оператора |
Синтак-сис |
Функция |
Название и символ обозначения оператора |
Синтак-сис |
Plus |
Плюс + |
М1 + М2 |
Minus |
Минус – |
М1 – М2 |
Uplus |
Унарный плюс + |
+М |
Uminus |
Унарный минус – |
–М |
Mtimes |
Матричное умножение * |
М1*М2 |
Times |
Поэлементное умножение массивов .* |
А1.*А2 |
Mpower |
Возведение матрицы в степень ^ |
М1^х |
Power |
Поэлементное возведение массива в степень .^ |
А1.^х |
Mrdivide |
Деление матриц слева направо / |
М1/М2 |
Rdivide |
Поэлементное деление массивов слева направо ./ |
А1./А2 |
Mldivide |
Обратное (справа налево) деление матриц \ |
M1\M2 |
Ldivide |
Поэлементное деление массивов справа налево .\ |
А1.\А2 |
Kron |
Тензорное умножение Кронекера kron |
kron(X, Y) |
|
|
|
В системе Matlab одним из основных положений программирования является соответствие функций операторам и командам, позволяющее одновременно использовать элементы как операторного, так и функционального программирования. В математических выражениях имеется приоритет исполнения. В Matlab приоритет логических операторов выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки. Степень вложения скобок не ограничивается.
Три функции перемножают элементы матриц (примеры в табл. 3.2):
prod(A) возвращает произведение элементов массива, если А – вектор, или вектор-строку, содержащую произведения элементов каждого столбца, если А – матрица; prod (A, dim) возвращает матрицу (массив размерности два) с произведением элементов массива А по столбцам (dim = 1), по строкам (dim = 2), по иным размерностям в зависимости от значения скаляра dim;
cumprod(A) возвращает произведение с накоплением. Если А – вектор, то cumprod(A) возвращает вектор, содержащий произведения с накоплением элементов вектора А. Если А – матрица, то cumprod(A) возвращает матрицу того же размера, что и А, содержащую произведения с накоплением для каждого столбца матрицы А (первая строка – без изменений, во второй строке – произведение первых двух элементов каждого столбца, в третьей строке – элементы второй строки матрицы-результата умножаются на элементы третьей строки матрицы входного аргумента по столбцам и т. д.); cumprod(A, dim) возвращает произведение с накоплением элементов по строкам или столбцам
матрицы в зависимости от значения скаляра dim;
Таблица 3.2
Матрица |
Операция |
Матрица |
Операция |
»A = [1234; 2457; 6] A = 1234 2457 6 |
»B = prod(A) B = 18191628 |
»A = [1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 |
»В = cumprod(A) B = 1 2 3 4 10 18 28 80 162 |
cross(U, V) возвращает векторное произведение векторов U и V в трехмерном пространстве, т. е. W = U V (U и V – обязательно векторы с тремя элементами); cross(U, V, dim) возвращает векторное произведение U и V по размерности, определенной скаляром dim. Здесь U и V – многомерные массивы, которые должны иметь одну и ту же размерность, причем размер векторов в каждой размерности size(U, dim) и size(V, dim) должен быть равен 3.
Определены следующие функции суммирования элементов массивов (примеры в табл. 3.3):
sum(A) возвращает сумму элементов массива, если А – вектор, или вектор-строку, содержащую сумму элементов каждого столбца, если А – матрица; sum(A, dim) – сумму элементов массива по столбцам (dim = 1), строкам (dim = 2) или иным размерностям в зависимости от значения скаляра dim;
Таблица 3.3
Матрица |
Операция |
Матрица |
Операция |
»A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 |
»B = sum(A) B = 34 34 34 34 |
»A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 |
»В = cumsum(A,1) B = 16 2 3 13 21 13 13 21 30 20 19 33 34 34 34 34 |
cumsum(A) выполняет суммирование с накоплением. Если А – вектор, то cumsum(A) возвращает вектор, содержащий результаты суммирования с накоплением элементов вектора А. Если А – матрица, то cumsum(A) возвращает матрицу того же размера, что и А, содержащую суммирование с накоплением для каждого столбца матрицы А; cumsum(A, dim) выполняет суммирование с накоплением элементов по размерности, определенной скаляром dim. Например, cumsum(A, 1) выполняет суммирование по столбцам.
Над массивами можно выполнять операции отношения для сравнения двух величин, векторов или матриц одинакового размера:
A < B , A <= B , A > B , A >= B (только для действительных частей), A = = B, A ~ =B (равно/не равно – для действительных и мнимых частей), которые порождают массив с единицами (истина) и нулями (ложь) той же размерности. Все операторы отношения имеют 2 операнда, например x и y, и записываются, как показано в табл. 3.4. Примеры использования даны в табл. 3.5.
Таблица 3.4
Функция |
Название |
Оператор |
Пример |
Eq |
Равно |
= = |
x = = y |
Ne |
He равно |
~ = |
x ~ = y |
Lt |
Меньше чем |
< |
x < y |
Gt |
Больше чем |
> |
x > y |
Le |
Меньше или равно |
<= |
x <= y |
Ge |
Больше или равно |
>= |
x >= y |
Таблица 3.5
Дано |
Равно |
He равно |
Больше |
Меньше |
Больше или равно |
Меньше или равно |
|
»d = [4 3] d = 4 3 |
»f = [2 3] f = 2 3 |
»d = = f ans = 0 1 |
»d ~ = f ans = 1 0 |
»d > f ans = 1 0 |
»d < f ans = 0 0 |
»d >= f ans = 1 1 |
»d <= f ans = 0 1 |
Если один из операндов – скаляр, происходит сравнение всех элементов второго операнда-массива со значением этого скаляра.
Аналогично реализуются и логические операции. Логические операторы и соответствующие им функции (табл. 3.6) служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов: отрицания ~A, конъюнкции (И) A&B, дизъюнкции (ИЛИ) A|B и т. д. Аргументами логических операторов могут быть числа и строки. Если аргумент – число, логический нуль соответствует числовому нулю, а любое отличное от нуля число – логической единице. Для строк действует правило – каждый символ строки представляется своим ASCII-кодом.
Таблица 3.6
Функция |
Название |
And |
Логическое И (AND) & |
Or |
Логическое ИЛИ (OR) | |
Not |
Логическое НЕ (NOT) ~ |
Хоr |
Исключающее ИЛИ (EXCLUSIVE OR) |
Any |
Верно, если не все элементы вектора равны нулю |
All |
Верно, если все элементы вектора не равны нулю |
Таблица 3.7
Дано |
Логическое И |
Логическое ИЛИ |
Логическое НЕ (NOT) |
»d = [1 1 1] d = 1 1 1 »f = [0 0 1] f = 0 0 1 |
»d & f ans = 0 0 1 |
» df ans = 1 1 1 |
»~f ans = 1 1 0 |
Исключающее ИЛИ |
Верно, если не все элементы вектора равны нулю |
Верно, если все элементы вектора не равны нулю |
|
»xor(d,f) ans = 1 1 0 |
»any(f) ans = 1 |
»all(f) ans = 0 |
Примеры использования логических операций приведены в табл. 3.7.
Системные переменные и константы устанавливаются системой при ее загрузке или автоматически формируются в процессе вычислений. Некоторые
из них приведены в табл. 3.8.
Таблица 3.8