Арифметические операторы и функции
Арифметические операторы являются самыми распространенными и известными. В отличие от большинства языков программирования в системе MATLAB практически все операторы являются матричными, т. е. предназначены для выполнения операций над матрицами. В табл. 8.1 приводится список арифметических операторов и синтаксис их применения.
Таблица 8.1. Арифметические операторы и функции MATLAB
Функция | Название Оператор | Синтаксис | |
Plus | Плюс + | М1+М2 | |
Uplus | Унарный плюс + | +М | |
Minus | Минус | М1-М2 | |
Uminus | Унарный минус | -М | |
Mtimes | Матричное умножение * | М1*М2 | |
Times | Поэлементное умножение массивов .* | А1*А2 | |
Mpower | Возведение матрицы в степень | М1^х | |
Power | Поэлементное возведение массива в степень | А1^х | |
Mldivide | Обратное (справа налево) деление матриц \ | M1\M2 | |
Mrdivide | Деление матриц слева направо / | М1/М2 | |
Ldivide | Поэлементное деление массивов справа налево . \ | А1.\А2 | |
Rdivide | Поэлементное деление массивов слева направо . / | А1 . /А2 | |
Kron | Тензорное умножение Кронекера kron | kron(X.Y) | |
>> m1=[2 6 3; 5 8 -3]
m1 =
2 6 3
5 8 -3
>> m2=[7 6 10; -5 6 -5]
m2 =
7 6 10
-5 6 -5
>> m2-m1
ans =
5 0 7
-10 -2 -2
>> minus(m2,m1)
ans =
5 0 7 // результат одинаковый
-10 -2 -2
Обратите внимание на то, что каждый оператор имеет аналогичную по назначению функцию. Например, оператору матричного умножения * соответствует функция mtimes(Ml,M2). Примеры применения арифметических операторов уже не раз приводились, так что ограничимся несколькими дополнительными примерами:
Соответствие функций операторам и командам в системе MATLAB является одним из основных положений программирования. Оно позволяет одновременно использовать элементы как операторного, так и функционального программирования.
Следует отметить, что в математических выражениях операторы имеют определенный приоритет исполнения. Например, в MATLAB приоритет логических операторов выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки. Степень вложения скобок не ограничивается.
Операторы отношения и их функции
Операторы отношения служат для сравнения двух величин, векторов или матриц. Все операторы отношения имеют два операнда, например х и у, и записываются, как показано в табл. 8.2.
Таблица 8.2. Операторы и функции отношения
Функция | Название | Оператор | Пример |
Eq | Равно | = = | x = = y |
Ne | He равно | ~ = | x ~ = y |
Lt | Меньше чем | < | x<y |
Gt | Больше чем | > | x>y |
Le | Меньше или равно | <= | x<=y |
Ge | Больше или равно | >= | x>=y |
Данные операторы выполняют поэлементное сравнение векторов или матриц одинакового размера и возвращают значение 1 (True), если элементы идентичны, и значение 0 (False) в противном случае. Если операнды — действительные числа, то применение операторов отношения тривиально:
» eq(2,2)
ans =
» 2==2
ans =
» ne(l,2)
ans =
» 2 ~- 2
ans =
» 5 > 3
ans =
» le(5.3)
ans =
Логические операторы
Логические операторы и соответствующие им функции служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов (табл. 8.3).
Таблица 8.3. Логические операторы и функции MATLAB
Функция | Название |
And | Логическое И (AND) & |
Or | Логическое ИЛИ (OR) | |
Not | Логическое НЕ (NOT) ~ |
Хог | Исключающее ИЛИ (EXCLUSIVE OR) |
Any | Верно, если все элементы вектора равны нулю |
All | Верно, если все элементы вектора не равны нулю |
Работа операторов поясняется приведенными ниже примерами:
»А=[1 2 3];
»В=[1 0 0];
» and(A.B)
ans =
1 0 0
» оr(А.В)
ans =
1 1 1
» А&В
ans =
1 0 0
» А|В
ans=
1 1 1
» not(А)
ans =
0 0 0
» not(B)
ans =
0 1 1
» ~B
ans=
0 1 1
» xor(A.B)
ans =
0 1 1
» any(A)
ans =
» all([0 0 0])
ans =
» all(B)
ans =
» and('abc','012')
ans =
1 1 1
Обратите внимание, что аргументами логических операторов могут быть числа и строки. При аргументах-числах логический нуль соответствует числовому нулю, а любое отличное от нуля число воспринимается как логическая единица. Для строк действует уже отмеченное правило — каждый символ строки представляется своим ASCII-кодом.