И другие программы этой серии
Следует отметить, что операторы <, <=, > и >= при комплексных операндах
используют для сравнения только действительные части операндов – мнимые от
брасываются. В то же время операторы == и ~= ведут сравнение с учетом как дей
ствительной, так и мнимой частей операндов, например:
>> (2+3i)>=(2+i)
ans = 1
>> (2+3i)>(2+i)
ans = 0
>> abs(2+3i)>abs(2+i)
ans = 1
>> (2+3i)==(2+i)
ans = 0
>> (2+3i)~=(2+i)
ans = 1
В этом случае символы, входящие в выражения, представляются своими ASCII
кодами. Строки воспринимаются как векторы, содержащие значения кодов. Все это
надо учитывать при использовании управляющих структур языка программирова
ния, в которых широко применяются операторы отношения (см. урок 11).
3.1.3. Логические операции и операторы
Логические операторы и соответствующие им функции служат для реализации
поэлементных логических операций над элементами одинаковых по размеру мас
сивов (табл. 3.3). Они широко используются в управляющих структурах про
грамм (см. урок 11) и составляют основу логического программирования.
Таблица 3.3. Логические операторы и функции MATLAB
Функция
And
Or
Not
Xor
Any
All
Название
Обозначение
Если один из операндов – скаляр, происходит сравнение всех элементов вто
рого операнда массива со значением этого скаляра:
M=
-1
1
>> M>=0
ans =
0
1
0
2
Логическое И (AND)
&
Логическое ИЛИ (OR)
|
Логическое НЕ (NOT)
~
Исключающее ИЛИ (EXCLUSIVE OR)
Верно, если все элементы вектора равны нулю
Верно, если все элементы вектора не равны нулю
Работа операторов поясняется приведенными ниже примерами:
>> A=[1 2 3];
>> B=[1 0 0];
>> and(A,B)
ans = 1
>> or(A,B)
ans = 1
>> A&B
ans = 1
>> A|B
ans = 1
>> not(A)
ans = 0
>> not(B)
ans = 0
>> ~B
ans = 0
>> xor(A,B)
ans = 0
>> any(A)
ans = 1
>> all([0 0 0])
ans = 0
>> all(B)
ans = 0
1
1
0
1
0
1
0
1
1
1
0
1
0
1
0
1
1
1
В общем случае операторы отношения сравнивают два массива одного размера
и выдают результат в виде массива того же размера:
>> M>[0 1; 1 0]
ans =
0
0
0
1
Таким образом, спектр применения операторов отношения в системе MATLAB
шире, чем в обычных языках программирования, поскольку операндами являют
ся не только числа, но и векторы, матрицы и массивы.