Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаИПлб.doc
Скачиваний:
39
Добавлен:
08.05.2019
Размер:
6.96 Mб
Скачать

3.2. Логические выражения

Логические выражения строятся на основе логических функций (табл. 1.5), операций отношения (сравнения) и логических операций (табл. 1.6).

Таблица 1.5

Функция

Описание

and(x,y)

логическое И (конъюнкция)

or(x,y)

логическое ИЛИ (дизъюнкция)

xor(x,y)

логическое или НЕ(возвращает значение истина, когда аргументы разные)

not(x)

логическое НЕ (инверсия)

Операндами логического выражения могут быть как числовые, так и символьные данные.

Таблица 1.6

Знак операции

Операция

Пример

~

Логическое отрицание

~ -10

ans =

0

==

Проверка на равенство

>> 100==1e2

ans =

1

~=

Проверка на неравенство

>> 'A'~='a'

ans =

1

>

Проверка на "больше"

>> 'w'>'W'

ans =

1

>=

Проверка на "больше или равно"

>> sqrt(5)>=2

ans =

1

<

Проверка на "меньше"

>> cos(2*pi/3)<0

ans =

1

<=

Проверка на "меньше или равно"

>> abs(1+2j)<=1

ans =

0

&

Логическое умножение

>> 10 & 0

ans =

0

|

Логическое сложение

>> 10 | 0

ans =

1

При выполнении логических операций действует следующее соглашение: ненулевые значения рассматриваются как истина (true), а нулевые как ложь (false). Для символьных данных в качестве значения используется порядковый номер символа в кодовой таблице. Результатом вычисления логического выражения является 0 (ложь, false) или 1 (истина, true). Причем это значения логического типа! Логические операторы & и | учитывают оба операнда для вычисления результата. В ряде случаев значение логического выражения определяется значением только первого операнда. Например, если первый операнд логического умножения равен false, то результат всегда будет false и незачем вычислять значение второго операнда. Операторы && и || отличаются тем, что они в подобных ситуациях не проверяют значение второго операнда.

3.3. Порядок вычисления выражений

Порядок вычисления скалярных выражений соответствует правилам, общепринятым в математике (табл. 1.7).

Таблица 1.7

Приоритет

Знак операции

Операция

1

not and or xor и др.

Вычисление функций

2

~

Отрицание

3

+ - ^ '

Знак плюс или минус перед числом, возведение в степень, транспонирование

4

* / \

Умножение, деления

5

+ -

Сложение, вычитание

6

== ~= > >= < <=

Операции отношения (сравнения)

7

&

Логическое умножение

8

|

Логическое сложение

9

&&

Сокращенное логическое умножение

10

||

Сокращенное логическое сложение

Сначала вычисляются функции, потом выполняются однооперандные операции, затем – арифметические операции: сначала типа "умножение", потом типа "сложение", затем выполняются операции отношения и в последнюю очередь – двухоперандные логические операции & и |.

Пример

>> 2*-3^2+-7

ans =

-25

Выражение вычисляется следующим образом: 3 возводится в квадрат, полученное значение 9 берется с минусом (унарный минус) и умножается на 2, получается значение -18, которое затем складывается с числом -7. Для изменения порядка выполнения операций следует использовать круглые скобки. Например

>> 2*(-3)^2+-7

ans =

11

Операции одного приоритета выполняются слева направо

>> 2^3^2

ans =

64

>> (2^3)^2

ans =

64

Примечание: 1. В более ранних версиях Matlab некоторые операции имели другой приоритет. Например, & и | были одного приоритета. В Matlab7 у операции & приоритет выше, чем у |.

2. Поскольку сначала выполняются операции над аргументами функций, то выражения, одинаковые в математике, являются не эквивалентными в Matlab! Например, and(c,d)+w и c&d+w дают разные результаты при с=false, а d и w=true.

Рекомендация: если есть сомнения в порядке вычисления выражения – ставьте скобки. Это тот случай, когда "кашу маслом не испортишь".

Полный перечень символов операций и дублирующих их функций, сгруппированных по назначению, можно просмотреть на экране, дав в командной строке команду help ops.