Операторы отношения служат для поэлементного сравнения двух операндов, в качестве которых могут выступать числа, векторы или матрицы. При этом сравниваемые векторы или матрицы должны иметь одинаковые размеры. Если операнды одинаковы, то программа возвращает 1 (True – Истина), в противном случае–0 (False – Ложь). Перечень операторов отношения с соответствующими им функциями представлен в таблице 4.1.
Таблица 4.1. Операторы отношения и их функции
Оператор
Название
Функция
==
Равно
Eq
~=
Не равно
Ne
<
Меньше
Lt
>
Больше
Gt
<=
Меньше или равно
Le
>=
Больше или равно
Ge
Операторы = = и ~= сравнивают действительные и комплексные переменные. При этом сравниваются действительные и комплексные части числа.
Операторы <, <=, >, >= при сравнении комплексных чисел сравнивают только действительные части числа.
Примеры приведены в табл. 4.2.
Таблица 4.2. Примеры использования операторов отношения
Выражение
Функция
Результат
>> 3==3
>> eq(3,3)
ans =
>>5~=5
>> ne(5,5)
ans =
>> 4+2i==4+i
>> eq(4+2i,4+i)
ans =
>> 7.2<8.3
>> lt(7.2,8.3)
ans =
>>1.4+5i<1.5+i
>> lt(1.4+5i,1.5+i)
ans =
>> 3<=2.33
>> le(3,2.33)
ans =
Если при вычислениях надо формально определить, является ли переменная x комплексной, можно вызвать функцию isreal(x), возвращающую 1 если x не является комплексной и 0 в противном случае.
В выражениях, вводимых в командном окне системы MATLAB, операторы отношения могут использоваться наряду с арифметическими операторами. Рассмотрим пример вычисления выражения, содержащего операторы отношения:
>> a=1;b=-1;c=2;
>> (a>=c)+(b==a)+(c>a)
ans =
Здесь значения выражений (a >= c) и (b == a) равны 0 (Ложь), значение выражения (c > a) равно 1 (Истина). В результате переменная ans, являющаяся суммой значений этих трех выражений, оказывается равной 1.
Операции отношения имеют более низкий приоритет, чем арифметические операции. Но в этом примере переменная ans равна сумме значений трех операций отношения только потому, что эти операции заключены в круглые скобки. Если же скобки опустить, результат будет иным:
>> a>=c+b==a+c>a
ans =
При поэлементном сравнении двух массивов одинаковых размеров с помощью операторов отношения результат будет представлен в виде массива того же размера, состоящего из нулей и единиц.
Пример:
>> A=[1 0;-2 3]
A =
1 0
-2 3
>> B=[2 3;-3 2]
B =
2 3
-3 2
>> A>B
ans =
0 0
1 1
В операторах отношения допустимо сравнение массива и числа. В этом случае происходит сравнение каждого элемента массива с числом. Результатом является массив того же размера, что и исходный.
Пример:
>> A=[1 0;-2 3];b=0.5;
>> A>b
ans =
1 0
0 1
Логические операторы предназначены для выполнения поэлементных логических операций над массивами одинаковых размеров. Логические операторы и соответствующие им функции приведены в табл. 4.3.
Таблица 4.3. Логические операторы и их функции
Оператор
Название
Функция
&
Логическое И
And
|
Логическое ИЛИ
Or
Отсутствует
Исключающее ИЛИ
Xor
~
Логическое НЕ
Not
Первые три операции являются двухоперандными (бинарными), а операция < Не > является унарной (однооперандной).
При выполнении логических операций «истинными» считаются операнды, не равные нулю, а «ложными» – операнды, равные нулю. При этом результатом операции < И > будет 1, если оба операнда не равны нулю, и 0, если хотя бы один из операндов нулевой. Операция < ИЛИ > дает 1, если хотя бы один операнд не равен нулю. Операция < исключающее ИЛИ > выдает 1 лишь тогда, когда один из операндов равен нулю, а другой не равен, в остальных случаях она выдает 0. Операция < НЕ > выдает 1, если ее единственный операнд равен нулю, и 0 в противном случае.
Примеры использования логических операторов:
>> A=[1 0;-2 3];B=[2 3;-3 2];
>> and(A,B) или >> A&B
ans =
1 0
1 1
>> or(A,B) или >> A|B
ans =
1 1
1 1
>> xor(A,B)
ans =
0 1
0 0
>> not(A) или >> ~A
ans =
0 1
0 0
Элементами логических операторов могут быть массив и число. В этом случае происходит поэлементное выполнение логической операции для каждого элемента массива и числа. Результатом является массив того же размера, что и исходный.
Пример:
>> A=[1 0;-2 3];b=3;
>> xor(A,b)
ans =
0 1
0 0
Поскольку логические и арифметические операции могут входить в одно выражение, порядок выполнения этих операций зависит от их приоритета. Выполнение операций одинакового приоритета происходит в порядке слева направо. Приоритет операций можно изменить с помощью круглых скобок.
Приоритеты операций системы MATLAB в порядке убывания приведены ниже:
1. Круглые скобки <( )>.
2. Транспонирование <.'>, транспонирование с комплексным сопряжением<'>, возведение в степень <^>, поэлементное возведение в степень <.^>.
4. Умножение и деление (в том числе поэлементное) <*>, </>, <\>, <.*>, <./>, <.\>.
5. Сложение <+> и вычитание <–>.
6. Операции отношения <, <=, >, >=, ==, ~=.
7. Логическое И <&>.
8. Логическое ИЛИ <|>.
Отметим, что сначала выполняются операции над аргументами функций eq, ne, lt, gt, le, ge, and, or, not, если использовать их вместо соответствующих им операторов. Например, два выражения and(A,B)+F и A&B+F не эквивалентны.